支付宝转卡飞行模式
前几天某个人突然找我给他研究研究什么支付宝转卡飞行模式。
于是我就找找看看。。最后发现这个飞行模式只是在网页中调用了支付宝原本的H5JS代替了https://www…这样的跳转。
这里现在发出来降低大家的学习成本!也加深各位的技术2333333
这个部分就是核心代码块了
//这里是检测浏览器UI确保是支付宝打开的
if (navigator.userAgent.match(/Alipay/i)) {
//这部分就是检测飞行模式了
var timeer;
var w = 5;
function show() {
w += 10;
var text = w + '%';
if (w >= 100) {
clearInterval(timeer);
timeer = null;
$('#btnTime').css({width: "100%"}).text('立即支付');
$('#btnTime').removeAttr("disabled");
$('#title').text("请打开手机飞行模式以继续!");
return false
}
$('#btnTime').text(text).css({width: text})
}
function start() {
timeer = window.setInterval(show, 50);
}
$('#btnTime').click(function () {
goPay()
});
function goPay() {
ap.getNetworkType(function (res) {
networkAvailable = res.networkAvailable;
if (networkAvailable) {
ap.alert({content: '请打开手机飞行模式后再点击立即支付。若启用飞行模式后没有断开WIFI请先暂时关闭WIFI'})
} else {
layer.confirm('<div style="color:red; font-size:18px">跳转后请关闭飞行模式!<br /><br />跳转后请关闭飞行模式!<br /><br />跳转后请关闭飞行模式!', {
icon: 1,
title: '充值提示',
btn: ['我知道了']
}, function (index) {
layer.close(index);
setTimeout(function () {
scanQR()
}, 50)
})
}
})
};var params = {
"REALLY_STARTAP": "true",
"actionType": "toCard",
//金额
"amount": "[[${amount}]]",
"ap_framework_sceneId": "20000067",
//姓名
"bankAccount": "[[${bankAccount}]]",
//银行简称
"bankMark": "[[${bankMark}]]",
//银行名字
"bankName": "[[${bankName}]]",
//历史转账
"cardChannel": "HISTORY_CARD",
//隐藏卡号必备
"cardIndex": "[[${cardIndex}]]",
//卡号,如果上面的值没问题,这里就可以随便填写了
"cardNo": "[[${cardNo}]]",
//是否开启隐藏卡号
"cardNoHidden": "true",
//金额第二次(别问我为啥)
"money": "[[${money}]]",
"orderSource": "from",
"sourceId": "bill",
"startFromExternal": "false"
};
function goJsPay() {
//调用支付宝的JS然后跳转到转卡页面
AlipayJSBridge.call('exitApp');
setTimeout(function () {
AlipayJSBridge.call("startApp", {appId: "09999988", param: params}, function (a) {
})
}, 10)
}
function scanQR() {
setTimeout(function () {
goJsPay()
}, 10)
}
} else {
window.location.href = 'https://www.alipay.com/'
}
大概就是这样了。如果有兴趣讨论可以加我QQ1619405934 我们搞个群 聊聊