目录
一、微信支付申请
乱七八糟的资料提交和验证,略。
二、微信页面调起微信支付前提准备
- 微信商户平台先去开通
- 设置API密钥,记录好API密钥
三、微信页面调起支付需要在页面注入js
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
四、页面注入微信调用的配置
wx.config({
debug: true,
// 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '<%=Configure.appId %>',
timestamp: timestamp,
nonceStr: nonceStr,
signature: signature,
jsApiList: ['chooseWXPay', 'scanQRCode']
// 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
五、先从统一下单接口获取prepay_id
URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder
xml例:
<xml>
<appid></appid>
<attach>支付测试</attach>
<body>JSAPI支付测试</body>
<mch_id></mch_id>
<detail><![CDATA[{ "goods_detail":[ { "goods_id":"iphone6s_16G", "wxpay_goods_id":"1001", "goods_name":"iPhone6s 16G", "quantity":1, "price":528800, "goods_category":"123456", "body":"苹果手机" }, { "goods_id":"iphone6s_32G", "wxpay_goods_id":"1002", "goods_name":"iPhone6s 32G", "quantity":1, "price":608800, "goods_category":"123789", "body":"苹果手机" } ] }]]></detail>
<nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
<notify_url></notify_url>
<openid></openid>
<out_trade_no>1415659990</out_trade_no>
<spbill_create_ip></spbill_create_ip>
<total_fee>1</total_fee>
<trade_type>JSAPI</trade_type>
<sign>0CB01533B8C1EF103065174F50BCA001</sign>
</xml>
sign加密
所有的参数按照字典排序,以key=value&key=value的格式生成字符串string1
在字符串的最后加上商户的api密钥:
string1 + "&key=***";
最后进行MD5加密,接口数据传输之后能获取到prepay_id
六、微信调起脚本的paySign加密
参与加密的参数:appId,nonceStr,package,signType,timeStamp(这里的S要大写,脚本里面的参数名要小写),key(商户api密钥,接口文档里面没有说到key要参与加密,但是一定要)
所有的参数按照字典顺序排序,以key=value&key=value的格式生成字符串string1
最后进行MD5加密,得到paySign。
到这里,微信页面内调起微信支付成功。