使用URL Scheme打开支付宝、云闪付小程序
支付宝的指定页面路径跳转比微信小程序简单很多,只需要使用简单的几个步骤。另外,云闪付的小程序用了类似的方法进行跳转,在此处也一并讲解,作参考使用。
支付宝
首先,打开支付宝,来到需要抓取的小程序页面。此处以上海的随申码为例演示,打开随申办小程序,点击顶部的「随申码」按钮进入页面。
可以看出这个一个二级页面,如果想要使用 URL Scheme 一键访问,同样需要知道这个页面的 path 参数(可理解为某个页面的「身份证」。点击右上角的「更多」图标按钮,再依次点击「分享」>「复制链接」。
剪切板的链接地址如下所示,前往 Safari 粘贴打开剪切板链接,这时候会弹出询问窗口,询问是否在支付宝中打开。
https://ur.alipay.com/7jQeHZlc
点击取消,看到 Safari 的地址栏,可以看出短链接经过解析,变成了含有参数的长链接。复制出这个长链接,如下所示:
https://render.alipay.com/p/s/i/?scheme=alipays%3A%2F%2Fplatformapi%2Fstartapp%3FappId%3D2019072665939857%26page%3Dpages%252Fmy-station-type%252Fmy-station-type%26enbsv%3D0.2.2108270116.35%26chInfo%3Dch_share__chsub_CopyLink
此处的链接参数是被编码过的,使用 URLDecode.org 进行解码一下,得到如下的原始文本,我们将这一长串的链接分段解析一下。
https://render.alipay.com/p/s/i/?scheme=alipays://platformapi/startapp?appId=2019072665939857&page=pages%2Fmy-station-type%2Fmy-station-type&enbsv=0.2.2108270116.35&chInfo=ch_share__chsub_CopyLink
可以看到,解析后的链接中包含了四个参数。分别是scheme
、page
、enbsv
、chInfo
,根据微信小程序的格式,不难猜出scheme
和page
拼接之后就能打开指定路径,此处的page
就等价于微信的path
。所以删除前后无用的参数,只保留scheme
和page
,就可以构造出如下的链接地址:
alipays://platformapi/startapp?appId=2019072665939857&page=pages%2Fmy-station-type%2Fmy-station-type
有了 URL Scheme 之后,就可以打开快捷指令进行构建了(下简称为「捷径」)。新建捷径,选择「打开 URL」模块,将构造好的 URL Scheme 地址填入,编辑好捷径的名称和图标之后就制作好了。
此处有一个小技巧需要介绍,捷径在只有一个动作的情况下,无法显示自定义的捷径图标。这个时候可以在捷径里随意加一个无意义的变量解决这个问题,例如加入一个「文本」动作。或者也可以将 URL Scheme 放在「URL」模块里,然后使用「打开 URL」打开它,两种解决方法都是可以的。
点击这里即可下载支付宝随申码。
注意要点
- 对于需要登录授权的小程序,例如通信行程卡,可能需要短信验证码才可以登录。
- 和微信小程序一样,如果拍照使用的是官方的接口,一样无法获取到页面路径。
云闪付
云闪付打开随申码无需次次授权,只需要一次授权,长期有效。稍微研究了一下,找出了云闪付的 URL Scheme 跳转地址结构,格式如下:
upwallet://applet?toLink=【小程序 URL】&encryptAppId=【小程序 ID】
接下来趁热打铁,看看如何实现云闪付的小程序地址抓取。打开随申码小程序页面,同样是复制链接,依次点击右上角的「更多」图标 >「分享」>「复制链接」。
但是此时,如果还想使用和支付宝一样的方法,是行不通的了。因为此时已经是一个长链接了,复制到 Safari 打开也没用了。这次直接对链接进行分析,由于这个链接中包含了个人身份信息,我对链接做了一些处理,替换了某些参数值来介绍。所以替换后的链接地址如下所示:
https://base.95516.com/s/wl/WebAPP/helpAgree/page/help/shareRutineHelp.html?params=ewogICJ0b0xpbmsiIDogImh0dHBzOi8vc3Vpc2hlbm1hZnJvbnQxLnNoLmdvdi5jbi9zbXp5L2Z5ei9xcmNvZGU/ZnJvbT15c2YmYWRkcmVzcz0mbG9uZ2l0dWRlPTEyMC4wMCZsYXRpdHVkZT0zLjAwJnR5cGU9RllfUVJDT0RFXzAxJm13PXNzcGFpSmFtZXNIb3Bib3VybiZpc1JlbGF0aW9ucz0wJm13Rm9yUmVsYXRpb25zPXZuS0FreDc3JTIwbTNGNjdPcjdTU0RPc1N3RnFncjBFUWYvb0VWMTJFclVWZWRWRGQvc3NwYWkiLAogICJlbmNyeXB0QXBwSWQiIDogImJhNDMxYmY3MDUwNzMxYTAiCn0=
可以看出,它不同于曾经见到过了支付宝或者微信小程序链接,后面跟着一堆 ABCD 字母,看到最后的等于号,不难猜出这是一段 base64 编码。将这段 base64 复制,在终端使用 base64 命令进行解码。如果不习惯使用终端,也可以使用在线的 base64decode.org 进行解码,解码后的内容如下所示:
{
"toLink" : "https://suishenmafront1.sh.gov.cn/smzy/fyz/qrcode?from=ysf&address=&longitude=120.00&latitude=3.00&type=FY_QRCODE_01&mw=sspaiJamesHopbourn&isRelations=0&mwForRelations=vnKAkx77%20m3F67Or7SSDOsSwFqgr0EQf/oEV12ErUVedVDd/sspai",
"encryptAppId" : "ba431bf7050731a0"
}
此处有两个参数,toLink
和encryptAppId
,而encryptAppId
就是所谓的小程序 ID,没有值得研究的地方。接着将此处的toLink
参数单独拿出解析一下,将它切分一下,看看各个参数值。可以看出此处有 8 个参数,包含了跳转来源、地址、经纬度和 mw 等参数。
https://suishenmafront1.sh.gov.cn/smzy/fyz/qrcode?
from=ysf
&address=
&longitude=120.00
&latitude=3.00
&type=FY_QRCODE_01
&mw=sspaiJamesHopbourn
&isRelations=0
&mwForRelations=vnKAkx77%20m3F67Or7SSDOsSwFqgr0EQf%2FoEV12ErUVedVDd%2Fsspai
经过实验,此处只需要保留一个mw
即可成功认证。请注意此处的mw
等效于个人身份标识码,所以请不要将这个链接随意分享。最后删除无用参数,重构链接得到以下结果:
https://suishenmafront1.sh.gov.cn/smzy/fyz/qrcode?mw=sspaiJamesHopbourn
刚才在开头提过了云闪付小程序的基本结构,接下来就是构建 URL Scheme 了,拼接两个参数之后,得到如下的 URL Scheme
upwallet://applet?toLink=https://suishenmafront1.sh.gov.cn/smzy/fyz/qrcode?mw=sspaiJamesHopbourn&encryptAppId=ba431bf7050731a0
同样将它创建为一个捷径。新建捷径,选择「打开 URL」模块,粘贴这个 URL Scheme 地址即可。
云闪付对参数进行了 base64 编码,但是经过解码之后一样可以得到关键信息。其实看过云闪付的桌面书签代码之后,感觉它做的还是比较好的。内部使用了 base64 和字符串拼接之后才能得到 URL Scheme,增大了直接获取 URL Scheme 的难度。
但是其实也是有通杀方法的,不去分析网页代码,无论如何最终书签都是要跳转应用的。所以另一种方法是在电脑上伪装 UA,直接打开链接,一下就能获得到完整的 URL Scheme。云闪付小程序的 URL Scheme 基本格式正是使用这个方法获得。
小结
现在,各App小程序的 URL Scheme 结构都介绍过了,下面是小程序的跳转情况对比图:
最后,再来总结一下各App小程序跳转的基本格式:
alipays://platformapi/startapp?appId=【小程序 ID】&page=【页面路径】
upwallet://applet?encryptAppId=【小程序 ID】&toLink=【小程序 URL】
彩蛋
在部分学校里的菜鸟驿站站点,收取快递可能需要出示身份码扫描。在研究菜鸟小程序的身份码的时候,使用上面的「支付宝分享法」解析出了淘宝直达链接,有需要的读者也可以自取,使用 URL Scheme 一件跳转之后,就不需要额外再下载「菜鸟驿站」了,只需要捷径点击一下,即可直接打开身份码,URL Scheme 地址和演示效果如下。
tbopen://m.taobao.com/tbopen/index.html?h5Url=https%3A%2F%2Fmarket.m.taobao.com%2Fapp%2Fcn-yz%2Fmulti-activity%2FauthCode.html