⽀付如何实现内置浏览器的H5页⾯⽀付
因为项⽬需要,要在H5页⾯中加⼊⽀付,所以便去尝试,只想说真的很坑,尤其调试起来不⽅便
这是的官⽅API⽂档
⽀付的准备⼯作
申请,申请开通⽀付,这个很简单,⾃⾏百度
申请好之后在公众平台页⾯的“⽀付”页⾯中的“开发配置”Tab上配置“⽀付授权⽬录”,“测试授权⽬录”,“测试⽩名单”在公众平台页⾯的“开发者中⼼”中到“AppID(应⽤ID)”和“AppSecret(应⽤密钥)”
在商户平台中到⽀付分配的商户号,以及⾃⼰配置⼀个商户⽀付密钥
具体步骤
⾸先通过⽀付的api 获得⽀付⽤的prepay_id,这⾥需要⽤到上⾯提到的“AppID(应⽤ID)”,“AppSecret(应⽤密钥)”,“⽀付分配的商户号”,“商户⽀付密钥”以及其他的⼀些参数(具体参照开发⽂档)⽤MD5加密成签名(第⼀次签名)获得prepay_id后,⽤prepay_id和⼀些其他参数(具体
参照开发⽂档)⽤MD5加密成签名(第⼆次签名)然后在前端通过内置浏览器提供的js API,WeixinJSBridge.invoke来调⽤⽀付的弹出页⾯,这⾥需要⽤到上⾯的第⼆次的签名
具体代码如下
$.get('/xxx',function(data){
if(data && data !== ""){
var _data = $.parseJSON(data)[0];
if(parseInt(_data.userAgent) < 5){
alert('您的版本低于5.0,⽆法使⽤⽀付!');
return false;
}
WeixinJSBridge.invoke('getBrandWCPayRequest',{
'appId': _data.appId,
'timeStamp': _data.timeStamp,
'nonceStr': _Str,
'package': 'prepay_id=' + _data.packageOne,
支付分怎么开通'signType': _data.signType,
'paySign': _data.paySign
},function(res){
_msg === 'get_brand_wcpay_request:ok'){
alert('⽀付成功,返回订单列表!');
}else _msg === 'get_brand_wcpay_request:cancel'){
alert('取消⽀付!');
}
});
}
});
⼏个容易失败点需要注意
⽀付链接和在开发平台配置的链接不匹配
总共需要2次签名,并且所需的参数是不同的,在JS中⽤到的签名是第⼆次签名,不要混淆参数传递的不能有错
如果body中有中⽂需要转义其中还有⼀些问题没有完全解决,就是位置⽀付没有⼀个判断失效的时间,如果在⽀付的弹出层停留时间太久了,可能这个订单在我们⽹站上已经失效了,可在⽀付中仍然能⽀付成功,如果有⾼⼈知道这个问题怎么解决的,希望能告诉解决办法