Я знаю, что подобные вопросы существуют, но поскольку нет четкого ответа (по крайней мере, я не нашел ни одного), и документация Paypal немного беспорядочная, я задаю ее здесь.
Мне нужноPOST
пользовательских данных (вводимых пользователем через веб-форму) вместе со всеми переменными, которые отправляются по умолчанию с помощью кнопки Paypal.
Мне нужны эти пользовательские данные, потому что я генерирую PDF с FPDI / TFPDF на основеэти ценности.Также я отправляю электронные письма, в которых используются эти переменные.
У меня это работает с Stripe.Это часть charge.js
, которая делает запрос POST
.formData
содержит токен Stripe + пользовательские данные.
// grab the form action url
const backendUrl = form.getAttribute('action');
// Make ajax call
fetch(backendUrl, {
method: "POST",
mode: "same-origin",
credentials: "same-origin",
body: formData
})
.then(function(response) {
return response.json();
})
.then(function(jsonData) {
let data = jsonData;
if(data.success == true){
// make those pdf's available to user immediately
}
else{
// error handling
}
});
Следующая остановка - charge.php
, где я делаю заряд.Если оплата прошла успешно, создаются PDF-файлы и отправляются электронные письма.
Вот небольшая выдержка:
try
{
$charge = \Stripe\Charge::create(array(
'source' => $token,
'amount' => $amount,
'currency' => $currency,
'description' => $item_name,
'metadata' => array(
'customer_name' => $recipient_name,
'customer_email' => $recipient_email,
'order_id' => $order_id,
'order_type' => $order
)
));
}
catch(\Stripe\Error\Card $e) {
$success = false;
$err = "Declined - $e";
}
if($charge->status == 'succeeded') {
// Generate PDF's and send emails
}
// send back stuff that might be useful for thank you page, etc.
echo json_encode(array('success' => $success, 'err' => $err,
'recipient_name' => $recipient_name, 'recipient_email' =>
$recipient_email, etc.));
Как правильно сделать то же самое с Paypal?В какой части процесса я должен генерировать PDF и отправлять электронные письма?
Насколько я понимаю, это место будет сценарием прослушивания IPN?Но Paypal говорит использовать webhooks
с REST API
.
PS Я дизайнер, который любит кодировать, но это не моя сильная сторона.