我已经在Xamarin iO上使用Stripe.net设置了付款。 我收集卡数据并使用PaymentIntent确认付款。 (PaymentIntent是由服务器创建的,我只是确认一下。)
工作正常,除非使用3DSecure卡。 我应该打开一个URL,以便用户可以执行3DSecure检查,但是next_action中得到的只是一个空白URL。
编辑:请参见下面的tedtedzodiac答案:
在PaymentIntent中添加return_url参数会将其更改为手动身份验证模式,这使我们能够在next_action对象中获取url
目前这已经足够好了,但是最好有一个视图,如果需要的话可以自动触发3DSecure弹出窗口,就像在iO中一样。
还有另一种执行付款的方式,该付款会自动触发xamarin.ios中的3DSecure弹出窗口吗?
这是我创建PaymentIntent的方式:
PaymentIntentConfirmOptions optionsConfirm = new PaymentIntentConfirmOptions
{
PaymentMethodId = _paymentMethod.Id,
ClientSecret = intentSecret.client_secret
};
PaymentIntentService paymentIntentService = new PaymentIntentService();
PaymentIntent intent = paymentIntentService.Confirm(intentSecret.id, optionsConfirm);
该意图返回以下对象:
{<Stripe.PaymentIntent@782394758 id=pi_XXXXXXXXXXXXXXXXXX> JSON: {
"id": "pi_XXXXXXXXXXXXXXXXXX",
"object": "payment_intent",
"amount": 5000,
"amount_capturable": null,
"amount_received": null,
"application": null,
"application_fee_amount": null,
"canceled_at": null,
"cancellation_reason": null,
"capture_method": "automatic",
"charges": null,
"client_secret": "pi_XXXXXXXXXXXXXXXXXX",
"confirmation_method": "automatic",
"created": 1567605523,
"currency": "eur",
"customer": null,
"description": null,
"invoice": null,
"last_payment_error": null,
"livemode": false,
"metadata": null,
"next_action": {
"redirect_to_url": null,
"type": "use_stripe_sdk"
},
"on_behalf_of": null,
"payment_method": "pm_XXXXXXXXXXXXXXXXXX",
"payment_method_options": null,
"payment_method_types": [
"card"
],
"receipt_email": null,
"review": null,
"setup_future_usage": null,
"shipping": null,
"source": null,
"statement_descriptor": null,
"statement_descriptor_suffix": null,
"status": "requires_action",
"transfer_data": null,
"transfer_group": null,
"allowed_source_types": null
}}
谢谢您的帮助!
答案 0 :(得分:0)
当您看到"next_action": { "type": "use_stripe_sdk" }
时,可以预期null
字段将有一个redirect_to_url
值。 type
的{{1}}值告诉您应该use Stripe.js,而不需要重定向到另一个URL进行认证。
如果您是handling authentication manually,则只会看到"use_stripe_sdk"
的值。