如何在客户端检索付款方式?

时间:2019-07-12 09:32:13

标签: c# angular stripe-payments

我们正在分别使用Stripe Elements和Stripe.NET运行带有Angular / Typescript前端和.NET后端的应用程序。

我们当前正在使用“来源” API。

前端可以创建源,后端将它们保存到我们的特定用户。当您再次打开前端时,后端将发送源ID列表。然后,前端就可以直接从Stripe收集显示这些来源所需的数据,以便用户可以选择自己保存的来源之一进行支付,而不必再次输入所有数据。

输入“付款方式/希望付款的API”。

由于欧盟法规的要求,Stripe提供了一个新的API,该API要求我们不再以“来源”而是“ PaymentMethod”的身份来创建卡片。因此,我实现了该功能,在后端中,在我的IDE中打开了前端,更新了@ types / stripe-v3程序包,并找到了新的付款意图API。

唯一缺少的东西:一旦创建,我就无法弄清楚前端如何访问付款方式数据。我可以创建它。将其发送到后端。后端可以检索它。将ID发回前端...现在呢?如何显示可用的付款方式?

我本来期望stripe.retrievePaymentMethod(),因为有stripe.retrieveSource()。但是没有这种运气。

我当前看到的向用户提供现有付款方式列表的唯一选择是在后端获取此信息,并将其按类,按属性逐个传递给客户端。基本上,将每个数据类条带复制到我们自己的后端REST定义中。那不对。

我想念什么?为什么前端没有stripe.retrievePaymentMethod()?我不了解有关这些API应该做什么的一些基本事实吗?

4 个答案:

答案 0 :(得分:4)

直接与Stripe联系后,确认情况就是这样:

  

我认为这只是我们没有添加的疏忽。

     

移动SDK中有类似的功能,所以我不明白为什么我们不应该拥有它

目前还没有立即计划在不久的将来重新添加功能的计划, 因此,作为一种解决方法,我将通过后端传输所有数据。

答案 1 :(得分:0)

我已经使用DotNet和angular实现了类似于ccAvenue的支付网关,在我的情况下,我将数据发送到服务器,并且尝试从服务器重定向到支付网关,但是API返回了一些结果,并且结果无法重定向。

因此,我创建了一个带有实现的Web表单,将我的应用重定向到Web表单页面,从那里我称为ccAvenue页面,在响应URL中,我仅发送了Webform的响应页面,并保存了响应我重定向到我的角度应用程序。

答案 2 :(得分:0)

如果我也了解的话,我认为您的问题就在后面,并按顺序列出。希望对您有帮助。

enter image description here

答案 3 :(得分:0)

如果您要处理3D安全卡并仍支持SEPA之类的其他方法,则可以采用以下解决方法。

您可以将已确认的PaymentIntent(付款方式)或Source都附加到Customer对象上。 在您的前端,您可以同时实现(对于3Dsecure卡来说,带有客户机密的StripeElements)和对于SEPA而言,都可以实现IBAN元素。

我可以提供我的代码示例,如何将付款意图保存给客户。它在 PHP 中,但是对于其他语言,逻辑应该相同。

假设我们的客户已经确认了PaymentIntent,并且我们拥有它的ID:

$intent = \Stripe\PaymentIntent::retrieve($stripe_intent_id);
$payment_method = \Stripe\PaymentMethod::retrieve($intent->payment_method);
$stripe_customer = Stripe\Customer::create([
      'payment_method' => $intent->payment_method,
]);

如果您已经创建了Customer对象,则可以使用Attach方法:

$payment_method->attach(['customer' => 'cus_FTkGe4lv5LfyI0']);

然后您就可以使用Customer对象PaymentMethod Source进行充电;

我没有尝试将这两种方法都附加到同一客户对象上(我们只允许客户同时具有一种付款方式),但是应该可以。让我知道它是否对您有用。