如何在Xamarin.iOs上使用PaymentIntent触发3DSecure?

时间:2019-09-04 14:07:35

标签: c# xamarin.ios stripe-payments

我已经在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
}}

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

当您看到"next_action": { "type": "use_stripe_sdk" }时,可以预期null字段将有一个redirect_to_url值。 type的{​​{1}}值告诉您应该use Stripe.js,而不需要重定向到另一个URL进行认证。

如果您是handling authentication manually,则只会看到"use_stripe_sdk"的值。