Saya tahu ada pertanyaan serupa, tetapi karena tidak ada jawaban yang jelas (setidaknya saya tidak menemukannya) dan dokumentasi Paypal agak berantakan, saya menanyakannya di sini.

Saya perlu POST data kustom (dimasukkan oleh pengguna melalui formulir web) bersama dengan semua variabel yang dikirim secara default dengan tombol Paypal.

Saya memerlukan data khusus itu karena saya membuat PDF dengan FPDI/TFPDF berdasarkan nilai-nilai itu. Saya juga mengirim email yang menggunakan variabel-variabel itu.

Saya membuatnya bekerja dengan Stripe. Ini adalah bagian dari charge.js yang membuat permintaan POST. formData berisi token Stripe + data khusus.

// 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
}
});

Perhentian berikutnya adalah charge.php di mana saya membuat tagihan. Jika tagihan berhasil, PDF dibuat dan email dikirim.

Berikut sedikit kutipannya:

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.));

Apa cara yang benar untuk melakukan hal yang sama dengan Paypal? Di bagian proses mana saya harus membuat PDF dan mengirim email?

Dari pemahaman saya tempat itu akan menjadi skrip pendengar IPN? Tapi Paypal mengatakan untuk menggunakan webhooks dengan REST API.

P.S. Saya seorang desainer yang suka membuat kode, tetapi itu bukan keahlian saya.

1
fluxus 19 September 2019, 20:16

1 menjawab

Jawaban Terbaik

Jika Anda menggunakan REST API, Anda memang akan menggunakan Webhooks alih-alih IPN. Ini akan mengirimkan POST data transaksi ke skrip pendengar yang Anda berikan saat mendaftarkan webhook.

Di dalam skrip itu, Anda dapat menerima semua data ini dan memprosesnya sesuka Anda. Di sinilah Anda dapat membuat pemberitahuan email bermerek khusus, menekan API pihak ke-3, memperbarui database Anda sendiri, atau apa pun yang mungkin ingin Anda otomatisasi menggunakan data transaksi.

PayPal tidak memiliki objek "metadata". Sebagai gantinya, Anda bisa menyimpan semua data yang Anda butuhkan di database lokal Anda dengan ID pesanan atau ID catatan. Kemudian berikan ID pesanan itu dalam permintaan PayPal, dan nilai ini akan kembali ke Webhook.

Jadi, dari dalam skrip Anda, Anda kemudian dapat menarik semua data itu kembali dari database Anda menggunakan ID pesanan, dan mengambil di tempat yang Anda butuhkan dengan semua data yang tersedia pada saat itu.

Semoga membantu!

2
Drew Angell 20 September 2019, 02:13