在 Stripe 中创建支付方式

Create a payment method in stripe

提问人:Neel Mani 提问时间:11/14/2023 最后编辑:Neel Mani 更新时间:11/14/2023 访问量:50

问:

我希望在 stripe 中创建一个付款方式,并使用 java -spring boot 将其附加到现有客户。 条纹文档

共享使用卡创建付款方式的示例代码。 代码是


PaymentMethodCreateParams params =
  PaymentMethodCreateParams.builder()
    .setType(PaymentMethodCreateParams.Type.CARD)
    .setCard(
      PaymentMethodCreateParams.Card.builder()
        .setNumber("4242424242424242")
        .setExpMonth(8L)
        .setExpYear(2026L)
        .setCvc("314")
        .build()
    )
    .build();
PaymentMethod paymentMethod = PaymentMethod.create(params);

但是在运行此代码时,我们得到了响应

{
  "error": {
    "message": "Sending credit card numbers directly to the Stripe API is generally unsafe. We suggest you use test tokens that map to the test card you are using, see https://stripe.com/docs/testing. To enable raw card data APIs in test mode, see https://support.stripe.com/questions/enabling-access-to-raw-card-data-apis.",
    "request_log_url": "https://dashboard.stripe.com/test/logs/req_9c6QitRqUgqM1i?t=1699942446",
    "type": "invalid_request_error"
  }
}

进一步阅读后,我了解到我们需要使用 stripe.js 在前端接受卡详细信息并获取卡令牌,我们将将其传递给服务器端

我的问题是,在从客户那里获得令牌后,我如何从中创建付款方式并将其附加到现有客户。在这方面的任何帮助将不胜感激。

java spring-boot stripe-payments 付款方式

评论

0赞 yuting 11/14/2023
作为 PCI 合规性的一部分,只有在您完成 SAQ-D 后,您的系统才被允许传递原始卡详细信息。如果您不这样做,我建议您使用 stripe.js 使用付款元素收集付款方式详细信息,并在此处提供指南。设置 Intent 流程将创建付款方式并附加到现有客户。
0赞 Neel Mani 11/14/2023
谢谢。但是,您的意思是首先使用前端的 Payment Element 收集付款方式详细信息,然后在服务器端创建设置意图流。或者两者都是单独的路径。?

答:

0赞 Lucky2501 11/14/2023 #1

我的问题是,在从客户那里获得令牌后,我如何从中创建付款方式并将其附加到现有客户。

我真的不明白这个问题,令牌和支付方式在这里真的不是不同的对象,但我理解这种混淆。

值得一提的是,Stripe 确实有一个函数,您可以在前端调用以创建支付方式
现在,如果我没记错的话,你仍然不能用它对卡片细节进行硬编码,它会要求你改用 Elements,但它并不真正相关,因为这个函数真的不会在非常具体的用例之外使用。

原因是收集付款方式不仅仅是收集卡详细信息,您还需要执行其他步骤(即身份验证)来授权您的应用程序稍后从保存的卡中扣款。这是此函数不执行的操作,因此除非您稍后有一些逻辑来执行这些操作,否则不应使用它。

如果您想收集付款方式以备将来使用,并且上述文档不相关,则有两种选择:
- 保存付款方式而不付款 - 使用设置 Intent
成功确认后,这将自动为您创建付款方式。如果你向它添加一个,它也会自动将其附加到它们。
customer

- 使用付款意向保存付款方式。
同样的逻辑也适用于这里,只是流中也有电荷。

这些是您应该使用的方法,而不是创建付款方式,因为它们将自动执行允许您以后使用付款方式所需的任何其他步骤。

评论

0赞 Neel Mani 11/14/2023
谢谢你的回答。这很有帮助。但我仍然有疑问。通过设置意图文档,我所理解的是,创建结帐会话 - >检索会话 - >检索设置意图 - >检索付款方式。现在,您可以将此付款方式与现有客户附加,也可以选择在开始时创建提供客户 ID 的会话。但是我没有找到任何需要获取卡详细信息或任何此类信息的地方。我的意思是生成了付款方式,但没有记录有关如何付款的信息......
0赞 Lucky2501 11/14/2023
Stripe Checkout 集成是一个由 Stripe 托管的页面,您可以将客户重定向到该页面,客户在其中填写表单并保存他们的卡。如果您使用的是 Elements,则可以在页面上自行加载付款方式字段:stripe.com/docs/payments/...关于您提到的付款,稍后向卡收费记录在这里,因为它不打算使用 Stripe Checkout 执行(尽管您可以,但它只是违背了目的):stripe.com/docs/payments/......