Я понимаю, что, скорее всего, здесь я делаю ошибку ладьи ie, но я пытаюсь внедрить Stripe Billing в мое PHP веб-приложение, и я сталкиваюсь с проблемой передачи данных из одного из JS Stripe работает с моим PHP методом с использованием Fetch API. Все до этого момента в коде, кажется, работает правильно, и я могу правильно сгенерировать идентификатор метода оплаты Stripe для передачи в функцию JS.
Ссылочный код реализации из Stripe:
Вот моя Javascript функция:
async function createCustomer(paymentMethod) {
return fetch(urlRoot + 'create-customer', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
payment_method: paymentMethod
}),
})
.then(function(response) {
return response.text(); // Using .text instead of .json simply to debug.
})
.then(function(text) {
console.log(text);
})
.catch(function(error) {
console.log('Error: ', error.message);
});
}
А вот мой PHP метод:
public function createCustomer() {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
\Stripe\Stripe::setApiKey(Config::STRIPE_SECRET_KEY);
$customer = \Stripe\Customer::create([
"payment_method" => $_POST['payment_method'],
"invoice_settings" => [
"default_payment_method" => $_POST['payment_method']
]
]);
header('Content-Type: application/json');
echo json_encode($customer);
}
}
Однако, когда я пытаюсь выполнить скрипт, Я получаю ошибку 500, что "payment_method" является неопределенным индексом в моем методе PHP. Когда я выполняю var_dump ($ _ POST) в качестве первой строки кода в том же методе, он говорит, что массив $ _POST пуст.
Когда я запускаю скрипт, я получаю следующая ошибка в моей консоли Chrome DevTools:
<code>VM3531:1 POST http://localhost/toryn/create-customer 500 (Internal Server Error)
(anonymous) @ VM3531:1
createCustomer @ main.js:125
(anonymous) @ main.js:101
Promise.then (async)
createPaymentMethod @ main.js:95
(anonymous) @ main.js:80
main.js:138
<h1>Fatal Error</h1>
<p>Uncaught exception: "ErrorException"</p>
<p>Message: "Undefined index: payment_method"</p>
<p>Stack trace:<pre>#0 /Applications/XAMPP/xamppfiles/htdocs/toryn/App/Controllers/Stripe.php(30): Core\Error::ErrorHandler(8, 'Undefined index...', '/Applications/X...', 30, Array)
#1 /Applications/XAMPP/xamppfiles/htdocs/toryn/Core/Router.php(110): App\Controllers\Stripe->createCustomer()
#2 /Applications/XAMPP/xamppfiles/htdocs/toryn/public/index.php(43): Core\Router->dispatchRoute('create-customer...')
#3 {main}
Вброшено "/Applications/XAMPP/xamppfiles/htdocs/toryn/App/Controllers/Stripe.php" в строке 30
Я уверен, что мне не хватает чего-то фундаментального о том, как PHP работает с Fetch API и JSON, но я искал это часами и не могу кажется, найти решение. Я буду рад и ценим любые рекомендации или идеи, которые вы, ребята, можете предоставить.
Заранее большое спасибо, и если я не предоставил достаточно фрагментов кода, чтобы описать проблему, пожалуйста, дайте мне знать.