我正在ASP Net网站上运行Stripe测试付款。当用户准备付款时,他们将被转发到其网关以收集卡详细信息。
完成付款后,它们会返回到我在{URL_URL}旁边通过{SESSION_ID}变量设置的成功URL,即www.example.com/success?session_id{Session_ID}。
然后我先获取会话来处理付款
StripeConfiguration.ApiKey = "sk_test_123";
var service = new SessionService();
Checkout.Session sess service.Get("cs_test_4561");
然后,我使用用户签出时保存并传递的会话ID从数据库中找到付款。
我担心的是,通过Web嗅探器工具可以获取会话ID,然后您可以将其手动传递给successURL。
我可以将HTTPS添加到站点,但是我还能做些其他事情来使此操作变得更困难吗,例如,在一段时间后使Session ID过期或从Strip取值以确认付款成功吗?
编辑1:
我在后面设置SessionCreateOptions的代码
var options = new SessionCreateOptions
{
PaymentMethodTypes = new List<string> { "card", },
LineItems = GetItems(),
SuccessUrl = "www.example.com/success?session_id={CHECKOUT_SESSION_ID}",
CancelUrl = "www.example.com/cancel",
PaymentIntentData = new SessionPaymentIntentDataOptions
{
Metadata = new Dictionary<string, string>{
{"orderID","123"}
}
},
Mode="payment",
};
var service = new SessionService();
Session session = service.Create(options);
当用户返回到成功页面时,我运行此代码以获取会话,我运行上述代码以获取会话,但如果我键入sess.PaymentIntent,则payment_intent为空
答案 0 :(得分:1)
当您通过其id
检索CheckoutSession时,应检查其payment_intent
以验证其显示为status: succeeded
。这表明付款没有问题。
此处有关整个过程的更多详细信息: https://stripe.com/docs/payments/checkout/fulfillment