본 글에서는 위챗 결제의 배송 알림 기능 구현을 소개합니다.
주문 상태를 더 잘 추적하려면 최종 결제 알림을 받은 후 제3자가 배송 알림 API를 호출하여 WeChat에 알려야 합니다. . 백그라운드의 주문 배송 상태입니다.
배송 시간 제한: 가상 및 서비스 상품의 경우 24시간 이내, 실제 상품의 경우 72시간 이내입니다.
결제 알림을 받은 후 상품을 정시에 배송하고 배송 알림 인터페이스를 사용하여 관련 정보를 WeChat 백엔드에 동기화하세요. 플랫폼이 지정된 시간 내에 이를 받지 못하면 초과 배송으로 처리됩니다.
배달 알림 API의 URL은 다음과 같습니다.
https://api.weixin.qq.com/pay/delivernotify?access_token=xxxxxx
URL에는 현재 WeChat 공개 플랫폼 자격 증명 access_token만 포함되어 있으며 배송 알림의 실제 데이터는 PostData에 배치됩니다.
{ "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" }
위 콘텐츠 매개 변수에 대한 설명은 표 6에 나와 있습니다. -12.
매개변수 | 설명 | ||||||||||||||||||||
appid | 공개 플랫폼 계정 AppId ; | ||||||||||||||||||||
openid | 최종 결제 결과 알림 PostData에 배치된 구매 사용자의 OpenId; | ||||||||||||||||||||
거래 주문 번호; | |||||||||||||||||||||
out_trade_no | 타사 주문 번호; | ||||||||||||||||||||
deliver_timestamp | 배달 타임스탬프, 여기서는 Linux 타임스탬프를 나타냅니다. | ||||||||||||||||||||
배송_상태 | < p style="text-align:left;">배송 상태, 1은 성공, 0은 실패를 의미합니다. | 보내기 실패 시 "이 제품은 환불되었습니다"와 같은 UTF8 인코딩 오류 메시지를 작성할 수 있습니다. | |||||||||||||||||||
< p style="text-align:left;">app_signature | 결제 서명(paySign) 생성에 따라 method 언급된 서명 방법에 의해 생성된 참여 서명 필드는 다음과 같습니다: appid, appkey, openid, transid, out_trade_no, Deliver_timestamp, Deliver_status, Deliver_msg | ||||||||||||||||||||
sign_method | 서명 방법(계산되지 않음) 서명 생성 ; ok를 확인한 후 알림 성공 여부를 나타내는 데이터가 반환됩니다. 예: {"errcode":0,"errmsg":"ok"} 예외가 있는 경우 errcode 및 errmsg. 성공하면 errcode는 0이 됩니다.
2. 프로그램 구현 <🎜>프로그램의 일부 매개변수는 이 블로그 앞부분의 WeChat 결제 개발 데이터에서 가져왔습니다. 독자 여러분은 실행 <🎜><🎜><🎜><?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; } 로그인 후 복사 string(27) "{"errcode":0,"errmsg":"ok"}" 로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
최신 이슈
페이지가 갑자기 CSS나 부트스트랩을 가져올 수 없습니다.
그래서 저는 페이지를 개발 중입니다. 어제 일부 작업을 했는데 잘 작동했고, 오늘은 나머지 작업을 계속했는데 모든 것이 괜찮습니다. 일반 HTML 페이지로 열려고...
에서 2024-04-06 21:58:04
0
1
800
웹 애플리케이션에 버전 정보를 표시하는 모범 사례는 무엇입니까?
웹 애플리케이션을 개발 중입니다. 웹 애플리케이션에 버전 정보를 표시하는 모범 사례는 무엇입니까? 저는 semantic versioning을 사용하고 있고 이미 ...
에서 2024-04-06 19:13:16
0
2
476
Vue3 웹 구성요소 프로덕션 빌드 문제 해결
vue2web 구성요소를 vue3으로 마이그레이션하려고 하는데 프로덕션용 빌드를 생성할 때 문제가 발생합니다. --targetwc와 함께 vue-cli를 사용하고...
에서 2024-04-06 12:43:37
0
1
473
관련 주제
더>
|