Stripe付款何时成功?

时间:2017-05-03 14:54:24

标签: php stripe-payments payment-gateway

我正在创建一个网络应用程序:

我需要在付款成功时更新数据库,并且会对卡收费(而不是拒绝)。

我的代码在这里:我首先创建客户。 (顺便说一句,声明变量,一切正常)

$customer = \Stripe\Customer::create(array(
      'email' => $_POST['stripeEmail'],
      'source'  => $_POST['stripeToken'],
      'description' => $stripeEmail
      ));

然后我为客户创建订阅:

$subscription = \Stripe\Subscription::create(array(
      "customer" => $customer->id,
      "plan" => $planName
      ));

我的问题:我是否需要创建一个webhook来检测付款是否成功?或者表单成功提交后是否成功?

1 个答案:

答案 0 :(得分:5)

在正常情况下,当您create a subscription时,Stripe会立即尝试向客户收费(预先支付Stripe的订阅费用)。如果付款尝试失败,API将立即返回错误,并且不会创建订阅。

在这种情况下,您不需要使用webhook。只需使用普通error handling,并在致电\Stripe\Error\Card时检查是否引发\Stripe\Subscription::create(...)例外。

请注意,如果没有立即收费,订阅创建将始终成功。这可能发生在各种情况下:

  • 如果您在创建订阅时提供trial_end参数

  • 如果该计划有默认试用期

  • 如果您使用优惠券或否定发票项目将第一张发票总额减少到$ 0

  • 如果客户account_balance可以支付第一张发票的费用