【问题标题】:Stripe creating multiple cards for same customerStripe 为同一客户创建多张卡片
【发布时间】: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中用于过去结帐),这样客户就不需要输入卡详细信息,可以直接选择过去结帐时使用的卡吗?

【问题讨论】:

    标签: .net asp.net-mvc stripe-payments


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-03-08
      • 2018-03-04
      • 2015-12-19
      • 2015-07-31
      • 2023-01-18
      • 2014-11-12
      • 2016-09-04
      • 2018-12-11
      • 1970-01-01
      相关资源
      最近更新 更多