我目前正在开展概念验证项目,在该项目中,我需要使用 Stripe 的 Connect 直接收费功能在付款时对连接的帐户进行收费。我对支付网关没有太多经验,但我设法在我的 Stripe 帐户和应用程序之间建立连接并成功收到付款。然而,我很难实现直充功能。
我已遵循this文档,其中我使用 Stripe 托管的页面向客户收费。但是,当我单击应该将我带到托管页面的按钮时,没有任何反应,并且我的解决方案上出现空白屏幕。
这是一项无法正常工作并给我带来空白屏幕的直接收费。
var options = new Stripe.Checkout.SessionCreateOptions
{
LineItems = new List<Stripe.Checkout.SessionLineItemOptions>
{
new Stripe.Checkout.SessionLineItemOptions
{
PriceData = new Stripe.Checkout.SessionLineItemPriceDataOptions
{
Currency = "gbp",
ProductData = new Stripe.Checkout.SessionLineItemPriceDataProductDataOptions
{
Name = "T-shirt",
},
UnitAmount = 1000,
},
Quantity = 1,
},
},
PaymentIntentData = new Stripe.Checkout.SessionPaymentIntentDataOptions
{
ApplicationFeeAmount = 123,
},
Mode = "payment",
SuccessUrl = "https://example.com/success?session_id={CHECKOUT_SESSION_ID}",
};
var requestOptions = new RequestOptions
{
StripeAccount = "ACCOUNTID",
};
var service = new Stripe.Checkout.SessionService();
service.Create(options, requestOptions);
return new StatusCodeResult(303);
我的这段代码运行完美,没有任何问题。带我进入 Stripe 托管的支付页面
public IActionResult CheckOut(ProductViewModel product)
{
var domain = "http://localhost:5184/";
var options = new Stripe.Checkout.SessionCreateOptions
{
SuccessUrl = domain + $"CheckOut/Confirm",
CancelUrl = domain + $"CheckOut/Cancel",
LineItems = new List<Stripe.Checkout.SessionLineItemOptions>
{
new Stripe.Checkout.SessionLineItemOptions
{
PriceData = new Stripe.Checkout.SessionLineItemPriceDataOptions
{
Currency = "gbp",
ProductData = new Stripe.Checkout.SessionLineItemPriceDataProductDataOptions
{
Name = "T-shirt",
},
UnitAmount = 1000,
},
Quantity = 1,
},
},
Mode = "payment"
};
var service = new Stripe.Checkout.SessionService();
Stripe.Checkout.Session session = service.Create(options);
Response.Headers.Add("Location", session.Url);
return new StatusCodeResult(303);
}
我找到了解决方案。我需要在代码末尾添加。
Response.Headers.Add("位置", session.Url);