微信短链接打开支付宝领红包

今天朋友在微信给我发来一个短连接 http://t.cn/RHu4yXj,在微信打开之后,直接跳转到支付宝领红包页面,感觉非常新奇,决定研究下源码。

首先解析短链接

http://t.cn/RHu4yXj ==> https://ie34.com/wx_zfb.html

取出源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" href="https://i.alipayobjects.com/common/favicon/favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="https://i.alipayobjects.com/common/favicon/favicon.ico" type="image/x-icon">
<title>正在打开支付宝,请稍候……</title>
</head>
<body>
<script type="text/javascript">
var url1 = "https://qr.alipay.com/c1x09214odvs9va2cyg7vd2";
var url2 = "https://qr.alipay.com/c1x09214odvs9va2cyg7vd2";
function is_weixin() {
if (/MicroMessenger/i.test(navigator.userAgent)) {
return true
} else {
return false
}
}

function is_android() {
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/(Android|SymbianOS)/i)) {
return true
} else {
return false
}
}

function is_ios() {
var ua = navigator.userAgent.toLowerCase();
if (/iphone|ipad|ipod/.test(ua)) {
return true
} else {
return false
}
}

function android_auto_jump() {
WeixinJSBridge.invoke("jumpToInstallUrl", {}, function (e) {});
window.close();
WeixinJSBridge.call("closeWindow")
}

function ios_auto_jump() {
if (url1 != "") {
location.href = url1
} else {
window.close();
WeixinJSBridge.call("closeWindow")
}
}

function onAutoinit() {
if (is_android()) {
android_auto_jump();
return false
}
if (is_ios()) {
ios_auto_jump();
return false
}
}
if (is_weixin()) {
if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener("WeixinJSBridgeReady", onAutoinit, false)
} else if (document.attachEvent) {
document.attachEvent("WeixinJSBridgeReady", onAutoinit);
document.attachEvent("onWeixinJSBridgeReady", onAutoinit)
}
} else {
onAutoinit()
}
} else {
if (url2 != "") {
location.href = url2
} else {
window.close()
}
}
</script>
</body>
</html>

分析一下代码

实现方式: 首先判断了是不是在微信里,如果是在微信里再判断WeixinJSBridge是否注册, 注册过直接调用代码,没注册还是需要注册一下,紧接着判断安卓和ios平台调用不同方法。如果不是微信则直接跳转 url。

从代码实现方式看,用WeixinJSBridge做了层跳板,绕过 webview,直接用 native 代码跳转url。

这里有个地方我不明白,微信和支付宝正在支付领域争的你死我活,应该是不会那么轻易通过url 跳转到支付宝的。

于是我请教了 ios 同学,他也同样很疑惑,他做了个实验,通过代码直接跳转https://qr.alipay.com/c1x09214odvs9va2cyg7vd2,发现是可以直接跳转到支付宝并自动领红包的。

有这一重大发现,我就想试试能不能跳到淘宝客链接,于是找了个淘宝客的链接https://wx.loukx.com/wx_tz.html,结果是失败了。

目前的已知问题

1、目前已知只有qr.alipay.com可以打开,淘宝客链接无法跳转

2、ios 11.2.1无法正常跳转到支付宝

3、此代码有可能是微信 native bug,有随时被封的可能

4、qq会默认跳转到 webview,无法正常打开支付宝(在想办法解决)

上传支付宝红包二维码自动生成跳转链接

https://ie34.com/short-link