我正在尝试建立一个网站,我正在研究支付网关。条纹是我遇到的第一个,我正在尝试这个。 在我提出我的问题之前,我想知道它是否有用或有更好的选择吗?
我遇到的问题如下。我无法使用以下代码进行付款。首先,我使用此表单将信息提交给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;
然后我使用这个php进行操作。
<?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;
相信我在我的真实代码中正确填写了代码。
如果你能帮助我,那就太棒了!
提前致谢, Jens Van den Eede。
答案 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,我建议您按照手动安装步骤进行操作: