Pasukan pemaju PayPal terkenal kerana mengabaikan semua pertanyaan, dan dokumen itu sangat sukar dibaca, jadi debugging isu -isu ini sangat sukar dan boleh menelan belanja jam pada waktu yang boleh dibilkan. Saya juga telah pergi sejauh menubuhkan pelayan langsung untuk menguji simulator IPN, kerana takut NGROK bersalah ketika menguji secara tempatan, dan juga menambah sijil ke titik akhir untuk mendapatkan HTTPS - tiada dadu. Pada akhirnya, penyelesaiannya - seperti biasanya - mudah tetapi tidak jelas.
Gejala (kegagalan) disebabkan oleh medan tarikh, jika ia mengandungi pengecam zon waktu. Walau bagaimanapun, semua ini disebabkan oleh fakta bahawa PHP mempunyai dua fungsi pengekodan / penyahkodan URL yang berbeza: mentah dan bukan raw.
Berikut adalah contoh.
Katakanlah kita mempunyai tarikh dalam simulator IPN seperti ini:
Fri Aug 19 2016 09:25:00 GMT+0100 (GMT Daylight Time)
Fri%20Aug%2019%202016%2009%3A25%3A00%20GMT+0100%20%28GMT%20Daylight%20Time%29
Fri Aug 19 2016 09:25:00 GMT 0100 (GMT Daylight Time)
Apabila ini dikodkan semula untuk menghantar kembali ke PayPal untuk pengesahan, pengesahan gagal kerana ia tidak lagi nilai yang sama dalam bidang-yang hilang. Ia adalah terperinci yang sangat kecil, dan sangat sukar untuk ditemui apabila mengesan nilai-nilai medan, tetapi ada di sana. Ini sudah cukup, seperti dokumen PayPal, untuk membuat pengesahan kembali "tidak sah".
Terdapat dua penyelesaian untuk masalah ini:
Soalan Lazim (Soalan Lazim) Mengenai PayPal IPN
Apa yang harus saya lakukan jika pendengar saya tidak menerima mesej IPN? Semak URL pendengar anda untuk sebarang kesilapan. Juga, pastikan pelayan anda tidak menghalang sambungan masuk dari PayPal. Sekiranya isu ini berterusan, pertimbangkan untuk mendapatkan bantuan daripada sokongan teknikal PayPal. mesej IPN. Juga, gunakan sambungan selamat (https) untuk URL pendengar anda dan simpan kelayakan akaun PayPal anda. Perintah "cmd = _notify-validate" digunakan untuk mengesahkan mesej IPN. Apabila anda menghantar mesej IPN kembali ke PayPal dengan arahan ini, PayPal bertindak balas dengan sama ada "disahkan" jika mesej itu sahih atau "tidak sah" jika tidak. ?
Untuk mengendalikan mesej IPN dalam nod. JS, anda boleh menggunakan modul 'PayPal-IPN'. Modul ini menyediakan kaedah untuk mengesahkan dan menguraikan mesej IPN. Anda boleh memasangnya menggunakan NPM dan memerlukannya dalam aplikasi Node.js anda.
Atas ialah kandungan terperinci Petua Pantas: Penyelesaian kepada PayPal IPN Sentiasa Kembali 'Tidak Saham'. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!