微信交易单号有什么用?查询明细

微信支付查看交易记录(交易单号)方法选择字号:
IOS、Android系统:
请登陆微信,进入钱包=》右上角“...”=》交易记录=》点击支付信息即可查阅。
winphone系统:
请登陆微信,进入钱包=》右下角的“…”=》交易记录=》点击支付信息即可查阅。
以上信息是否已解决您的问题?
关注微信公众号
关注手Q公众号
社交软件热线3
帐号服务热线6
财付通热线0
支付服务热线95017
目前仅提供以上业务的电话服务,其他产品请在本网站寻求帮助
微信端公众号
QQ端公众号智能手机教程子分类由于微信支付接口更新,本文档已过期,请查看新版微信支付教程。地址&
本文介绍微信支付中订单查询功能的实现。
作者:方倍工作室
一、订单查询
因为某一方技术的原因,可能导致商户在预期时间内都收不到最终支付通知,此时商户可以通过该API来查询订单的详细支付状态。
订单查询API的URL为:
https://api./pay/orderquery?access_token=xxxxxx
URL中的参数只包含目前微信公众平台凭证access_token,而订单查询的真正数据是放在PostData中的,格式如下:
"appid" : "wwwwb4f85f3a797777",
"package" : "out_trade_no=11122&partner=&sign=4e8d0df3da0c3d0df38f",
"timestamp" : "",
"app_signature" : "53cca9d47b883bd4a5c85acb48565c",
"sign_method" : "sha1"
上述内容参数说明如表所示。
公众平台账户的AppId;
查询订单的关键信息数据,包含第三方唯一订单号out_trade_no、财付通商户身仹标识partner(即前文所述的partnerid)、签名sign,其中sign是对参数字典序排序并使用&联合起来,最后加上&key=partnerkey(唯一分配),进行md5运算,再转成全大写,最终得到sign
linux时间戳;
app_signature
根据支付签名(paySign)生成方法中所讲的签名方式生成的,参加签名字段为:appid、appkey、package、timestamp;
sign_method
签名方法(不计入签名生成);
二、实现细节
1. 获得access token
这个很容易,参考
代码如下:
1 $appid = "wx0000";
2 $appsecret = "ed4c21d0e2c";
3 $url = "https://api./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. 参数生成
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=&key=ebf5cf381de2d716d432bfda34fa9e57"));
package 是查询订单的关键信息数据,包含第三方唯一订单号 out_trade_no、财付通商户身仹标识 partner(即前文所述的 partnerid) 、签名 sign
$package = "out_trade_no=JfuKdiBig4zZnE4n&partner=&sign=".$
难点2:获得app_signature
app_signature 依然是根据支付签名(paySign)生成方法中所讲的签名方式生成的,参加签名字段为:appid、appkey、package、timestamp;
$obj['appid']
= "wx0000";
$obj['appkey']
= "8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6k";
$obj['package']
= $package;
$obj['timestamp']
= $timestamp;
$WxPayHelper-&get_biz_sign($obj);
这样各项参数都获得了
3.提交查询
$jsonmenu = '
"appid" : "wx0000",
"package" : "'.$package.'",
"timestamp" : "'.$timestamp.'",
"app_signature" : "'.$app_signature.'",
"sign_method" : "sha1"
$url = "https://api./pay/orderquery?access_token=".$access_token;
$result = https_request($url, $jsonmenu);
var_dump($result);
完整代码如下所示:
1 include_once("WxPayHelper.php");
3 //1. 获取access token
4 $appid = "wx0000";
5 $appsecret = "e050733cdd";
6 $url = "https://api./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"];
12 //2.准备参数
13 $timestamp = time();
14 $sign= strtoupper(md5("out_trade_no=JfuKdiBig4zZnE4n&partner=&key=asdfasdfasdfasdfasdfasdfasdfasdf"));
15 $package = "out_trade_no=JfuKdiBig4zZnE4n&partner=&sign=".$sign;
17 //2.1构造最麻烦的app_signature
18 $obj['appid']
= "wx0000";
19 $obj['appkey']
= "8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6k";
20 $obj['package']
= $package;
21 $obj['timestamp']
= $timestamp;
22 $WxPayHelper = new WxPayHelper();
23 //get_biz_sign函数受保护,需要先取消一下,否则会报错
24 $app_signature
= $WxPayHelper-&get_biz_sign($obj);
26 //3. 将构造的json提交给微信服务器,查询
27 $jsonmenu = '
"appid" : "wx0000",
"package" : "'.$package.'",
"timestamp" : "'.$timestamp.'",
"app_signature" : "'.$app_signature.'",
"sign_method" : "sha1"
37 $url = "https://api./pay/orderquery?access_token=".$access_token;
38 $result = https_request($url, $jsonmenu);
39 var_dump($result);
41 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": "",
"bank_type": "CMB_FP",
"bank_billno": "085997",
"total_fee": "1",
"fee_type": "1",
"transaction_id": "3135",
"out_trade_no": "JfuKdiBig4zZnE4n",
"is_split": "false",
"is_refund": "false",
"attach": "",
"time_end": "39",
"transport_fee": "0",
"product_fee": "1",
"discount": "0",
"rmb_total_fee": ""
各个字段的含义如表所示。
查询结果状态码,0表明成功,其他表明错误;
查询结果出错信息;
input_charset
返回信息中的编码方式;
trade_state
订单状态,0为成功,其他为失败;
trade_mode
交易模式,1为即时到帐,其他保留;
财付通商户号,即前文的partnerid;
银行类型;
bank_billno
银行订单号;
总金额,单位为分;
币种,1为人民币;
transaction_id
财付通订单号;
out_trade_no
第三方订单号;
是否分账,false为无分账,true为有分账;
是否退款,false为无退款,ture为退款;
商户数据包,即生成订单package时商户填入的attach;
支付完成时间;
transport_fee
物流费用,单位为分;
product_fee
物品费用,单位为分;
折扣价格,单位为分;
rmb_total_fee
换算成人民币之后的总金额,单位为分,一般看total_fee即可。
如果程序有误,会在errcode和errmsg描述出来。
====================================================================
方倍工作室微信公众平台账号关注方法:1. 微信通讯录-添加朋友-查找公众号-搜索&方倍工作室&2. 微信通讯录-添加朋友-搜号码-输入&pondbaystudio&3. 使用微信扫描下面的二维码
阅读(...) 评论()智能手机教程子分类7167人阅读
& & & & &关于微信的支付功能,相信不少人用过。谈谈关于微信支付接口的web开发经验吧。
& & & & 首先聊一下:
& & & & & & & & & 服务端签名支付。
& & & & 服务端签名支付,官方给出了server端的实例代码。可以在微信的开发平台下载到。代码结构图如下:
& & & & & 导入项目以后只需要修改的是config.jsp下的参数。
& & & & &&
String spname = &xxxxx&;
String partner = &xxxxxx&;
String partner_key = &xxxxx&;
String app_id=&xxxxx&;
String app_secret = &xxxx&;
String app_key=&xxxxxx&;
//支付完成后的回调处理页面
String notify_url =&http://[ip]:[port]/app-java/payNotifyUrl.jsp&;
//调试模式
boolean DEBUG_ =
& & & & 注意一点。notify_url是外网地址,因为该地址是微信服务器在支付成功以后回调给商户服务器的地址,因此该地址必须是外网可以访问到的地址,其他参数均可以在申请微信支付的时候通过微信获取到。
& & & & &将该项目运行起来以后,手机就可以通过服务端签名的方式调用支付接口了。并且微信支付成功以后,微信服务器可以将成功支付的通知反馈给server端。
关于官网给出的流程图,我们可以看到还需要一个环节:查询账单环节。
& & & & &&
& & 为什么需要查询账单功能呢?由于官方指明说未必保证微信支付成功回调一定能通知到咱们的server服务器。为此我们在没有收到微信支付成功通知的时候得需要自己调用微信的账单查询接口查询支付状态。
& &但是对于账单的支付接口,没有明确的实例代码,只有接口文档说明。那么代码就有我来写一下吧。
& &账单查询首先需要获取access_token
public static String getAccessToken() throws Exception {
String url = &https://api./cgi-bin/token?grant_type=client_credential&appid=&
+ Constants.APP_ID + &&secret=& + Constants.APP_SECRET;
String json = HttpUtils.get(url);
JSONObject jsonObject = JSONObject.fromObject(json);
String accessToken = jsonObject.get(&access_token&).toString();
return accessT
获取账单状态:
public static boolean orderquery(String order) throws Exception {
String access_token = getAccessToken();
String url = &https://api./pay/orderquery?access_token=&
JSONObject jsonObject = new JSONObject();
jsonObject.put(&appid&, Constants.APP_ID);
String timestamp = Long.toString(System.currentTimeMillis() / 1000);
jsonObject.put(&timestamp&, timestamp);
jsonObject.put(&sign_method&, &sha1&);
String packageStr = &&;
String out_trade_no =
String sign = &out_trade_no=& + out_trade_no + &&partner=&
+ Constants.PARTNER + &&key=& + Constants.PARTNER_KEY;
sign = MD5Util.md5(sign);
sign = sign.toUpperCase();
packageStr = &out_trade_no=& + out_trade_no + &&partner=&
+ Constants.PARTNER + &&sign=& +
jsonObject.put(&package&, packageStr);
SortedMap&String, String& prePayParams = new TreeMap&String, String&();
prePayParams.put(&appid&, Constants.APP_ID);
prePayParams.put(&appkey&, Constants.APP_KEY);
prePayParams.put(&package&, packageStr);
prePayParams.put(&timestamp&, timestamp);
// 生成签名
String app_signature = Sha1Util.createSHA1Sign(prePayParams);
jsonObject.put(&app_signature&, app_signature);
String json = HttpUtils.postString(url, jsonObject.toString());
JSONObject mdata = JSONObject.fromObject(json);
String errcode = mdata.get(&errcode&).toString();
if (errcode.equals(&0&)) {
JSONObject order_info = JSONObject.fromObject(mdata.get(
&order_info&).toString());
String ret_code = order_info.get(&ret_code&).toString();
if (ret_code.equals(&0&)) {
补充说明:
代码中的Constans中的变量是定义的微信支付需要的变量,该信息均可在微信开放平台上找到。Sha1Utils类在服务器签名代码中有提供。
关于v3支付接口,我也整理了一下供大家参考:/s/1pJGDqoN
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:65433次
排名:千里之外
原创:12篇
评论:36条
(1)(1)(1)(2)(1)(2)(1)(1)(1)(1)

我要回帖

更多关于 微信交易单号查询系统 的文章

 

随机推荐