Dieser Artikel zeigt die Methode von PHP, um die Zahlung von Personen mit WeChat Enterprise -Konten zu realisieren. Die Details sind wie folgt:
Einführung: Distributor, wie kann man Bargeld aus dem Wechat -Geschäft abheben?
Zahlen Sie direkt mit Wechat.
Die Implementierung ist wie folgt:
WeChat -Zahlungskonfiguration
/*WeChat Payment*/ 'PAY_WEIXIN' => array( 'appid' => 'XXXX', 'appsecret' => 'XXXXXX, 'mchid' => '1283301801', //Merchant number 'key' => 'zhudianbaodiandozhudianbao0527', //Merchant payment key 'apiclient_cert' => 'Conf/cert/apiclient_cert.pem', // Händlerzertifikat apiclient_cert.pem 'apiclient_key' => 'conf/cert/apiclient_key.pem', // Händler -Zertifikat apiclient_key.pem)
Arraytoxml
/*** Array an xml*/Funktion ArrayToxMl ($ arr) {$ xml = "<xml>"; foreach ($ arr als $ key => $ val) {if (is_numeric ($ val)) {$ xml. = "<". $ key. ">". $ val. "</". $ key. ">"; } else $ xml. = "<". $ key. "> <! [cdata [". } $ xml. = "</xml>"; $ xml;} zurückgebenVerwenden Sie das Zertifikat, um das XML in der entsprechenden Schnittstellen -URL in Post zu senden
/*** Funktion: Verwenden Sie ein Zertifikat, um XML an die entsprechende Schnittstellen -URL zu senden // Zeitüberschreitungszeit curl_setopt ($ ch, curlopt_timeout, $ second? $ Second: $ this-> timeout); // Setzen Sie den Proxy hier, wenn es eins gibt // 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_sl_verifypeer, false); curl_setopt ($ ch, curlopt_sl_verifyHost, false); // Header curl_setopt ($ ch, curlopt_header, false) festlegen; // Setzen Sie das Ergebnis als Zeichenfolge und Ausgabe auf den Bildschirm curl_setopt ($ ch, curlopt_returntransfer, true); // Setzen Sie das Zertifikat // Verwenden Sie das Zertifikat: Zertifikat und Schlüssel Es gehört zu zwei .pem -Dateien // Das Standardformat ist PEM. curl_setopt ($ ch, curlopt_sslcert, $ cert); // Das Standardformat ist PEM, Sie können curl_setopt ($ ch, curlopt_sslkeytype, 'pem') kommentieren; curl_setopt ($ ch, curlopt_sslkey, $ key); // Die Post -Submission -Methode curl_setopt ($ ch, curlopt_post, true); curl_setopt ($ ch, curlopt_postfields, $ xml); $ data = curl_exec ($ ch); // Ergebnis zurückgeben, wenn ($ data) {curl_close ($ ch); $ this-> xmltoArray ($ data) zurückgeben; } else {$ errungen = curl_errno ($ ch); echo "Curl -Fehler, Fehlercode: $ error". "<br>"; curl_close ($ ch); false zurückgeben; }}Unternehmen zahlen Einzelpersonen
// Das Unternehmen zahlt die individuelle öffentliche Funktion Paytouser ($ Params, $ key, $ apcent_cert, $ apiclient_key) {$ url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; // Erkennungsbedarf Parameter if ($ params ["partner_trade_no"] == null) {// exit ("Anwendungsschnittstelle, die erforderlichen Parameter partner_trade_no!". "<br>"); } elseif ($ params ["openID"] == null) {exit ("Anwendungsschnittstelle, die erforderlichen Parameter OpenID!". "<br>"); } elseif ($ params ["check_name"] == null) {// no_check: Kein namentliches Verwertungsverifizierung Force_Check: Starke Überprüfung des richtigen Namens (Benutzer ohne korrekte Namen der Authentifizierung werden nicht verifiziert, und der Transfer kann nicht übertragen werden. Schnittstelle, der erforderliche Parameter check_name fehlt! "." <br> "); } elseif (($ params ["check_name"] == 'force_check' oder $ params ["check_name"] == 'option_check') && ($ params ["re_user_name"] == null)) {// Der richtige Name des Zahlungsbenutzers. Exit ("Rückerstattungsschnittstelle, der erforderliche Parameter re_user_name fehlt!". "<br>"); } elseif ($ params ["pension"] == null) {exit ("Rückerstattungsschnittstelle, der erforderliche Parameterbetrag fehlt!". "<br>"); } elseif ($ params ["desc"] == null) {exit ("Anwendungsschnittstelle, der erforderliche Parameter desc!". "<br>"); } $ params ["mch_appid"] = $ this-> appid; // öffentliche Konto-ID $ Params ["mchid"] = $ this-> mchid; // Händlernummer $ $ Params ["nonce_str"] = $ this-> createNoncestern (); // Random String $ params ['spbill_creede'] ? '192.127.1.1': $ _server ['remote_addr']; // ip $ params ["sign"] = $ this-> GetSign ($ params, $ key); // Signatur $ xml = $ this-> arrayToxml ($ params); Rückgabe $ this-> postxmlsslcurl ($ xml, $ url, false, $ apcent_cert, $ apiclient_key);}