致命错误:未捕获的异常' Stripe \ Error \ InvalidRequest'有消息'没有这样的标记:false'在C:\ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiRequestor.php:124来自API请求' req_MN1aLPlF6OMPIv'堆栈跟踪:#0 C:\ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiRequestor.php(102):Stripe \ ApiRequestor :: _ specificAPIError(' {\ n"错误&#34 ;:{\ n ...',400,Array,Array,Array)#1 C:\ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiRequestor.php(309):Stripe \ ApiRequestor - > handleErrorResponse(' {\ n"错误":{\ n ...',400,数组,数组)#2 C:\ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiRequestor.php(65):Stripe \ ApiRequestor-> _interpretResponse(' {\ n"错误":{\ n ...',400 ,数组)#3 C:\ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiResource.php(119):Stripe \ ApiRequestor-> request(' post',' / v1 / charges',Array,Array)#4 C:\ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiResource.php(158):Stripe \ ApiResource :: _ staticRequest(' post& #39;,' / v1 / charges',Array,NULL)#5 C:\ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ Charge.php(74):Stripe \ ApiResourc in第124行的C:\ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiRequestor.php
我绝对不知道这意味着什么。我从字面上复制/粘贴了所有东西。以下是我的代码
stock[x][0]+stock[x][1]+stock[x][2]
将令牌ID插入表单,以便将其提交给服务器
Stripe.setPublishableKey('<?=STRIPE_PUBLIC;?>');
function stripeTokenHandler(token) {
提交表格
var form = document.getElementById('payment-form');
var hiddenInput = document.createElement('input');
hiddenInput.setAttribute('type', 'hidden');
hiddenInput.setAttribute('name', 'stripeToken');
hiddenInput.setAttribute('value', token.id);
form.appendChild(hiddenInput);
在提交表单时创建令牌或显示错误。
form.submit();
}
告知客户发生错误&#39;
var form = document.getElementById('payment-form');
form.addEventListener('submit', function(event) {
event.preventDefault();
stripe.createToken(card).then(function(result) {
if (result.error) {
将令牌发送到您的服务器
var errorElement = document.getElementById('card-errors');
errorElement.textContent = result.error.message;
} else {
在此之后,我将我的客户带到ThankYou.php并使用以下代码
stripeTokenHandler(result.token);
}
});
});
设置您的密钥:请记住将其更改为生产中的实时密钥
<?php
require_once '/init.php';
使用Checkout或Elements创建令牌! 获取表单提交的付款令牌ID:
\Stripe\Stripe::setApiKey(STRIPE_PRIVATE);
向用户卡充电:
$token = isset($_POST['stripeToken']);
答案 0 :(得分:0)
这一行:
$token = isset($_POST['stripeToken']);
会将true
或false
分配给变量$token
,具体取决于是否有stripeToken
POST参数。
所以当你在费用创建请求中传递$token
时:
$charge = \Stripe\Charge::create(array(
"amount" => 1000,
"currency" => "usd",
"description" => "Example charge",
"source" => $token,
));
source
参数的值为true
或false
。这不是您想要的 - 而应该只是将stripeToken
POST参数的值分配给$token
变量:
$token = $_POST['stripeToken'];
也就是说,根据错误消息:&#34;没有这样的标记:false&#34;,您的$token
变量的值为false
,表示您的后端PHP脚本执行了不收到stripeToken
POST参数。这表明存在另一个问题,可能在您创建令牌的前端代码中。
如果您不熟悉网络开发,我建议您查看Checkout以获取卡信息和创建代币 - 这是一个预先构建的支付表单,可以为您完成大部分工作。
您可以在此处找到使用Checkout with PHP的教程:https://stripe.com/docs/checkout/php