In diesem Artikel wird die Implementierung der Lieferbenachrichtigungsfunktion bei der WeChat-Zahlung vorgestellt.
Um den Bestellstatus besser verfolgen zu können, muss ein Dritter die Versandbenachrichtigungs-API aufrufen, um WeChat nach Erhalt der endgültigen Zahlungsbenachrichtigung zu benachrichtigen . Der Lieferstatus der Bestellung im Hintergrund.
Lieferfrist: innerhalb von 24 Stunden für virtuelle Produkte und Serviceprodukte und innerhalb von 72 Stunden für physische Produkte.
Nach Erhalt der Zahlungsbenachrichtigung liefern Sie die Ware bitte pünktlich aus und nutzen Sie die Lieferbenachrichtigungsschnittstelle, um relevante Informationen mit dem WeChat-Backend zu synchronisieren. Wenn die Plattform die Lieferung nicht innerhalb der angegebenen Zeit erhält, wird dies als Lieferüberschreitung behandelt.
Die URL der Lieferbenachrichtigungs-API lautet:
https://api.weixin.qq.com/pay/delivernotify?access_token=xxxxxx
Die Parameter in der Die URL enthält nur die aktuellen Anmeldeinformationen für die öffentliche WeChat-Plattform access_token und die tatsächlichen Daten der Versandbenachrichtigung werden in PostData im folgenden Format abgelegt:
{ "appid" : "wwwwb4f85f3a797777", "openid" : "oX99MDgNcgwnz3zFN3DNmo8uwa-w", "transid" : "111112222233333", "out_trade_no" : "555666uuu", "deliver_timestamp" : "1369745073", "deliver_status" : "1", "deliver_msg" : "ok", "app_signature" : "53cca9d47b883bd4a5c85a9300df3da0cb48565c", "sign_method" : "sha1" }
Die obige Beschreibung der Inhaltsparameter ist in Tabelle 6 dargestellt. 12.
Parameter | Beschreibung | ||||||||||||||||||||
appid | AppId des öffentlichen Plattformkontos ; | ||||||||||||||||||||
openid | Die OpenId des kaufenden Benutzers, die in den PostData der endgültigen Zahlungsergebnisbenachrichtigung platziert wurde; | ||||||||||||||||||||
Transaktionsauftragsnummer; | |||||||||||||||||||||
out_trade_no | Drittanbieter-Bestellnummer; <?php include_once("WxPayHelper.php"); //1. 获取access token $appid = "wx0000000000000000"; $appsecret = "e76050733ce76050733ce76050733cdd"; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; $result = https_request($url); $jsoninfo = json_decode($result, true); $access_token = $jsoninfo["access_token"]; //2.准备参数 $deliver_timestamp = time(); //2.1构造最麻烦的app_signature $obj['appid'] = $appid; $obj['appkey'] = "8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6k"; $obj['openid'] = "o0pk9uIVnlY-fJkzFKEbQ6LJ4cFc"; $obj['transid'] = "1218614901201405273313473135"; $obj['out_trade_no'] = "JfuKdiBig4zZnE4n"; $obj['deliver_timestamp'] = $deliver_timestamp; $obj['deliver_status'] = "1"; $obj['deliver_msg'] = "ok"; $WxPayHelper = new WxPayHelper(); //get_biz_sign函数受保护,需要先取消一下,否则会报错 $app_signature = $WxPayHelper->get_biz_sign($obj); //3. 将构造的json提交给微信服务器,查询 $jsonmenu = ' { "appid" : "'.$obj['appid'].'", "openid" : "'.$obj['openid'].'", "transid" : "'.$obj['transid'].'", "out_trade_no" : "'.$obj['out_trade_no'].'", "deliver_timestamp" : "'.$deliver_timestamp.'", "deliver_status" : "'.$obj['deliver_status'].'", "deliver_msg" : "'.$obj['deliver_msg'].'", "app_signature" : "'.$app_signature.'", "sign_method" : "sha1" }'; $url = "https://api.weixin.qq.com/pay/delivernotify?access_token=".$access_token; $result = https_request($url, $jsonmenu); var_dump($result); function https_request($url, $data = null){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)){ curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); curl_close($curl); return $output; } Nach dem Login kopieren | ||||||||||||||||||||
deliver_timestamp | Lieferzeitstempel, bezieht sich hier auf den Linux-Zeitstempel; | ||||||||||||||||||||
deliver_status | < p style="text-align:left;">Lieferstatus, 1 zeigt Erfolg an, 0 zeigt Fehler an. Wenn ein Fehler auftritt, muss der Grund für den Fehler in Delivery_msg ausgefüllt werden tr>< td width="137"> deliver_msg | Senden Im Falle eines Fehlers können Sie eine UTF8-codierte Fehlermeldung eingeben, z. B. „Dieses Produkt wurde erstattet“; | |||||||||||||||||||
< p style="text-align:left;">app_signature | Entsprechend der Generierung der Zahlungssignatur (paySign). Methode Die von der genannten Signaturmethode generierten beteiligten Signaturfelder sind: appid, appkey, openid, transid, out_trade_no, Deliver_timestamp, Deliver_Status, Deliver_msg; | ||||||||||||||||||||
sign_method | Signature-Methode (nicht berücksichtigt Signaturgenerierung ; Nach der Prüfung auf OK werden Daten zurückgegeben, die angeben, ob die Benachrichtigung erfolgreich war, zum Beispiel: {"errcode":0,"errmsg": "ok"} Wenn eine Ausnahme vorliegt, wird diese in errcode und beschrieben errmsg. Bei Erfolg ist der Fehlercode 0. string(27) "{"errcode":0,"errmsg":"ok"}" Nach dem Login kopieren
2. Programmimplementierung
Verwandte Etiketten:
Quelle:php.cn
Vorheriger Artikel:Verwendung von Delphi+intraweb für die WeChat-Nachrichtenverarbeitung
Nächster Artikel:Der gesamte Prozess der WeChat-Zahlungsentwicklung für öffentliche Konten
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Aktuelle Ausgaben
verwandte Themen
Mehr>
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
|