【问题标题】:When is a payment successful in Stripe?Stripe 什么时候付款成功?
【发布时间】:2017-10-01 11:46:46
【问题描述】:

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

我需要在支付成功并从卡中扣款(不拒绝)时更新数据库。

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

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

然后我为客户创建订阅:

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

我的问题:我是否需要创建一个 webhook 来检测支付是否成功?还是表单提交成功就成功了?

【问题讨论】:

  • 你需要一个 webhook。提交成功意味着互联网正常工作。
  • @JohnConde 文档中有这些吗?如果您能指出我所说的正确方向,请发布答案,以便我接受。另外,是charge.succeeded 还是invoice.payment_succeeded?我正在使用订阅。
  • 这比 Stripe 本身的级别更高。一个成功的表单提交仅仅意味着互联网协议和机器都成功地履行了他们的职责。这并不意味着交易被批准。 webhook 会告诉您 Stripe 如何处理提交以及提交是否成功。

标签: php stripe-payments payment-gateway


【解决方案1】:

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

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

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

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

  • 如果计划有默认试用期

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

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

【讨论】:

猜你喜欢
  • 2021-12-09
  • 2020-09-18
  • 2022-12-19
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 2017-04-16
  • 1970-01-01
相关资源
最近更新 更多