致命错误:未捕获的异常条带

时间:2017-10-28 03:08:36

标签: php stripe-payments

嘿伙计们我对编程很新。真的很感谢你的帮助。我正在尝试设置Stripe付款,但在对卡充电时,我会一次又一次地收到这个非常长的错误消息。

致命错误:未捕获的异常' 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']);

1 个答案:

答案 0 :(得分:0)

这一行:

$token = isset($_POST['stripeToken']);

会将truefalse分配给变量$token,具体取决于是否有stripeToken POST参数。

所以当你在费用创建请求中传递$token时:

$charge = \Stripe\Charge::create(array(
  "amount" => 1000,
  "currency" => "usd",
  "description" => "Example charge",
  "source" => $token,
 ));

source参数的值为truefalse。这不是您想要的 - 而应该只是将stripeToken POST参数的值分配给$token变量:

$token = $_POST['stripeToken'];

也就是说,根据错误消息:&#34;没有这样的标记:false&#34;,您的$token变量的值为false,表示您的后端PHP脚本执行了收到stripeToken POST参数。这表明存在另一个问题,可能在您创建令牌的前端代码中。

如果您不熟悉网络开发,我建议您查看Checkout以获取卡信息和创建代币 - 这是一个预先构建的支付表单,可以为您完成大部分工作。

您可以在此处找到使用Checkout with PHP的教程:https://stripe.com/docs/checkout/php