使用Stripe.js进行kickstarter式应用程序。如何在迭代和充电之前测试卡?

时间:2018-03-25 15:53:48

标签: stripe-payments stripe.js

因此,我正在构建一个类似于kickstarter / gofundme等的应用程序,因为一旦达到价格目标,它就会向所有贡献的客户收费。我的流程是,当客户为价格目标做出贡献时,我会创建一个条带客户并存储他们的ID:

    customer = stripe.Customer.create(
      email = <user_email>,
      source = <stripe_customer_token>
    )

我将此信息存储在数据库中的数组中。一旦达到价格目标,我就会使用条带验证为合法的初始卡对每个客户进行迭代。

    for customer in customer_array:
      charge = stripe.Charge.create(
        amount = <amount>,
        customer = <customer>,
      )

我预见到的问题是,有时这些价格目标会持续数周。在第1天,客户可以通过条带作为合法卡进行贡献并进行验证,但是在3周内该卡可能会过期或被取消等。在对其进行充电之前,是否有任何方法可以对客户令牌进行某种验证确定它仍然合法吗?我讨厌在一个阵列中迭代超过9/10的客户并向他们收取合法费用,然后用无效的卡片击中阵列中的最终客户。我正在使用stripe.js,所以希望有一个解决方案,但不包含条带API。感谢。

1 个答案:

答案 0 :(得分:1)

\Stripe\Charge::create(array(
  "amount" => 2000,
  "currency" => "usd",
  "capture" => false,
  "source" => "tok_mastercard", 
  "description" => "Charge for avery.moore@example.com"
));

首先使用capture false对其进行充电,然后使用从上面返回的id捕获它。 使用此方法,您可以更自信地验证卡。在极端情况下,例如信用卡取消或被盗,银行可以否决所有预留资金指令。

$ch = \Stripe\Charge::retrieve("ch_1C9s1N2eZvKYlo2Cmpk4KBgS");
$ch->capture();
相关问题