微信支付返回订单号怎么获取返回的商户订单号

由于微信支付接口更新,本文档已过期,请查看新版微信支付教程。地址&
本文介绍微信支付中订单查询功能的实现。
作者:方倍工作室
一、订单查询
因为某一方技术的原因,可能导致商户在预期时间内都收不到最终支付通知,此时商户可以通过该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. 使用微信扫描下面的二维码
阅读(...) 评论()微信支付商户发放现金红包操作说明 - 为程序员服务
微信支付商户发放现金红包操作说明
28979 阅读
一、 现金红包简介
微信红包,2014年春节一经推出即受到广大用户好评,引发全民抢红包热潮。现将微信红包打造成“现金红包”,成为一款定向资金发放的营销工具,供商户使用.
二、 什么商户有资格申请
只要您开通了微信支付,并使用新支付接口开发(公众号支付、刷卡支付),都可以使用现金红包,无需申请
备注:新支付接口开发使用MCHID、支付密钥,不再使用Paysignkey
三、 发放方式介绍
商户发放现金红包有3种发放方式:
商户根据文档“【商户平台】现金红包API文档V2”进行开发,一次调用可以给一个指定用户发送一个指定金额的红包,满足多元化的运营需求
通过上传openid文件发放
收集要发送红包对象的openid,将openid编辑成txt文件,登录微信支付商户平台,使用上传文件功能发放。一份文件对应一个红包模板,便于管理。
获取openid参见微信公众平台开发者文档:
配置营销规则“满额送”发放
商户可以在商户平台配置自助规则:用户使用微信支付发生交易满足一定条件,立送现金红包
四、 税务和发票问题
商户给用户发红包,资金最终进入用户零钱,微信支付并未从中收取资金作为营收,所以不予开具发票,请您理解。发放现金红包请您遵照国家法律依法纳税,在您充值之前,我们默认您已经合法上税,您使用本功能的行为若涉及纳税或代扣代缴税款的义务,由您自行承担该义务,在您充值之前,微信支付默认您已经合法上税,腾讯公司不会替您缴纳税款,请您知晓
五、 接口发放现金红包详细介绍
1、 接口文档
接口文档详见
1) 现金红包接口之前已经推出过一版接口,由于接口升级,旧接口不再维护
2) 旧接口需要商户开通财付通的充值功能并签订委托代扣协议,登录财付通商户平台进行充值,新接口完全开放,无需这些手续
2、 接口限制以及调整办法
接口有发送频率、金额、发送时间的限制:
普通限制(默认配置无需申请)
高级限制(达到标准的商户可发邮件申请)
每分钟上限1800个红包
每分钟上限5000个红包
一个红包金额在1~200元之间
一个红包金额在1~4999元之间
北京时间早上0点~8点不发放
如果您活动总金额大于100W元/月,可以申请高级限制,请按照下述邮件格式发邮件申请:
收件人:v_
主题:xx(商户名)申请调高现金红包接口限制
1、 商户号:
2、 活动形式/规则:
3、 活动时间(过期将回退至普通限制):
4、 活动总金额:
5、 申请提高何种限制(发送频率、金额、发送时间,可多选):
6、 预估峰值每分钟发放次数:
7、 预估峰值每日发放次数:
8、 红包金额需要调整至:
3、 具体操作步骤
1) 登录微信支付商户平台
在调用接口前有一些工作需要商户登录微信支付商户平台进行操作,请使用微信支付商户号和密码登录
微信支付商户平台地址为pay.。微信支付商户号会在商户申请微信支付成功后,通过开户邮件发送给您。
请不要使用微信公众平台账号或者appid登录。如果您登录时遇到问题,请联系微信支付小助手
2) 下载证书并设置密钥
调用微信红包接口时,服务器会进行证书验证:验证调用接口的商户号(字段:mch_id)的证书和密钥,请在商户平台下载证书并设置密钥
3) 给商户号进行充值
发放现金红包将扣除商户的可用余额,请注意,可用余额并不是微信支付交易额,需要预先充值,确保可用余额充足。登录微信支付商户平台,进入“资金管理”菜单,可以查看可用余额、充值、或者提现
充值和提现相关帮助请参见
/menu/5699_1.html
4) 根据文档进行开发
请您仔细阅读接口文档,参照文档进行开发,请注意,为了保证商户资金安全,接口强校验商户号与appid之间的绑定关系,以及appid与openid之间的对应关系
如果商户号与appid之间没有绑定关系,即appid没有申请微信支付或者申 请微信支付商户号不匹配,或者openid归属appid错误,接口会返回报错
登录商户平台,可下载资金明细表用于对账
“资金管理-资金信息“,将入账类型筛选为现金红包扣款或现金红包退款
现金红包扣款:每发一笔红包,会产生一次扣款记录
现金红包退款:用户三日未领取,已扣款的钱会退回到商户号中
六、 商户平台上传文件发放现金红包功能 详细操作流程
1、 登录微信支付商户平台
在调用接口前有一些工作需要商户登录微信支付商户平台进行操作,请使用微信支付商户号和密码登录
2、 给商户号进行充值
发放现金红包将扣除商户的可用余额,请注意,可用余额并不是微信支付交易额,需要预先充值,确保可用余额充足。登录微信支付商户平台,进入“资金管理”菜单,可以查看可用余额、充值、或者提现
3、 创建红包模板
菜单“现金红包-创建红包”中,创建红包模板,一份openid文件对应一个红包模板
1) 第一步:选择红包类型,支持固定金额红包和随机金额
2) 第二步配置红包消息,自定义红包消息以及红包页面的文案
3) 第三步:配置红包内信息,自定义更多文案
具体各字段对应内容,请见如下图:
4、 (可选步骤)配置审核任务
1) 进入菜单“审核管理-审核配置”中,点击“现金红包发放审核”右侧的修改
2) 进入详情页添加审核步骤,审核时,当配置的所有审核步骤都通过时才算审核通过
3) 提交后,再次进入“审核管理-审核配置”的列表页,点击“现金红包发放审核”右侧的启用
5、 发放红包——上传openid文件以及审核
1) 上传文件:进入菜单“现金红包-管理红包”中,选择配置好的红包模板,点击详情,进入红包详情页,点击发放红包,上传openid文件后点击确定。
如果开启了审核,上传文件后不会立刻进行发放,等待审核通过会立刻开始发放,如果未开启审核,上传文件后立刻进行发放。
2) 校验:为了保证商户资金安全,微信支付强校验商户号与appid之间的绑定关系,以及appid与openid之间的对应关系(如果商户号与appid之间没有绑定关系,即appid没有申请微信支付或者申请微信支付商户号不匹配,或者openid归属appid错误,都会报错)
3) (若开启了审核)通过审核开始发放:审核人登录微信支付商户平台,进入菜单“审核管理-审核任务-待处理”通过审核后立刻开始发放
6、 查看发放记录以及对账
1) 查看发放失败名单列表:进入红包详情页,找到发放记录中对应文件,下载失败名单
2) 下载资金明细用于对账
“资金管理-资金信息“,将入账类型筛选为现金红包扣款或现金红包退款
现金红包扣款:每发一笔红包,会产生一次扣款记录,如上传文件一份2000个openid那么会有2000条记录
现金红包退款:用户三日未领取,已扣款的钱会退回到商户号中
七、 商户平台营销 详细操作流程
支付满足一定金额赠送红包,如满100赠送10元现金红包。可以登录商户平台自助配置
1、 登录微信支付商户平台
在调用接口前有一些工作需要商户登录微信支付商户平台进行操作,请使用微信支付商户号和密码登录
2、 给商户号进行充值
发放现金红包将扣除商户的可用余额,请注意,可用余额并不是微信支付交易额,需要预先充值,确保可用余额充足。登录微信支付商户平台,进入“资金管理”菜单,可以查看可用余额、充值、或者提现
3、 创建红包模板
菜单“现金红包-创建红包”中,创建红包模板
4) 第一步:选择红包类型,支持固定金额红包和随机金额
5) 第二步配置红包消息,自定义红包消息以及红包页面的文案
6) 第三步:配置红包内信息,自定义更多文案
4、 进入“营销规则-配置规则-满额送”按步骤进行配置
5、 下载资金明细用于对账
“资金管理-资金信息“,将入账类型筛选为现金红包扣款或现金红包退款
现金红包扣款:每发一笔红包,会产生一次扣款记录
现金红包退款:用户三日未领取,已扣款的钱会退回到商户号中
原文地址:, 感谢原作者分享。
您可能感兴趣的代码只需一步,快速开始
后使用快捷导航没有帐号?
所属分类: &
1、清楚的描述问题,必要时请配图、代码等!
2、当得到最佳答案时,请务必手动确认最佳答案,增加信用度,以便下次问答时,获得更快速更好的回答!
3、请及时查看问题回复
4、本版为技术问答板块,禁止各种无意义的灌水回复,违者永久封禁账号!
[已解决]微信商户后台限制订单[待买家支付]如何处理
查看: 5038|回复: 10
& 主题帖子积分
新人求带, 积分 55, 距离下一级还需 95 积分
新人求带, 积分 55, 距离下一级还需 95 积分
客户反馈,扫码支付在输入密码后就直接返回首页,没有收到扣款信息,再次扫码输入密码显示不要重复提交订单。然后就无法完成支付。
查看商户后台,提示该订单【待买家支付】,微信文档、帮助中心和百度均查不到相关处理方法。
我应该做些什么,或让客户做些什么,才能正常支付?
& 主题帖子积分
S1, 积分 1022, 距离下一级还需 1978 积分
S1, 积分 1022, 距离下一级还需 1978 积分
是什么平台,自己开发的还是用的第三方
& 主题帖子积分
新人求带, 积分 55, 距离下一级还需 95 积分
新人求带, 积分 55, 距离下一级还需 95 积分
是什么平台,自己开发的还是用的第三方
官方后台是啥意思?不直接用的商户后台嘛?&
& 主题帖子积分
S2, 积分 3038, 距离下一级还需 2962 积分
S2, 积分 3038, 距离下一级还需 2962 积分
是只有少部分用户还是说很多用户有这个问题?
估计就是微信那边的问题,建议让你的客户过一段时间再试,或者重新登录等&
就一个顾客,他下了两单都是这样的情况。我也是第一次见&
& 主题帖子积分
S1, 积分 1022, 距离下一级还需 1978 积分
S1, 积分 1022, 距离下一级还需 1978 积分
什么类型的支付
pc站提供付款二维码,微信扫码支付&
& 主题帖子积分
S2, 积分 3038, 距离下一级还需 2962 积分
S2, 积分 3038, 距离下一级还需 2962 积分
官方后台是啥意思?不直接用的商户后台嘛?
& 主题帖子积分
新人求带, 积分 55, 距离下一级还需 95 积分
新人求带, 积分 55, 距离下一级还需 95 积分
官方后台是啥意思?不直接用的商户后台嘛?
& 主题帖子积分
新人求带, 积分 55, 距离下一级还需 95 积分
新人求带, 积分 55, 距离下一级还需 95 积分
是只有少部分用户还是说很多用户有这个问题?
就一个顾客,他下了两单都是这样的情况。我也是第一次见
不要慌,bug吧,也不一定是你这边的问题,也有可能是客户那边的问题,,我也没碰到过。&
& 主题帖子积分
新人求带, 积分 55, 距离下一级还需 95 积分
新人求带, 积分 55, 距离下一级还需 95 积分
什么类型的支付
pc站提供付款二维码,微信扫码支付
& 主题帖子积分
S1, 积分 1022, 距离下一级还需 1978 积分
S1, 积分 1022, 距离下一级还需 1978 积分
是只有少部分用户还是说很多用户有这个问题?
估计就是微信那边的问题,建议让你的客户过一段时间再试,或者重新登录等
经常反馈社区的各种问题,并提出有效建议
<是专业的第三方微信开发者平台,为生态而生。
本站为第三方微信开发者平台,非腾讯官方网站。
天津市滨海新区中新生态城中成大道生态建设公寓9号楼3层301
欢迎来这里一起喝喝茶,聊聊你的产品。
微信公众号gongzhongkaifa
工作日12小时内回复。
工作日12小时内回复。

我要回帖

更多关于 支付宝同一商户订单号 的文章

 

随机推荐