千家信息网

微信支付开发之如何实现订单查询

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下微信支付开发之如何实现订单查询,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、订单查询因为某一方技术的
千家信息网最后更新 2026年11月02日微信支付开发之如何实现订单查询

小编给大家分享一下微信支付开发之如何实现订单查询,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、订单查询

因为某一方技术的原因,可能导致商户在预期时间内都收不到最终支付通知,此时商户可以通过该API来查询订单的详细支付状态。

订单查询API的URL为:

https://api.weixin.qq.com/pay/orderquery?access_token=xxxxxx

URL中的参数只包含目前微信公众平台凭证access_token,而订单查询的真正数据是放在PostData中的,格式如下:

{    "appid" : "wwwwb4f85f3a797777",    "package" : "out_trade_no=11122&partner=1900090055&sign=4e8d0df3da0c3d0df38f",    "timestamp" : "1369745073",    "app_signature" : "53cca9d47b883bd4a5c85a9300df3da0cb48565c",    "sign_method" : "sha1"}

上述内容参数说明如表所示。

参数

说明

appid

公众平台账户的AppId;

package

查询订单的关键信息数据,包含第三方唯一订单号out_trade_no、财付通商户身仹标识partner(即前文所述的partnerid)、签名sign,其中sign是对参数字典序排序并使用&联合起来,最后加上&key=partnerkey(唯一分配),进行md5运算,再转成全大写,最终得到sign

timestamp

linux时间戳;

app_signature

根据支付签名(paySign)生成方法中所讲的签名方式生成的,参加签名字段为:appid、appkey、package、timestamp;

sign_method

签名方法(不计入签名生成);

二、实现细节

1. 获得access token

这个很容易,参考微信公众平台开发(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. 参数生成

appid: 直接赋值

timestamp:程序直接获取

$timestamp = time();

sign_method:这里为sha1

难点1:package 值的获得

先要获得sign

sign是out_trade_no,partner,key(partnerkey)三项信息的字典序排序,再MD5运算,再转为大写

$sign= strtoupper(md5("out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&key=ebf5cf381de2d716d432bfda34fa9e57"));

package 是查询订单的关键信息数据,包含第三方唯一订单号 out_trade_no、财付通商户身仹标识 partner(即前文所述的 partnerid) 、签名 sign

$package = "out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&sign=".$sign;

难点2:获得app_signature

app_signature 依然是根据支付签名(paySign)生成方法中所讲的签名方式生成的,参加签名字段为:appid、appkey、package、timestamp;

$obj['appid']          = "wx0000000000000000";$obj['appkey']         = "8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6k";$obj['package']        = $package;$obj['timestamp']      = $timestamp;$WxPayHelper->get_biz_sign($obj);

这样各项参数都获得了

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);

完整代码如下所示:

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.准备参数$timestamp = time();$sign= strtoupper(md5("out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&key=asdfasdfasdfasdfasdfasdfasdfasdf"));$package = "out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&sign=".$sign;//2.1构造最麻烦的app_signature$obj['appid']          = "wx0000000000000000";$obj['appkey']         = "8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6k";$obj['package']        = $package;$obj['timestamp']      = $timestamp;$WxPayHelper = new WxPayHelper();//get_biz_sign函数受保护,需要先取消一下,否则会报错$app_signature  = $WxPayHelper->get_biz_sign($obj);//3. 将构造的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;}

三、订单结果

上述程序执行后,获得订单结果如下

{    "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": ""    }}

各个字段的含义如表所示。

参数

说明

ret_code

查询结果状态码,0表明成功,其他表明错误;

ret_msg

查询结果出错信息;

input_charset

返回信息中的编码方式;

trade_state

订单状态,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

商户数据包,即生成订单package时商户填入的attach;

time_end

支付完成时间;

transport_fee

物流费用,单位为分;

product_fee

物品费用,单位为分;

discount

折扣价格,单位为分;

rmb_total_fee

换算成人民币之后的总金额,单位为分,一般看total_fee即可。

如果程序有误,会在errcode和errmsg描述出来。

以上是"微信支付开发之如何实现订单查询"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

订单 查询 参数 支付 商户 生成 信息 单位 订单号 数据 结果 开发 公众 内容 字段 平台 方式 方法 时间 状态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 宜安科技 互联网金融 新浪科技互联网 齐家互联网科技有限公司 互联网科技大会 互联网科技汛 居家互联网科技有限公司 济南和联互联网科技有限公司 福州新华互联网科技学校 知乎 银川新华互联网科技职业技术培训学校图片 世界互联网科技公司市值排名 河南猎农互联网科技有限公司 崇明区互联网教育科技售后服务 世界互联网领先科技成果获奖 科技赋能视角下互联网保险发展 互联网企业科技类企业如何做账 半导体行业属于互联网高科技类吗 世界互联网科技成果奖 科技互联网行业投资研究 科技发展第三阶段互联网时代 咖啡网 互联网科技图片 迪茉互联网科技 苏州互联网科技贷款公司 恒生科技互联网指数分析 西藏七维空间互联网科技有限公司 银川新华互联网科技学校联系电话 翼展科技 首家互联网医院 互联网时代科技型公司的机会 科技互联网专业务虚会材料
0