Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 16619|Jawab: 0

[Antarmuka] C# mengimplementasikan pembayaran WeChat

[Salin tautan]
Diposting pada 15/03/2019 11.59.31 | | |

Baru-baru ini, saya melakukan pengembangan akun resmi WeChat, dan saya mengalami beberapa masalah dengan pembayaran WeChat, dan saya bingung selama 3 hari, tetapi hari ini saya akhirnya menyelesaikannya. Selama periode ini, saya ingin berterima kasih kepada beberapa dewa besar atas bantuan mereka, dan saya akan berbagi pengalaman saya dengan mereka saat mereka sedang panas.

Sebelum menerapkan WeChat Pay,

Saya perlu pergi ke platform pengembangan WeChat untuk sertifikasi, saya tidak akan banyak bicara tentang informasi otentikasi dan konfigurasi ini, ini terutama dari tingkat kode untuk mewujudkan pembayaran.

Dokumentasi resmi: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7.

Menghadapi beberapa parameter di JS, saya akan memberikan penjelasan utama:


Selama proses pengembangan, ada 4 parameter yang sangat penting: salah satunya adalah appid, AppSecret, apikey, dan nomor pedagang. AppID di js di atas adalah salah satunya. timeStamp adalah stempel waktu, 10 digit, nonceStr adalah angka acak, dalam 32 bit, dua parameter terpenting di sini, dan yang paling rawan kesalahan adalah paket dan paySign. Izinkan saya memberi tahu Anda satu per satu. Mari kita bicara tentang paket terlebih dahulu, kita perlu menggunakan prepay_id di sini, parameter ini adalah nomor pesanan yang dihasilkan oleh WeChat, kita perlu memanggil antarmuka pesanan terpadu untuk mendapatkannya. Dokumentasi resmi: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1. Seperti yang Anda lihat dari dokumentasi, untuk mendapatkan prepay_id, banyak parameter yang diperlukan, dan salah satu parameter terpenting adalah tanda tangan. Catatan: Tanda tangan di sini berbeda dengan tanda tangan pembayaran di JS. Ada dua poin dalam dokumen algoritma yang ditandatangani, dan saya hanya menekankan dua poin. Salah satunya adalah urutan parameter, yang harus disambung sesuai dengan ASCII dari kecil ke besar, dan yang lainnya adalah apikey tidak boleh salah, di mana apikey ini? Masuk ke platform pedagang untuk mengaturnya.

Setelah menyambungkan string yang diperlukan untuk tanda tangan, enkripsi MD5 dapat digunakan untuk mendapatkan tanda tangan. Kemudian gabungkan tanda tangan dan semua parameter sebelumnya ke dalam string format xml, dan panggil alamat URL antarmuka:
https://api.mch.weixin.qq.com/pay/unifiedorder就可以返回一个xml结果,解析出其中的prepay_id,这样这个参数就成功获取到了。
Mari kita bicara tentang parameter terakhir di JS, PaySign: PaySign. Hal yang sama berlaku untuk algoritma tanda tangan pembayaran, menyambungkan 5 parameter lainnya di JS secara berurutan, ditambah apikey, enkripsi MD5, oke.
Algoritma tanda tangan sama, tetapi nilai parameternya berbeda. Berikut satu hal yang perlu diperhatikan. Saat membayar tanda tangan, nomor acak nonceStr dan timestamp timeStamp digunakan, dan kedua parameter ini digunakan saat menandatangani
Jika nilai kedua parameter ini di JS sama, keduanya adalah angka acak yang sama dan stempel waktu yang sama. Mengapa? Meskipun dokumentasi tidak mengatakannya, pemahaman saya adalah bahwa tanda tangan pembayaran dihasilkan oleh angka acak dan stempel waktu,
Kemudian saat membayar, kirim nomor acak, stempel waktu, dan tanda tangan pembayaran secara bersamaan, kemudian ketika WeChat memverifikasi, itu juga akan didasarkan pada nomor acak dan stempel waktu di JS untuk menghasilkan tanda tangan dan membandingkannya dengan tanda tangan pembayaran yang Anda kirim.
Jika Anda mendapatkan kembali nomor acak dan stempel waktu baru di js, tanda tangan yang dihitung akan berbeda dari tanda tangan yang Anda kirim, dan kesalahan akan dilaporkan: tanda tangan gagal.

Itu saja untuk tingkat kode, dan tentu saja, ada beberapa poin lain yang perlu diperhatikan. Misalnya, parameter openid yang berguna juga perlu diperoleh dengan memanggil antarmuka, dan apakah direktori untuk otorisasi pembayaran dikonfigurasi dengan benar.
Ringkasan kalimat terakhir: Perhatikan baik-baik dokumennya, dan akhirnya tanyakan kepada orang lain, Anda dapat menemukan grup terkait pembayaran WeChat, ada banyak dewa di dalamnya, saya mengalami masalah sebelumnya dan berjuang selama 2 hari tanpa menyelesaikannya, (terkadang hanya melihat dokumen saja tidak cukup),
Kemudian dia dengan marah menambahkan 8 grup pengembangan WeChat, dan akhirnya keluar di bawah bimbingan para ahli. Terima kasih sekali lagi. Programmer adalah sekelompok orang yang suka berbagi, dan mereka dengan senang hati berbagi apa yang mereka ketahui. Jadi ketika Anda tidak mengerti, tanyakan lebih banyak.






Mantan:Contoh fungsi pesan templat push antarmuka C# WeChat
Depan:Saya merasakan tentang sistem layanan pelanggan perusahaan besar
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com