如何通过客户 ID 使用 Stripe 收费

Posted

技术标签:

【中文标题】如何通过客户 ID 使用 Stripe 收费【英文标题】:How to charge with Stripe by customer id 【发布时间】:2021-12-30 05:18:41 【问题描述】:

当可以通过卡详细信息向用户收费时,我有流程,为此我正在使用 await stripe.createPaymentMethod。付款成功后,我稍后可以通过卡和付款信息以及客户 ID“cus__idvalue”获取该用户购买的详细信息。

 const  error, paymentMethod  = await stripe.createPaymentMethod(
      type: "card",
      card: elements.getElement(CardNumberElement),
      card: elements.getElement(CardExpiryElement),
      card: elements.getElement(CardCvcElement),
    );

我的问题是如何通过以前使用的卡向同一用户收费,而不让他选择再次输入他的卡数据。我已经阅读了有关该案例的 Stripe 文档,但还没有清楚地了解哪些方法可能会有所帮助。提前感谢任何帮助!

【问题讨论】:

【参考方案1】:

您可以做的功能受到条带 API 提供的功能的限制,我怀疑 API 是否允许根据以前的交易预先输入卡详细信息,除非您将卡详细信息存储在您的站点数据库中,这是一种安全性缺陷。

一些卡处理商可以允许这样做,所以如果允许,请从条带确认,在这种情况下,您可以允许用户将卡详细信息存储在您网站上的用户帐户中,因此只有当用户登录时预存的卡详细信息可用于交易。

【讨论】:

【参考方案2】:

PaymentMethods 仅在附加到客户时才能重复使用。要检索给定客户的所有 PaymentMethods,您可以使用带有客户 ID 参数的 listPaymentMethods 端点,然后使用 PaymentMethod ID 创建一个新的 PaymentIntent,如下所示:

const paymentIntent = await stripe.paymentIntents.create(
  amount: 2000,
  currency: "usd",
  payment_method: “REPLACE_WITH_PAYMENT_METHOD_ID”,
  confirm: true,
);

【讨论】:

以上是关于如何通过客户 ID 使用 Stripe 收费的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Stripe 直接收费生成申请费发票?

Stripe - 支付订单错误:无法向没有活动卡的客户收费

使用 iOS Stripe SDK 进行未来支付

如何向用户添加卡并使用 Stripe 对其进行收费?

使用 Stripe 创建订阅时,第一个月自动收费

Stripe 可以同时向客户对象收费和转账吗?