微信公众号支付报文示例

摘要:
之前的一篇文章已经详细介绍了微信公众号支付,这篇文章分析一下微信公众号支付交易的数据报文。pay_info里包含了支付所需的js信息token_id用于封装形式。微信官方开发者文档里“统一下单”接口,对于公众号支付请求时,返回值即包含prepay_id,然后商户端通过对prepay_id、appid等参数加上支付密钥生成paySign。

之前的一篇文章已经详细介绍了微信公众号支付(微信公众号支付(JSAPI)对接备忘),这篇文章分析一下微信公众号支付交易的数据报文。

请求报文:

1 <xml>
2   <body><![CDATA[狄克酸奶店]]></body>
3   <callback_url><![CDATA[http://eyoukeapp.emaxcard.com/emax-travel-web/callback/paySuccess/6267964708862559233/1/0]]></callback_url>
4   <is_raw><![CDATA[1]]></is_raw>
5   <mch_create_ip><![CDATA[223.104.3.130]]></mch_create_ip>
6   <mch_id><![CDATA[102540884712]]></mch_id>
7   <nonce_str><![CDATA[D2B6428E-322B-4002-B8D5-E54019B7]]></nonce_str>
8   <notify_url><![CDATA[http://pcenter.shenbianhui.cn/QingdaoCitic/PayNotify.ashx]]></notify_url>
9   <out_trade_no><![CDATA[KB2017051000000140]]></out_trade_no>
10   <service><![CDATA[pay.weixin.jspay]]></service>
11   <sub_openid><![CDATA[o48_Ct5YigM7JDZ6x3Havr4kgzQQ]]></sub_openid>
12   <total_fee><![CDATA[1]]></total_fee>
13   <sign><![CDATA[90DD990BB86255B4D7237877070103D3]]></sign>
14 </xml>

响应报文:

1 <xml> 
2   <appid><![CDATA[wx290ce4878c94369d]]></appid>  
3   <charset><![CDATA[UTF-8]]></charset>  
4   <mch_id><![CDATA[102540884712]]></mch_id>  
5   <nonce_str><![CDATA[D2B6428E-322B-4002-B8D5-E54019B7]]></nonce_str>  
6   <pay_info><![CDATA[{"appId":"wx290ce4878c94369d","timeStamp":"1494399370652","status":"0","signType":"MD5","package":"prepay_id=wx201705101456106519a1fec60778026692","callback_url":"http://eyoukeapp.emaxcard.com/emax-travel-web/callback/paySuccess/6267964708862559233/1/0","nonceStr":"1494399370652","paySign":"557EFEB8F947AF4B56D09CF4E0903C8E"}]]></pay_info>  
7   <result_code><![CDATA[0]]></result_code>  
8   <sign><![CDATA[C0E37C1E9805033B6A6C6227A20FE150]]></sign>  
9   <sign_type><![CDATA[MD5]]></sign_type>  
10   <status><![CDATA[0]]></status>  
11   <token_id><![CDATA[289caaf3d0fcde3b353c300820e173f18]]></token_id>  
12   <version><![CDATA[2.0]]></version> 
13 </xml>

is_raw取值为1, 返回值会同时有pay_info和token_id

is_raw为1,表示是“原生态js 支付接口”。pay_info里包含了支付所需的js信息

token_id用于封装形式(“公众账号JS 支付接口”)。该请求参数为http queryString,即: https://pay.swiftpass.cn/pay/jspay?token_id=xxx。在服务号中点击这个链接就可调起支付(用户点击页面中的微信支付按钮时实际上就是点击的这个链接,此种方式无需配置支付授权目录,也不用像原生态jsapi 支付那样获取那些参数后续的操作

pay_info里最终要的两个参数是package和paySign。微信官方开发者文档里“统一下单”接口,对于公众号支付(trade_type=JSAPI)请求时,返回值即包含prepay_id,然后商户端通过对prepay_id、appid等参数加上支付密钥生成paySign。详见《签名生成算法

{
    "appId": "wx290ce4878c94369d",
    "timeStamp": "1494399370652",
    "status": "0",
    "signType": "MD5",
    "package": "prepay_id=wx201705101456106519a1fec60778026692",
    "callback_url": "http://eyoukeapp.emaxcard.com/emax-travel-web/callback/paySuccess/6267964708862559233/1/0",
    "nonceStr": "1494399370652",
    "paySign": "557EFEB8F947AF4B56D09CF4E0903C8E"
}

免责声明:文章转载自《微信公众号支付报文示例》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JS编码转换[转载]利用 Postman 中 Tests 断言校验返回结果下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

微信公众号支付

一、微信公众号支付     1、获取微信授权         详情查看微信文档,用户同意授权后, 获取code, 根据code获取access_token, 因为access_token的时效性及安全级别系数比较高,因此我们将code传给后台, 由后台获取到access_token,并获取到用户信息返回。    2.引入微信jssdk      var j...

公众号微信支付流程-(转)

微信支付类型 微信支付实际上有很多种不同的类型,具体要使用哪一种就需要根据不同的应用场景来选择,官方给出的参考例子: 刷卡支付:用户打开微信钱包的刷卡的界面,商户扫码后提交完成支付。 公众号支付:用户在微信内进入商家H5页面,页面内调用JSSDK完成支付 扫码支付:用户打开"微信扫一扫“,扫描商户的二维码后完成支付 APP支付:商户APP中集成微信SD...

微信支付(公众号支付JSAPI)--转载

原文路径:https://blog.csdn.net/javaYouCome/article/details/79473743 写这篇文章的目的有2个,一是自己的项目刚开发完微信支付功能,趁热回个炉温习一下,二也是帮助像我这样对微信支付不熟悉,反复看了多天文档还是一知半解,原理都没摸清,更不要说实现了。本以为网上的微信开发教程会和“java的重写与重载”一...

.NET微信公众号开发-5.0微信支付

一.前言 在开始做这个功能之前,我们要做的第一件事情就是思考,如何做这个微信支付,从哪里开始,从哪里入手,官方的sdk说明什么的,有没有什么官方的demo,还有就是老板给我的一些资料齐全不,那些要申请的接 口什么的都有没有。 经过自己的一些探索,在老板的催促下终于硬着头皮做完了这个,很坑很坑的微信支付,在此做一些总结,希望对你们有所帮助,本人能力有限,如果...