php - Stripe中什么时候支付成功?

标签 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
      ));

我的问题:我是否需要创建一个网络钩子(Hook)来检测付款是否成功?还是表单提交成功就成功?

最佳答案

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

在这种情况下,您不需要使用 webhooks。正常使用即可error handling并检查调用 \Stripe\Subscription::create(...) 时是否引发 \Stripe\Error\Card 异常。

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

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

  • 如果计划有默认试用期

  • 如果您使用优惠券或负发票项目将第一张发票的总额减少至 0 美元

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

关于php - Stripe中什么时候支付成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43763529/

相关文章:

php - 在 PHP 中使用多个 elseif 嵌套循环的替代方法是什么

php - 使用PDO数据库类而不每次都创建新的连接?

php - Stripe 结帐不起作用

ruby-on-rails - Stripe webhook 身份验证 - Ruby

ios - 使用 PayPal 向最终用户付款

ruby-on-rails - 代表用户进行 Stripe 付款

php - in_array 如何检查对象是否在对象数组中?

php - 带有 JSON 和 PHP 的 HTML5 服务器发送事件 (SSE)

stripe-payments - Stripe 差异约 `setup_future_usage: "off_session "` and ` confirmCardSetup` 如果我只是想在购买时保存用户的信用卡

javascript - 如何在 Razorpay 中重定向成功或失败付款