【问题标题】:Where do I call the "payment was successful" message from?我从哪里调用“付款成功”消息?
【发布时间】:2018-09-07 20:59:30
【问题描述】:

我已将 Stripe 集成到我的网站中。下面的代码直接从 Stripe 的文档中复制而来。尽管此代码和我的实现之间存在细微差别,但这些差异与问题无关,因为我的代码和代码都显示正常工作

首先我安装相关文件。

composer.json

{
    "require": {
        "stripe/stripe-php": "*"
    }
}

然后我用 JavaScript 进行结帐。 (这个“示例收费”收费 9.99 美元,但您明白了。下面是一个简单的结帐,我的是自定义结帐,但这不应该对问题产生影响。)

<form action="nextpage.php" method="POST">
  <script
    src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key="<test key here>"
    data-amount="999"
    data-name="<myName>"
    data-description="Example charge"
    data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
    data-locale="auto"
    data-currency="aud">
  </script>
</form>

这个结帐非常擅长捕捉大多数错误,如果它找不到任何错误,它会传递一个令牌让我收费。

最后,我添加了一个页面来创建费用

require 'vendor/autoload.php';
\Stripe\Stripe::setApiKey("<test key here>");
$token = $_POST['stripeToken'];
$charge = \Stripe\Charge::create([
    'amount' => 999,
    'currency' => 'aud',
    'description' => 'Example charge',
    'source' => $token,
]);

到目前为止还不错。在测试环境中,这总是成功的。或者,如果我测试了一张不应该成功的卡,它总是在结帐时失败。

但是,假设令牌创建成功,但问题发生在服务器端。 如何检测到这一点?

更具体地说,如果我有像 alert("Your payment has been successful")echo "Your payment has been successful" 这样的函数,从哪里调用它?

【问题讨论】:

    标签: javascript php stripe-payments


    【解决方案1】:

    发布后不久就想通了。

    首先我注意到$charge 是这种情况下的输出,所以我运行echo var_dump($charge);,它打开了大量的信息。

    我可以找到 api 参考 here,而不是在那里查看,向下滚动到“充电对象”。其中status(与$charge['status']相关)可以确认是否成功。

    工作代码if($charge['status'] === "succeeded"){} 是放置成功消息的正确位置。

    【讨论】:

      【解决方案2】:
      try{
        require 'vendor/autoload.php';
        \Stripe\Stripe::setApiKey("<test key here>");
        $token = $_POST['stripeToken'];
        $charge = \Stripe\Charge::create([
          'amount' => 999,
          'currency' => 'aud',
          'description' => 'Example charge',
          'source' => $token,
        ]); 
      
        if(isset($charge->id) && $charge->id != ''){
        echo "Payment has been made successful, Transaction ID : ".$charge->id;exit;
        }
      } catch (\Stripe\Error\Base $e) {
        echo "Something went wrong with payment, Note : ".$e->getMessage();exit;
      
      }
      

      【讨论】:

      • 投反对票的人至少应该有正当理由在这里发表评论!
      猜你喜欢
      • 2018-11-12
      • 2011-08-20
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 2013-06-09
      • 2022-11-29
      • 2023-03-31
      相关资源
      最近更新 更多