Artikel ini menggambarkan metode PHP untuk mewujudkan pembayaran individu dengan akun perusahaan WeChat. , dengan rincian sebagai berikut:
Pendahuluan: Distributor, Bagaimana Menarik Uang Tunai dari Bisnis WeChat?
Bayar langsung dengan WeChat.
Implementasi adalah sebagai berikut:
Konfigurasi Pembayaran WeChat
/*Pembayaran weChat*/'pay_weixin' => array ('appId' => 'xxxx', 'appsecret' => 'xxxxxx,' mchid '=>' 1283301801 ', // nomor pedagang' Key '=>' zhudiianbaodianbaoCoIC = 'Key' => 'zhudiianbaodianbaoCerbaooC =>' zhudianbaodianbaoC = 'Conf/cert/apiclient_cert.pem', // sertifikat pedagang apiclient_cert.pem 'apiclient_key' => 'conf/cert/apiclient_key.pem', // sertifikat pedagang apiclient_key.pem)arraytoxml
/*** array ke xml*/function arraytoxml ($ arr) {$ xml = "<xml>"; foreach ($ arr as $ key => $ val) {if (is_numeric ($ val)) {$ xml. = "<". $ key. ">" $ val. "</". $ key. ">"; } else $ xml. = "<". $ key. "> <! [CDATA [". $ val. "]]> </". $ key. ">"; } $ xml. = "</xml>"; mengembalikan $ xml;}Gunakan sertifikat untuk mengirimkan XML ke URL antarmuka yang sesuai di pos
/*** Fungsi: Gunakan sertifikat untuk mengirimkan XML ke antarmuka yang sesuai URL*/fungsi postxmlsslcurl ($ xml, $ url, $ detik, $ cert, $ key) {$ ch = curl_init (); // Waktu timeout curl_setopt ($ ch, curlopt_timeout, $ detik? $ Kedua: $ this-> timeout); // atur proxy di sini, jika ada satu // curl_setopt ($ ch, curlopt_proxy, '8.8.8.8'); // curl_setopt ($ ch, curlopt_proxyport, 8080); curl_setopt ($ ch, curlopt_url, $ url); curl_setopt ($ ch, curlopt_ssl_verifypeer, false); curl_setopt ($ ch, curlopt_ssl_verifyhost, false); // atur header curl_setopt ($ ch, curlopt_header, false); // Atur hasilnya sebagai string dan output ke layar curl_setopt ($ ch, curlopt_returntransfer, true); // Atur sertifikat // Gunakan sertifikat: sertifikat dan kunci itu milik dua file .pem masing -masing // format default adalah PEM, Anda dapat menganotasi curl_setopt ($ ch, curlopt_sslcertType, 'PEM'); curl_setopt ($ ch, curlopt_sslcert, $ cert); // Format default adalah PEM, Anda dapat memberi anotasi curl_setopt ($ ch, curlopt_sslkeytype, 'PEM'); curl_setopt ($ ch, curlopt_sslkey, $ key); // Metode pengiriman pos CURL_SETOPT ($ ch, curlopt_post, true); curl_setopt ($ ch, curlopt_postfields, $ xml); $ data = curl_exec ($ ch); // hasil pengembalian jika ($ data) {curl_close ($ ch); mengembalikan $ this-> xmltoArray ($ data); } else {$ error = curl_errno ($ ch); echo "kesalahan keriting, kode kesalahan: $ error". "<br>"; curl_close ($ ch); mengembalikan false; }}Bisnis membayar individu
// Perusahaan membayar paytouser fungsi publik individu ($ params, $ key, $ apcent_cert, $ apiclient_key) {$ url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; // Deteksi Parameter yang Diperlukan if ($ params ["mitra_trade_no"] == null) {// keluar ("Antarmuka aplikasi pengembalian dana, parameter yang diperlukan mitra_trade_no!". "<br>"); } elseif ($ params ["openId"] == null) {exit ("Antarmuka aplikasi pengembalian dana, parameter yang diperlukan OpenId!". "<br>"); } elseif ($ params ["check_name"] == null) {// no_check: Tidak ada nama asli verifikasi force_check: verifikasi yang kuat dari nama asli (pengguna tanpa nama asli yang tidak dapat diverifikasi, dan transfer yang tidak dapat ditransfer). antarmuka, parameter yang diperlukan check_name hilang! "." <br> "); } elseif (($ params ["check_name"] == 'force_check' atau $ params ["check_name"] == 'option_check') && ($ params ["re_user_name"] == null)) {// Nama asli pengguna pembayaran. EXIT ("Antarmuka Aplikasi Pengembalian dana, parameter yang diperlukan RE_USER_NAME tidak ada!". "<br>"); } elseif ($ params ["jumlah"] == null) {exit ("Antarmuka aplikasi pengembalian dana, jumlah parameter yang diperlukan tidak ada!". "<br>"); } elseif ($ params ["desc"] == null) {exit ("Antarmuka aplikasi pengembalian dana, parameter yang diperlukan Desc!". "<br>"); } $ params ["mch_appid"] = $ this-> appid; // public account id $ params ["mchid"] = $ this-> mchid; // nomor pedagang $ params ["nonce_str"] = $ this-> createNoncestr (); // random string $ params ['spbill_create_preate' ’ip '] ='] = '] [) _ _ _ _ @ @ @ @ @ » '192.127.1.1': $ _Server ['Remote_addr']; // Dapatkan ip $ params ["tanda"] = $ this-> getsign ($ params, $ key); // tanda tangan $ xml = $ this-> arraytoxml ($ params); Return $ this-> PostXMLSSLCURL ($ XML, $ URL, FALSE, $ APCENT_CERT, $ APICLIENT_KEY);}