国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

微信支付開發(fā)(5) 訂單查詢

2019-11-15 01:36:51
字體:
供稿:網(wǎng)友
微信支付開發(fā)(5) 訂單查詢

本文介紹微信支付中訂單查詢功能的實現(xiàn)。

作者:方倍工作室

地址:http://www.survivalescaperooms.com/txw1958/p/wxpay-order-query.html

一、訂單查詢

因為某一方技術(shù)的原因,可能導(dǎo)致商戶在預(yù)期時間內(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

簽名方法(不計入簽名生成);

二、實現(xiàn)細節(jié)1. 獲得access token

這個很容易,參考微信公眾平臺開發(fā)(26) ACCESS TOKEN

代碼如下:

1 $appid = "wx0000000000000000";2 $appsecret = "e76050733c695748537fc4d4c21d0e2c";3 $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";4 $result = https_request($url);5 $jsoninfo = json_decode($result, true);6 $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ù)都獲得了

3.提交查詢
$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);

完整代碼如下所示:

 1 include_once("WxPayHelper.php"); 2  3 //1. 獲取access token 4 $appid = "wx0000000000000000"; 5 $appsecret = "e76050733ce76050733ce76050733cdd"; 6 $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; 7 $result = https_request($url); 8 $jsoninfo = json_decode($result, true); 9 $access_token = $jsoninfo["access_token"];10 11 12 //2.準備參數(shù)13 $timestamp = time();14 $sign= strtoupper(md5("out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&key=asdfasdfasdfasdfasdfasdfasdfasdf"));15 $package = "out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&sign=".$sign;16 17 //2.1構(gòu)造最麻煩的app_signature18 $obj['appid']          = "wx0000000000000000";19 $obj['appkey']         = "8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6k";20 $obj['package']        = $package;21 $obj['timestamp']      = $timestamp;22 $WxPayHelper = new WxPayHelper();23 //get_biz_sign函數(shù)受保護,需要先取消一下,否則會報錯24 $app_signature  = $WxPayHelper->get_biz_sign($obj);25 26 //3. 將構(gòu)造的json提交給微信服務(wù)器,查詢27 $jsonmenu = '28 {29  "appid" : "wx0000000000000000",30  "package" : "'.$package.'",31  "timestamp" : "'.$timestamp.'",32  "app_signature" : "'.$app_signature.'",33  "sign_method" : "sha1"34 }35 ';36 37 $url = "https://api.weixin.qq.com/pay/orderquery?access_token=".$access_token;38 $result = https_request($url, $jsonmenu);39 var_dump($result);40 41 function https_request($url, $data = null){42  $curl = curl_init();43  curl_setopt($curl, CURLOPT_URL, $url);44  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);45  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);46  if (!empty($data)){47      curl_setopt($curl, CURLOPT_POST, 1);48      curl_setopt($curl, CURLOPT_POSTFIELDS, $data);49  }50  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);51  $output = curl_exec($curl);52  curl_close($curl);53  return $output;54 }

三、訂單結(jié)果

上述程序執(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",        "

各個字段的含義如表所示。

      <td id="qziqe"></td>

      1. 參數(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

        發(fā)表評論 共有條評論
        用戶名: 密碼:
        驗證碼: 匿名發(fā)表
        主站蜘蛛池模板: 栾川县| 博爱县| 繁昌县| 乐亭县| 洛宁县| 曲周县| 哈尔滨市| 化州市| 扎兰屯市| 永康市| 龙南县| 安溪县| 洛阳市| 永安市| 宝坻区| 年辖:市辖区| 鱼台县| 古田县| 偏关县| 涟水县| 宜章县| 清河县| 灵璧县| 松潘县| 富平县| 滦南县| 泊头市| 井研县| 辉南县| 法库县| 克山县| 辽源市| 宣威市| 建宁县| 华坪县| 松江区| 德化县| 长海县| 宁陕县| 武胜县| 南漳县|