为什么Stripe在此示例中不起作用?

时间:2017-05-19 17:34:25

标签: php stripe-payments

我正在尝试建立一个网站,我正在研究支付网关。条纹是我遇到的第一个,我正在尝试这个。 在我提出我的问题之前,我想知道它是否有用或有更好的选择吗?

我遇到的问题如下。我无法使用以下代码进行付款。首先,我使用此表单将信息提交给js文件并获取令牌。



<form  class="pay" action="payment.php" method="POST">
          <script
            src="https://checkout.stripe.com/checkout.js" class="stripe-button"
            data-key=" filled in ... "
            data-amount="999"
            data-name="Demo Site"
            data-description="Widget"
            data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
            data-locale="auto"
            data-zip-code="true"
            data-currency="eur">
          </script>
</form>
&#13;
&#13;
&#13;

然后我使用这个php进行操作。

&#13;
&#13;
<?php

// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey(" filled in ... ");

// Token is created using Stripe.js or Checkout!
// Get the payment token submitted by the form:
$token = $_POST['stripeToken'];

// Charge the user's card:
$charge = \Stripe\Charge::create(array(
  "amount" => 1000,
  "currency" => "eur",
  "description" => "Example charge",
  "source" => $token,
));

?>
&#13;
&#13;
&#13;

相信我在我的真实代码中正确填写了代码。

如果你能帮助我,那就太棒了!

提前致谢, Jens Van den Eede。

2 个答案:

答案 0 :(得分:1)

我看到你没有收录autoload.php,你使用的是作曲家吗?然后在使用条带之前写这个。

require_once('vendor/autoload.php');

关于支付解决方案的选择,取决于您想要定位的国家/地区,替代方案是Braintree,Mangopay。

答案 1 :(得分:0)

首先,我将print_r($token);放在说明的行之后:

$token = $_POST['stripeToken'];

这应该显示您从Stripe.js获得的令牌的价值。

如果值 为null,则会告诉您前端发生的事情和隐藏的stripeToken字段未被注入。此时,我将使用Web Inspector调试页面上的代码,并确保发送到PHP服务器的请求包含serverToken字段。

至于500错误,我的猜测是因为$ token的值为null或缺失。确定这一点的最佳方法是在此处实现Stripe API文档中显示的错误处理代码:

https://stripe.com/docs/api/php#errors

这将捕获任何错误并将其打印出来,而不是允许它级联并导致500错误。最后,无论什么时候我都找不到PHP程序的问题,这就是把这两行放在脚本的顶部:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', true);

总是在将代码投入生产之前将其删除,因为它可能泄漏敏感信息。但是,在开发和测试中,将导致PHP在此过程中打印出任何错误或警告,这有助于追踪细微问题。

另一种可能性是您的代码无法为某个版本加载Stripe PHP库;您可能需要下载此库或使用Composer来获取它,以便它可以在PHP代码中的'vendor /'文件夹中找到。

如果您还没有使用过Composer,我建议您按照手动安装步骤进行操作:

https://github.com/stripe/stripe-php#manual-installation

相关问题