微信公衆號支付報文示例

以前的一篇文章已經詳細介紹了微信公衆號支付(微信公衆號支付(JSAPI)對接備忘),這篇文章分析一下微信公衆號支付交易的數據報文。php

請求報文:html

 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>

 

響應報文:web

 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信息swift

 

token_id用於封裝形式(「公衆帳號JS 支付接口」)。該請求參數爲http queryString,即: https://pay.swiftpass.cn/pay/jspay?token_id=xxx。在服務號中點擊這個連接就可調起支付(用戶點擊頁面中的微信支付按鈕時實際上就是點擊的這個連接,此種方式無需配置支付受權目錄,也不用像原生態jsapi 支付那樣獲取那些參數後續的操做api

 

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"
}
相關文章
相關標籤/搜索