Cet article présente la mise en œuvre de la fonction de notification de livraison dans le paiement WeChat.
Afin de mieux suivre l'état de la commande, un tiers doit appeler l'API de notification d'expédition pour informer WeChat après avoir reçu la notification de paiement finale. . Le statut de livraison de la commande en arrière-plan.
Délai de livraison : sous 24 heures pour les produits virtuels et de service, et sous 72 heures pour les produits physiques.
Après avoir reçu la notification de paiement, veuillez livrer les marchandises à temps et utiliser l'interface de notification de livraison pour synchroniser les informations pertinentes avec le backend WeChat. Si la plateforme ne le reçoit pas dans le délai imparti, cela sera traité comme une heure supplémentaire de livraison.
L'URL de l'API de notification de livraison est :
https://api.weixin.qq.com/pay/delivernotify?access_token=xxxxxx
Les paramètres dans le L'URL contient uniquement les informations d'identification actuelles de la plate-forme publique WeChat access_token, et les données réelles de la notification d'expédition sont placées dans PostData, avec le format suivant :
{ "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" }
La description du paramètre de contenu ci-dessus est présentée dans le tableau 6- 12.
Paramètres | Description | ||||||||||||||||||||
appid | Compte de plateforme publique AppId ; | ||||||||||||||||||||
openid | L'OpenId de l'utilisateur acheteur, qui a été placé dans le PostData de la notification du résultat du paiement final ; | ||||||||||||||||||||
Numéro de commande de transaction ; | |||||||||||||||||||||
out_trade_no | Numéro de commande tiers ; <?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; } Copier après la connexion | ||||||||||||||||||||
deliver_timestamp | Horodatage de livraison, fait référence ici à l'horodatage Linux ; | ||||||||||||||||||||
deliver_status | < p style="text-align:left;">Statut de livraison, 1 indique le succès, 0 indique l'échec. Lorsqu'un échec se produit, la raison de l'échec doit être renseignée dans delivery_msg ; tr>< td width="137"> deliver_msg | Envoyer En cas d'échec, vous pouvez remplir un message d'erreur encodé en UTF8, tel que "Ce produit a été remboursé" ; | |||||||||||||||||||
< p style="text-align:left;">app_signature | Selon la génération de signature de paiement (paySign) méthode Générés par la méthode de signature mentionnée, les champs de signature participants sont : appid, appkey, openid, transid, out_trade_no, Deliver_timestamp, Deliver_status, Deliver_msg | ||||||||||||||||||||
sign_method | Méthode de signature (non comptabilisée dans génération de signature ; Après avoir vérifié ok, des données seront renvoyées pour indiquer si la notification a réussi, par exemple : {"errcode":0,"errmsg":"ok"} S'il y a une exception, elle sera décrite dans errcode et errmsg. En cas de succès, le code d'erreur sera 0. string(27) "{"errcode":0,"errmsg":"ok"}" Copier après la connexion
2. Mise en œuvre du programme
Étiquettes associées:
source:php.cn
Article précédent:Utilisation de Delphi intraweb pour le traitement des messages WeChat
Article suivant:L'ensemble du processus de développement des paiements du compte public WeChat
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Derniers numéros
Rubriques connexes
Plus>
|