繁体   English   中英

带PHP的Stripe API定期付款

[英]Stripe API recurring payments with Php

我正在使用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内置了用于定期付款的功能,但在我的情况下,每个月的付款金额会有所不同。

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

在正常构造费用时,您将使用创建费用 API请求。

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

然后,要再次收取该记录,您将再次创建“创建费用 API请求”,但您需要在customer -argument中传递客户ID,然后(可选)将源ID( card_xxx )传递至source -argument 。 如果您没有传递source参数,但是传递了customer参数,它将使用默认的付款来源。

希望有帮助!

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

编辑

忘记了,由于CC令牌仅一次使用,因此您将需要创建Stripe客户并将CC令牌分配给该Stripe客户。 创建Stripe客户后,您将可以每月向该客户收费。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM