我从哪里打电话给“付款成功”的消息?

问题描述 投票:0回答:2

我已将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
2个回答
0
投票

刚发布后不久便想出来了。

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

不是在那里看,我可以找到api参考here,向下滚动到“充电对象”。在此范围内,status(与$charge['status']有关)可以确认它是否成功。

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


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;

}
© www.soinside.com 2019 - 2024. All rights reserved.