Stripe 为同一客户创建多张卡片

Posted

技术标签:

【中文标题】Stripe 为同一客户创建多张卡片【英文标题】:Stripe creating multiple cards for same customer 【发布时间】:2021-01-31 15:10:15 【问题描述】:

我是 Stripe 的新手。我在 .NET 中使用 Stripe 实现了一个卡支付系统。

我的代码如下:

var options = new SessionCreateOptions

  PaymentMethodTypes = new List<string>  "card", ,
  LineItems = new List<SessionLineItemOptions> 
    new SessionLineItemOptions 
      PriceData = new SessionLineItemPriceDataOptions 
        UnitAmount = productPrice,      // in cents
        Currency = currency,
        ProductData = new SessionLineItemPriceDataProductDataOptions 
          Name = productName
        ,
      ,
      Quantity = 1,
    ,
  ,
  Mode = "payment",
  PaymentIntentData = new SessionPaymentIntentDataOptions
  
    ReceiptEmail = customerEmail,
    Description = productName
  ,
  SuccessUrl = domain + "/Home/PaymentSuccess?session_id=CHECKOUT_SESSION_ID",
  CancelUrl = domain + "/Home/PaymentCancel",
  Customer = customerId // From database
;

var service = new SessionService();
Session session = service.Create(options);
jsonToReturn = Json(new  id = session.Id );

正如你在上面看到的,我传递了我存储在数据库中的 CustomerId。

问题是每个付款客户输入同一张卡 4242 4242 4242 4242 并具有相同的有效期 12/20 和 CVV 123,但是当在仪表板上看到时,Stripe 正在创建多张卡为同一客户。

另外,我可以传递一个支付方式ID(卡ID保存在Stripe中用于过去结帐),这样客户就不需要输入卡详细信息,可以直接选择过去结帐时使用的卡吗?

【问题讨论】:

【参考方案1】:

Stripe 目前不会为您删除重复的卡片。如果有人使用同一张卡连续多次支付,他们将被创建为预期的重复。原因是卡的详细信息可能不同,例如账单地址不同或更完整、到期日不同、CVC 或地址检查结果不同等。

在 API 中,Stripe 显示一个 fingerprint property,它可用于唯一标识同一帐户上的给定卡号。这个想法是,如果我用 4242424242424242 支付两次,这两张卡将存在于您的帐户中,并具有不同的pm_12345 id,但它们都将具有完全相同的指纹,这可以帮助您检测重复项,例如清理这些卡。

现在,Stripe Checkout 还不允许您预先填写或预先选择现有卡。这意味着现在您无法控制卡片的保存方式以及是否重新使用之前使用过的卡片。这个想法是保存卡,以便您可以在自己的支付页面中让客户来订购更多产品,或者例如定期向他们收费。如果您不这样做,最好的选择可能是分离将来不会重复使用的 PaymentMethods。

【讨论】:

以上是关于Stripe 为同一客户创建多张卡片的主要内容,如果未能解决你的问题,请参考以下文章

如何展示 Stripe 客户的卡片列表?

如何在 IOS 中使用 STRIPE API 创建 STRIPE 客户?

Stripe——confirmCardPayment 后,如何将新卡附加给客户?

条纹支付:来源与令牌/卡?

Stripe 让多个客户使用相同的电子邮件地址

Stripe-向客户付款