支付(前端流程)及遇到的坑
⽀付(前端流程)及遇到的坑
⽀付中的⽀付在上线中出了问题,反思了下原因:立秋发朋友圈的句子
1.测试时因为不能在测试环境⽀付,所以就没有测试,⾃⼰也没有再去验证。(即使是⽆法测试环境测的,没有把握也还是要⾃⼰测⼀遍,
最起码代码要全,流程假数据能⾛通)
2.⽀付分普通浏览器⽀付和浏览器调起⽀付。其中浏览器调起⽀付会⽐较⿇烦
3.浏览器调起⽀付需要商户配置允许的⽀付链接,否则会提⽰⽀付的链接⽆效。———————————————————————————————————————
下⾯就是如何进⾏的⽀付夏天冰箱调到几档最合适
可参考的⽀付的官⽹⽂档链接
1. ⾸先要在商户平台()上配⽀付的链接,否则在实际操作中,最后⽀付时提⽰“当前页⾯的ULR未注册”。
2. ⽀付时,接⼝中要求传⽤户openid,⽽获取openid则需要在公众平台设置获取openid的域名,只有被设置过的域名才是⼀个有效的
获取openid的域名,否则将获取失败。(这也是为什么测试环境⽆法测试的原因,因为域名不同)如何进入路由器设置界面
3. 对于前端来说,⾸先页⾯要做的第⼀步分辨是否是浏览器还是普通浏览器
if(navigator.userAgent.indexOf("MicroMessenger")>-1){//浏览器
terminalType=3;
}else if(/Android|webOS|iPhone|iPod|st(navigator.userAgent)) {//普通浏览器
terminalType=2;
}
4.  当发现是浏览器后区分是IOS还是安卓⼿机,分别请求不同的链接(相当于调⽤接⼝)
if (navigator.userAgent.indexOf("MicroMessenger") > -1) { //浏览器
if (!!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) { //ios
window.location.href = "open.weixin.qq/connect/oauth2/authorize?appid=xxxxxxxxx&redirect_uri=执⾏⽀付页⾯.html&response_type    } else {//安卓⼿机
window.location.href = "open.weixin.qq/connect/oauth2/authorize?appid=xxxxxxxxx&redirect_uri=执⾏⽀付页⾯.html%0A&response_    }
}
这⾥其实我没懂为什么区分IOS还是安卓,上⽹看的案例没有区分安卓还是IOS,但是之前的是这么写的,⽽且这样确实可以成功,所以还是照着之前的逻辑没有动。
这个链接其实是个Get⽅法请求的接⼝。关于这个链接(接⼝)的相关配置参数可以参考这个链接
这个链接⾥有code参数,利⽤⼀个函数getQueryString得到,(注意:获得的参数不包括state=123部分哦)
code = getQueryString("code");
//获得url参数
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return null;
}
6.对于我就是前台传包括code的⼀些参数给后台。对于后台,把code传进去获得返回值
String url = "api.weixin.qq/sns/oauth2/access_token?appid="+ WECHAT_ACCOUNT_APPID +"&secret="+WECHAT_ACCOUNT_SECRET + "&c 7.前端获得后端返回值后,得到appid,timeStamp,noceStr,package,paySign这⼏个参数,进⾏判断,执⾏以下代码
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
公共事业管理就业方向}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
}else{
onBridgeReady(appid,timeStamp,nonceStr,package,paySign);
}
onBridgeReady: function(appId, timeStamp, nonceStr, package, paySign) {
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": appId, //名称,由商户传⼊
"timeStamp": timeStamp, //时间戳,⾃1970年以来的秒数
"nonceStr": nonceStr, //随机串
"package": package,
"signType": "MD5", //签名⽅式:
"paySign": paySign //签名
哥特式建筑的代表作是},
function(res) {
if (_msg == "get_brand_wcpay_request:ok") {
// 使⽤以上⽅式判断前端返回,团队郑重提⽰:
//_msg将在⽤户⽀付成功后返回ok,但并不保证它绝对可靠。
萱草花歌词
window.location.href = "⽀付成功跳转页⾯";
}
}
);
}
其中碰到的问题
1.⾃测的时候,想页⾯调试,但是浏览器的链接⽆法在电脑打开。就是下⾯的这个链接
2.在开发者⼯具⾥模拟⽀付时,最后 WeixinJSBridge.invoke会报错:chooseWXPay:fail, the permission value is offline
verifying,但是实际上⽤真机的时候可以调通。
<script src="pv.sohu/cityjson?ie=utf-8"></script>
cip = returnCitySN.cip;
但在实际线上环境⾥会报错,因为我们的域名是https,在https⾥引⼊http现在被判断为不合法,[ HTTPS页⾯⾥动态的引⼊HTTP资源,⽐如引⼊⼀个js⽂件,会被直接block掉的。在HTTPS页⾯⾥通过AJAX的⽅式请求HTTP资源,也会被直接block掉的。]
⽹上有的解决⽅法是引⼊⽅式改为:
<script src="//pv.sohu/cityjson?ie=utf-8"></script>
不过在实际的⼿机上可以正常运⾏。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。