小編給大家分享一下微信支付開發(fā)之如何實現(xiàn)訂單查詢,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

站在用戶的角度思考問題,與客戶深入溝通,找到義烏網(wǎng)站設(shè)計與義烏網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、空間域名、雅安服務器托管、企業(yè)郵箱。業(yè)務覆蓋義烏地區(qū)。
一、訂單查詢
因為某一方技術(shù)的原因,可能導致商戶在預期時間內(nèi)都收不到最終支付通知,此時商戶可以通過該API來查詢訂單的詳細支付狀態(tài)。
訂單查詢API的URL為:
https://api.weixin.qq.com/pay/orderquery?access_token=xxxxxx
URL中的參數(shù)只包含目前微信公眾平臺憑證access_token,而訂單查詢的真正數(shù)據(jù)是放在PostData中的,格式如下:
{
"appid" : "wwwwb4f85f3a797777",
"package" : "out_trade_no=11122&partner=1900090055&sign=4e8d0df3da0c3d0df38f",
"timestamp" : "1369745073",
"app_signature" : "53cca9d47b883bd4a5c85a9300df3da0cb48565c",
"sign_method" : "sha1"}上述內(nèi)容參數(shù)說明如表所示。
參數(shù) | 說明 |
appid | 公眾平臺賬戶的AppId; |
package | 查詢訂單的關(guān)鍵信息數(shù)據(jù),包含第三方唯一訂單號out_trade_no、財付通商戶身仹標識partner(即前文所述的partnerid)、簽名sign,其中sign是對參數(shù)字典序排序并使用&聯(lián)合起來,最后加上&key=partnerkey(唯一分配),進行md5運算,再轉(zhuǎn)成全大寫,最終得到sign |
timestamp | linux時間戳; |
app_signature | 根據(jù)支付簽名(paySign)生成方法中所講的簽名方式生成的,參加簽名字段為:appid、appkey、package、timestamp; |
sign_method | 簽名方法(不計入簽名生成); |
這個很容易,參考微信公眾平臺開發(fā)(26) ACCESS TOKEN
代碼如下:
$appid = "wx0000000000000000"; $appsecret = "e76050733c695748537fc4d4c21d0e2c"; $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. 參數(shù)生成
appid: 直接賦值
timestamp:程序直接獲取
$timestamp = time();
sign_method:這里為sha1
難點1:package 值的獲得
先要獲得sign
sign是out_trade_no,partner,key(partnerkey)三項信息的字典序排序,再MD5運算,再轉(zhuǎn)為大寫
$sign= strtoupper(md5("out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&key=ebf5cf381de2d716d432bfda34fa9e57"));package 是查詢訂單的關(guān)鍵信息數(shù)據(jù),包含第三方唯一訂單號 out_trade_no、財付通商戶身仹標識 partner(即前文所述的 partnerid) 、簽名 sign
$package = "out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&sign=".$sign;
難點2:獲得app_signature
app_signature 依然是根據(jù)支付簽名(paySign)生成方法中所講的簽名方式生成的,參加簽名字段為:appid、appkey、package、timestamp;
$obj['appid'] = "wx0000000000000000"; $obj['appkey'] = "8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6k"; $obj['package'] = $package; $obj['timestamp'] = $timestamp; $WxPayHelper->get_biz_sign($obj);
這樣各項參數(shù)都獲得了
$jsonmenu = '{
"appid" : "wx0000000000000000",
"package" : "'.$package.'",
"timestamp" : "'.$timestamp.'",
"app_signature" : "'.$app_signature.'",
"sign_method" : "sha1"
}
';
$url = "https://api.weixin.qq.com/pay/orderquery?access_token=".$access_token;
$result = https_request($url, $jsonmenu);
var_dump($result);完整代碼如下所示:
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.準備參數(shù)
$timestamp = time();
$sign= strtoupper(md5("out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&key=asdfasdfasdfasdfasdfasdfasdfasdf"));
$package = "out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&sign=".$sign;
//2.1構(gòu)造最麻煩的app_signature
$obj['appid'] = "wx0000000000000000";
$obj['appkey'] = "8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6k";
$obj['package'] = $package;
$obj['timestamp'] = $timestamp;
$WxPayHelper = new WxPayHelper();
//get_biz_sign函數(shù)受保護,需要先取消一下,否則會報錯
$app_signature = $WxPayHelper->get_biz_sign($obj);
//3. 將構(gòu)造的json提交給微信服務器,查詢
$jsonmenu = '
{
"appid" : "wx0000000000000000",
"package" : "'.$package.'",
"timestamp" : "'.$timestamp.'",
"app_signature" : "'.$app_signature.'",
"sign_method" : "sha1"
}
';
$url = "https://api.weixin.qq.com/pay/orderquery?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;
}上述程序執(zhí)行后,獲得訂單結(jié)果如下
{
"errcode": 0,
"errmsg": "ok",
"order_info": {
"ret_code": 0,
"ret_msg": "",
"input_charset": "GBK",
"trade_state": "0",
"trade_mode": "1",
"partner": "1234567890",
"bank_type": "CMB_FP",
"bank_billno": "201405273540085997",
"total_fee": "1",
"fee_type": "1",
"transaction_id": "1218614901201405273313473135",
"out_trade_no": "JfuKdiBig4zZnE4n",
"is_split": "false",
"is_refund": "false",
"attach": "",
"time_end": "20140527194139",
"transport_fee": "0",
"product_fee": "1",
"discount": "0",
"rmb_total_fee": ""
}
}各個字段的含義如表所示。
參數(shù) | 說明 |
ret_code | 查詢結(jié)果狀態(tài)碼,0表明成功,其他表明錯誤; |
ret_msg | 查詢結(jié)果出錯信息; |
input_charset | 返回信息中的編碼方式; |
trade_state | 訂單狀態(tài),0為成功,其他為失敗; |
trade_mode | 交易模式,1為即時到帳,其他保留; |
partner | 財付通商戶號,即前文的partnerid; |
bank_type | 銀行類型; |
bank_billno | 銀行訂單號; |
total_fee | 總金額,單位為分; |
fee_type | 幣種,1為人民幣; |
transaction_id | 財付通訂單號; |
out_trade_no | 第三方訂單號; |
is_split | 是否分賬,false為無分賬,true為有分賬; |
is_refund | 是否退款,false為無退款,ture為退款; |
attach | 商戶數(shù)據(jù)包,即生成訂單package時商戶填入的attach; |
time_end | 支付完成時間; |
transport_fee | 物流費用,單位為分; |
product_fee | 物品費用,單位為分; |
discount | 折扣價格,單位為分; |
rmb_total_fee | 換算成人民幣之后的總金額,單位為分,一般看total_fee即可。 |
如果程序有誤,會在errcode和errmsg描述出來。
以上是“微信支付開發(fā)之如何實現(xiàn)訂單查詢”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文名稱:微信支付開發(fā)之如何實現(xiàn)訂單查詢
標題URL:http://chinadenli.net/article12/jigggc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、小程序開發(fā)、企業(yè)建站、品牌網(wǎng)站設(shè)計、企業(yè)網(wǎng)站制作、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)