Эй, ребята, я довольно новичок в программировании. Буду очень признателен за вашу помощь. Я пытаюсь настроить 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,
));
Эта строка:
$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
Других решений пока нет …