聚合支付里各扫码支付的返回报文样例
词典:qrcode-二维码(quick response code)。二维码绝对是互联网的创新,也带动了科技的进步。不需要任何实体介质,只需要通过手机扫码即可完成人机交互。微信又带动了网络社交潮流,加上各家电商购物的不断崛起,移动支付应运而生。
对于扫码支付来说,支付服务商返回的就是一个付款码地址,即qrcode的url。
qq扫码返回url:
https://myun.tenpay.com/mqq/pay/qrcode.html?_wv=1027&_bid=2183&t=6V1118c62c2a8a9679cfafa84b9567ba
支付宝扫码返回url:
https://qr.alipay.com/bax06084wth0qnixjrfu803c
微信扫码返回url:
微信扫码支付(Native支付)官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_7_0.shtml
weixin://wxpay/bizpayurl?pr=4vyvMOx
如果对接三方支付通道的微信支付扫码接口,则返回的可能是三方包装的支付url。下面以联动优势微信扫码支付为例,这个url得到的二维码同样可以使用微信“扫一扫”完成支付:
http://pay.soopay.net/spay/pay/payservice.do?service=publicnumber_and_verticalcode&weChatPayType=true&mer_id=51182&order_id=2206270371590005&mer_date=20220627
微信公众号支付 返回的报文:>more
<xml> <appid><![CDATA[wx290ce4878c94369d]]></appid> <charset><![CDATA[UTF-8]]></charset> <mch_id><![CDATA[102540884712]]></mch_id> <nonce_str><![CDATA[D2B6428E-322B-4002-B8D5-E54019B7]]></nonce_str> <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> <result_code><![CDATA[0]]></result_code> <sign><![CDATA[C0E37C1E9805033B6A6C6227A20FE150]]></sign> <sign_type><![CDATA[MD5]]></sign_type> <status><![CDATA[0]]></status> <token_id><![CDATA[289caaf3d0fcde3b353c300820e173f18]]></token_id> <version><![CDATA[2.0]]></version> </xml>
公众号支付详解,分原生形式和封装形式。封装形式是指将浏览器从原支付页跳转到渠道封装好的一个微信支付页面,这个页面调起微信支付控件,使用这种方式的话不需要传递openid参数。当然,我们作为聚合支付服务提供方,那自然是对接原生形式了。原生形式是将响应报文里的pay_info输出到原支付页面的js变量里,利用 WeixinJSBridge.invoke函数,调起微信支付控件。
onApiSuccess = function () { if (typeof WeixinJSBridge == "undefined") return;var options =<%=pay_info%>; WeixinJSBridge.invoke('getBrandWCPayRequest', options, function (res) {if (res.err_msg == "get_brand_wcpay_request:ok") { var callbackUrl = '<%=redirect_url%>'; if (callbackUrl && callbackUrl.length > 0) { location.href = callbackUrl; } } }); }
微信h5:>log
北京中信2微信H5支付请求报文: <xml> <appid>a20180112001223557</appid> <mch_id>m20180112001223557</mch_id> <method>mbupay.wxpay.mweb</method> <sign>158B0D999A890C549BEDBAFABCF39BB3</sign> <version>2.0.1</version> <nonce_str>0a1708e1df6b4e67b354864dd4895862</nonce_str> <body>2018012724270004/9001001899</body> <out_trade_no>DD2018012700134938</out_trade_no> <total_fee>20000</total_fee> <spbill_create_ip>123.151.148.57</spbill_create_ip> <notify_url>http://pcenter.shenbianhui.cn/PayAndRefund/3rdCallback.ashx/Pay/BeijingCitic2/</notify_url> </xml> 响应报文: <xml> <sign><![CDATA[F989944C16E066D7471E518EE258CDCA]]></sign> <result_code><![CDATA[SUCCESS]]></result_code> <mch_id><![CDATA[m20180112001223557]]></mch_id> <prepay_id><![CDATA[wx2018012703001272fa37d02d0549943455]]></prepay_id> <return_msg><![CDATA[OK]]></return_msg> <sign_type><![CDATA[MD5]]></sign_type> <appid><![CDATA[a20180112001223557]]></appid> <charset><![CDATA[UTF-8]]></charset> <nonce_str><![CDATA[yEJ5U419XuvM4Bu3]]></nonce_str> <return_code><![CDATA[SUCCESS]]></return_code> <mweb_url><![CDATA[https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2018012703001272fa37d02d0549943455&package=3016512628]]></mweb_url> <version><![CDATA[2.0.1]]></version> </xml>
浏览器重定向到mweb_url,会调起微信客户端及支付控件。
微信h5支付官方文档 https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_1
结束
当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/buguge/p/9356214.html