Я боролся с этим в течение нескольких дней и даже обратился к Stripe с просьбой о помощи. Я наконец получил это на работу.
НЕТ фигурных скобок , но также НЕТ кавычек . ПРОСТО имя переменной , которую вы (мы) присвоили переменной, указанной при ответе сервера. Это значение id
массива, возвращенного из \Stripe\Checkout\Session::create([..])
Из вашего примера это будут session_id
в PHP и sessionId
в JS . Это означает, что ваш sessionId: '{{cs_KmeI…Q30}}'
на самом деле должен быть просто sessionId: 'cs_KmeI…Q30'
.
Вупи .. загрузили страницу оплаты НАКОНЕЦ! : O)
РЕДАКТИРОВАТЬ: Извините, но это был конец 14-часовой рабочий день. Мои глаза болят, и у меня болит голова. Всем доброе утро.
Нельзя помещать фактическое значение идентификатора сеанса с жестким кодом в одинарные кавычки, поскольку сеанс является изменчивым. После истечения этого сеанса или инициирования другого сеанса для другого платежа использование examp123le0fID не будет работать. Поэтому мы хотим использовать назначенное динамическое значение. Эта переменная не должна быть заключена ни в что - ни в кавычки, ни в кавычки.
При инициализации файла оплаты я создал переменную для идентификатора сеанса, используя массив, который нам возвращает Stripe. Это я сделал в PHP, так как это то, что я использую для этого раздела кода. Затем я добавил скрипт после секции body, который назначил это значение (переменную) новой переменной Java. Сразу после этого я добавил скрипт, который передал переменную java в файл java, содержащий код перенаправления Java Stripe. Внутри я назначил эту переменную новому имени, используя const, который затем был передан самому коду перенаправления. Это может быть долгий путь сделать это. Я не очень хорош в Java, Jason, Ajax и т. Д., И я не занимался программированием более 10 лет, но важно то, что этот подход сработал для нас.
Итак, в нашем файле donation.php есть:
$session = \Stripe\Checkout\Session::create([
'payment_method_types' => ['card'],
'line_items' => [[
'name' => 'Custom t-shirt',
'description' => 'Your custom designed t-shirt',
'amount' => 5000, /* order.amount */
'currency' => 'usd',
'quantity' => 1,
]],
'success_url' => 'https://example.com/success',
'cancel_url' => 'https://example.com/cancel',
]);
$stripeSession = array($session);
$sessId = ($stripeSession[0]['id']);
Затем сразу после конца тела в тот же файл я положил это:
<script type="text/javascript"> var ssId = "<?php echo $sessId ?>";</script>
<script src="./client.js"></script>
где client - это файл js, содержащий код перенаправления Stripe. Внутри этого файла у нас было это:
const stripe = Stripe('pk_test_UKRcYdXTmraCEZspx8PE7NzB00QZyoUXp3');
const checkout_Id = (ssId);
и перенаправление Stripe:
stripe.redirectToCheckout({
sessionId: checkout_Id,
});
И это вернуло полную страницу оформления заказа с разделом оплаты.