Неустранимая ошибка: неперехваченная полоса исключений

Эй, ребята, я довольно новичок в программировании. Буду очень признателен за вашу помощь. Я пытаюсь настроить Stripe payment, но при зарядке карты снова и снова получаю очень длинное сообщение об ошибке.

Неустранимая ошибка: необработанное исключение «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 «error»: {\ n … ‘, 400, Array, Array, Array) # 1 C: \ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiRequestor.php (309): Stripe \ ApiRequestor-> handleErrorResponse (‘ {\ n «ошибка») : {\ n … ‘, 400, Array, Array) # 2 C: \ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiRequestor.php (65): Stripe \ ApiRequestor -> _ interpretResponse (‘ { \ n «error»: {\ n … ‘, 400, Array) # 3 C: \ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiResource.php (119): запрос Stripe \ ApiRequestor-> (‘post’, ‘/ v1 / charge’, Array, Array) # 4 C: \ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiResource.php (158): Stripe \ ApiResource :: _ staticRequest (‘ post ‘,’ / v1 / charge ‘, Array, NULL) # 5 C: \ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ Charge.php (74): Stripe \ ApiResourc в C: \ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiRequestor.php в строке 124

Я абсолютно не понимаю, что это значит. Я буквально скопировал / вставил каждую вещь с полосы. Ниже приведены мои коды

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();
}

Создайте токен или отобразите ошибку при отправке формы.

  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 {

Отправьте токен на ваш сервер

      stripeTokenHandler(result.token);
}
});
});

После этого я беру своего клиента в ThankYou.php со следующим кодом

<?php
require_once '/init.php';

Установите свой секретный ключ: не забудьте изменить его на свой живой секретный ключ в производстве

\Stripe\Stripe::setApiKey(STRIPE_PRIVATE);

Токен создается с помощью Checkout или Elements!
Получите идентификатор токена платежа, указанный в форме:

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

Зарядите карточку пользователя:

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

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'];

Тем не менее, согласно сообщению об ошибке: «Нет такого токена: ложь», ваш $token переменная имела значение false который указывает на то, что ваш бэкэнд PHP скрипт сделал не получить stripeToken Параметр POST. Это указывает на то, что существует другая проблема, вероятно, в коде вашего внешнего интерфейса, где вы создаете токен.

Если вы новичок в веб-разработке, я советую вам посмотреть на Проверять, выписываться для сбора информации о карте и создания токенов — это готовая форма оплаты, которая выполняет большую часть работы за вас.

Вы можете найти руководство по использованию Checkout с PHP здесь: https://stripe.com/docs/checkout/php

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector