【问题标题】:Stripe API recurring payments with Php使用 PHP 进行 Stripe API 定期付款
【发布时间】:2016-07-25 18:09:08
【问题描述】:

我正在使用 Stripe API 进行一次性付款,使用类似的东西可以很好地工作:

  $stripe = array("secret_key" => "MY_SECRET_KEY", "publishable_key" => "MY_PUBLISHABLE_KEY");
  Stripe::setApiKey($stripe['secret_key']); 

  try {
      $charge = Stripe_Charge::create(array(
          "amount" => round($_POST['amount'] * 100, 0),
          "currency" => "USD",
          "card" => array(
              "number" => 111111111111111111,
              "exp_month" => 10,
              "exp_year" => 2017,
              "cvc" => 321,
              ),
          "description" => $_POST['item_name']));
      $json = json_decode($charge);
      $amount_charged = round(($json->{'amount'} / 100), 2);
      //process payment here......

  }
  catch (Stripe_CardError $e) {
      $body = $e->getJsonBody();
      print json_encode($json);
  }

现在我希望能够通过捕获用户信用卡信息并每月运行一次 cron 作业来进行定期付款。以上工作正常吗,还是我需要别的东西。我知道 Stripe 内置了定期付款功能,但在我的情况下,每个月的付款金额会有所不同。

【问题讨论】:

  • 您真的应该将用户的信用卡信息保存在您的数据库中。您可以使用 Strip 的 API change the amount of a subscription
  • 在您的终端上存储 CC 数据会使您遵守 PCI 合规性,这不是您想要参与的事情。让条带处理存储。
  • 他们的文档中很好地涵盖了所有这些......

标签: php stripe-payments


【解决方案1】:

您的示例中缺少的是客户记录。你看,Stripe 不允许你重复使用令牌。它们是一次性的。为了构建您正在寻找的功能,您需要将付款详细信息安全地存储在某处。如果您符合 PCI 标准,那当然可以在您自己的本地数据存储中;但是,如果您想让自己轻松一点,您可以为每个用户及其相关的付款方式建立客户记录。

当您正常构建费用时,您将使用Create a Charge API 请求。

您现在正在执行此操作,并将令牌 ID 作为 source-argument 传递。相反,您要做的是首先创建一个Customer,然后通过creating a Card 附加该付款来源。 (我建议将它们作为两个单独的步骤进行,这样您就可以更好地管理具有多个付款来源的客户。)

然后,要再次对该记录收费,您将再次发出 Create a Charge API 请求,但您将在 customer-argument 中传入客户 ID 并(可选)传入源 ID (@987654328 @) 进入source-参数。如果您没有传递source-argument,但您传递了customer-argument,它将使用默认付款来源。

希望有帮助!

【讨论】:

  • 感谢您的帮助。只是为了确认。我不需要获取令牌,只需要获取客户 ID,并为未来的所有费用重复使用相同的客户 ID。步骤是 1. 创建客户、2. 创建卡和 3. 创建费用。
  • 正确。 :) 假设客户和卡之间存在 1:1 的关系,您甚至可以放弃独立执行步骤 1 和 2,只需在创建客户记录 (stripe.com/docs/api#create_customer) 时将令牌 ID 传递给 source-参数。
【解决方案2】:

您不能每个月使用卡令牌进行收费吗?而不是使用他们的卡令牌传递卡会更安全。但否则你的代码看起来不错。您应该每个月都可以进行这样的收费。

编辑

忘了提到您需要创建一个 Stripe 客户并将 CC 令牌分配给该 Stripe 客户,因为 CC 令牌只能使用一次。创建 Stripe 客户后,您将能够每月向该客户收费。

【讨论】:

  • 我可以每个月重复使用同一个令牌吗?我更喜欢那个而不是 CC 信息
  • 您必须使用该 CC 令牌创建一个 Stripe 客户。然后向 Stripe 客户收费。
  • 将客户来源设置为等于您获得的 CC 令牌。然后你就可以向客户收费了。他们在上面的链接中给出的那个例子非常详细地说明了要保存什么以及如何处理它。
  • 您不能重复使用条纹卡令牌。 :(
  • @andrewnelder 忘了在我的回答中说清楚。需要首先创建一个客户并向该客户收费。现在将进行编辑。
猜你喜欢
  • 2015-06-13
  • 2018-12-05
  • 2022-01-17
  • 2016-02-21
  • 2019-06-20
  • 2017-04-16
  • 2014-04-28
  • 2021-07-24
  • 2015-08-23
相关资源
最近更新 更多