Disebabkan keperluan projek, pembayaran WeChat perlu ditambahkan pada halaman H5, jadi saya hanya ingin mengatakan bahawa ia sangat rumit, terutamanya apabila penyahpepijatan menyusahkan
Ini ialah dokumen API rasmi WeChat API WeChat
Persediaan untuk pembayaran WeChat
Mohon untuk akaun awam dan aktifkan pembayaran Ini sangat mudah. Hanya gunakan Baidu sendiri
Selepas memohon, konfigurasikan "Direktori Kebenaran Pembayaran", "Direktori Keizinan Ujian" dan "Senarai Putih Ujian" pada tab "Konfigurasi Pembangunan" dalam halaman "Pembayaran WeChat" di halaman platform awam WeChat
Cari "AppID (ID Aplikasi)" dan "AppSecret (Kunci Aplikasi)" dalam "Pusat Pembangun" pada halaman platform awam WeChat
Cari nombor pedagang yang diberikan oleh pembayaran WeChat dalam platform pedagang dan konfigurasikan kunci pembayaran pedagang
Langkah khusus
Pertama, dapatkan prepay_id untuk pembayaran melalui api pembayaran WeChat Di sini anda perlu menggunakan "AppID (ID permohonan)" yang disebutkan di atas, "AppSecret (kunci aplikasi)", "nombor pedagang yang diberikan oleh pembayaran WeChat", " "Kunci Pembayaran Pedagang" dan beberapa parameter lain (sila rujuk dokumentasi pembangunan WeChat untuk butiran) disulitkan ke dalam tandatangan menggunakan MD5 (tandatangan pertama). Selepas mendapatkan prabayar_id, gunakan prabayar_id dan beberapa parameter lain (sila rujuk kepada Dokumentasi pembangunan WeChat untuk butiran) untuk menyulitkannya menjadi tandatangan menggunakan MD5 (Tandatangan kedua) Kemudian pada bahagian hadapan, gunakan API js yang disediakan oleh penyemak imbas terbina dalam WeChat, WeixinJSBridge.invoke, untuk memanggil halaman pop timbul WeChat. pembayaran. Di sini anda perlu menggunakan tandatangan kedua di atas
Kod khusus adalah seperti berikut
$.get('/xxx',function(data){ if(data && data !== ""){ var _data = $.parseJSON(data)[0]; if(parseInt(_data.userAgent) < 5){ alert('您的微信版本低于5.0,无法使用微信支付!'); return false; } WeixinJSBridge.invoke('getBrandWCPayRequest',{ 'appId': _data.appId, 'timeStamp': _data.timeStamp, 'nonceStr': _data.nonceStr, 'package': 'prepay_id=' + _data.packageOne, 'signType': _data.signType, 'paySign': _data.paySign },function(res){ if(res.err_msg === 'get_brand_wcpay_request:ok'){ alert('支付成功,返回订单列表!'); }else if(res.err_msg === 'get_brand_wcpay_request:cancel'){ alert('取消支付!'); } }); } });
Beberapa titik kegagalan mudah memerlukan perhatian
Pautan pembayaran tidak sepadan dengan pautan yang dikonfigurasikan pada platform pembangunan
Sebanyak 2 tandatangan diperlukan, dan parameter yang diperlukan adalah berbeza. Tandatangan yang digunakan dalam JS ialah tandatangan kedua