Как отправить пользовательские данные в Paypal и получить их обратно - PullRequest
0 голосов
/ 19 сентября 2019

Я знаю, что подобные вопросы существуют, но поскольку нет четкого ответа (по крайней мере, я не нашел ни одного), и документация 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 Я дизайнер, который любит кодировать, но это не моя сильная сторона.

1 Ответ

1 голос
/ 20 сентября 2019

Если вы используете REST API, вы бы действительно использовали Webhooks вместо IPN.Это отправит POST данных транзакции вашему скрипту слушателя, который вы предоставляете при регистрации webhook.

Внутри этого скрипта вы можете получить все эти данные и обработать их так, как вы хотите.Здесь вы можете генерировать пользовательские уведомления по электронной почте, использовать сторонние API, обновлять собственную базу данных или делать что-либо еще, что вы можете автоматизировать с использованием данных транзакций.

PayPal не имеет объекта «метаданных», хотя.Вместо этого вы можете сохранить все необходимые данные в локальной базе данных с идентификатором заказа или идентификатором записи.Затем передайте этот идентификатор заказа в запросе PayPal, и это значение вернется в Webhook.

Итак, из вашего скрипта вы можете затем извлечь все эти данные из вашей базы данных, используя идентификатор заказа,и заберите, где вам нужно, все имеющиеся на тот момент данные.

Надеюсь, это поможет!

...