由于支付宝返回的payurl太长,无法作为url来生成二维码,所以需要增加一个前端重定向到一个空白页,但是在获取到支付宝的payurl的时候需要将这个空白页面关闭,尝试了很多种办法,最后在支付宝H5的开发文档里面找到这个方法:
基础原理是:在重新回到这个空白页的时候关闭当前页面
document.addEventListener('resume', function(e) {
console.log("resumed");
}, false);
尝试了其他的办法,安卓可以,但是苹果有问题,基础逻辑是苹果手机使用回调,安卓手机使用延时关闭空白页面
load (callback) {
var u = navigator.userAgent, app = navigator.appVersion
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1 // g
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) // ios终端
if (isAndroid) {
console.log('这是安卓手机')
this.redicAndroid()
}
if (isIOS) {
console.log('这是苹果手机,苹果手机需要回调')
callback()
}
},
redic (callback) {
AlipayJSBridge.call('popWindow')
},
redicAndroid () {
console.log('woredicAndroid')
setTimeout(() => {
AlipayJSBridge.call('popWindow')
}, 2000)
},
在这里需要注意的是我还尝试了使用
window.location.replace(this.payUrl)来替代
window.location.href = this.payUrl
但是最后发现,因为支付宝返回的payurl是alipay:开头的,导致replace这个方式并没有实现我想替换调当前界面的目地,(会打开一个新界面)但是一般的http是可以实现的。
网友评论