我在哪里称呼“付款成功”消息?

时间:2018-09-04 03:16:19

标签: javascript php stripe-payments

我已将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"之类的函数,从哪里调用该函数的正确位置?

2 个答案:

答案 0 :(得分:0)

发布后不久就知道了。

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

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

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

答案 1 :(得分:0)

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;

}