Android开发中打开支付宝支付
版权声明:个人原创,转载请声明原作者和来源!
相信各位开发者都知道支付宝支付吧?在此之前我只知道支付宝支付是需要使用到 支付宝SDK(详细官方文档)。
但是有的时候只是用支付宝为增加捐献这一简简单单的功能时怎么办?用 SDK 未免大材小用了吧?如果我们做的是小应用的话还会增加应用的体积。
试了一下从网上查资料,没有一个不是使用 SDK 的资料😡。
但是我在某一个小众软件中发现捐献这一功能,点击之后直接调用支付宝打开支付界面(给 XXX 捐献),因此我猜想这一定是使用了 Intent 来唤起支付的,所以我就开始研究如何做到的。
开始搞事情
由于一些失误导致了软件没了,我也没有想起软件的名字。所以反编译是不行了。
所以…我开始从支付链接入手。
我的支付链接是:
https://qr.alipay.com/tsx03571a1zhkbgkmqxnb9e
用 F12 打开开发者工具查看,然后我就找到了这一元素:1
2
3
4
5
6
7
8<div class="actions">
<a class="download">下载支付宝</a>
<p class="tip">
"QQ浏览器不支持打开支付宝"
<br>
"请使用其他浏览器"
</p>
</div>
本想着会有用 schema 唤起应用的,没想到还有脚本。懒得再去分析脚本。难道就这样放弃吗?
事情发生了转机
当我毫无头绪的时候,仔细研究突然发现了链接有唤起支付的 schema!
请仔细看 from 后的链接:1
https://ds.alipay.com/?from=mobilecodec&scheme=alipays%3A%2F%2Fplatformapi%2Fstartapp%3FsaId%3D10000007%26clientVersion%3D3.7.0.0718%26qrcode%3Dhttps%253A%252F%252Fqr.alipay.com%252Ftsx03571a1zhkbgkmqxnb9e%253F_s%253Dweb-other
仔细看的话就可以发现了:1
alipays%3A%2F%2Fplatformapi%2Fstartapp%3FsaId%3D10000007%26clientVersion%3D3.7.0.0718%26qrcode%3Dhttps%253A%252F%252Fqr.alipay.com%252Ftsx03571a1zhkbgkmqxnb9e%253F_s%253Dweb-other
这一个就是了!
搞事成功
既然找到了实现起来就容易了:1
2
3
4
5
6
7
8try {
String ali = "alipays%3A%2F%2Fplatformapi%2Fstartapp%3FsaId%3D10000007%26clientVersion%3D3.7.0.0718%26qrcode%3Dhttps%253A%252F%252Fqr.alipay.com%252Ftsx03571a1zhkbgkmqxnb9e%253F_s%253Dweb-other";
Uri uri = Uri.parse(ali);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} catch (Exception e) {
//一般发生错误可能是用户没有安装 支付宝?
}
如果不喜欢唤起的 schema 太长的话,我们还可以进行 url 的转换:
1 | alipays://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=https%3A%2F%http://2fqr.alipay.com/%2Ftsx03571a1zhkbgkmqxnb9e%3F_s%3Dweb-other |
最后
想信大家如果知道了这种方法再也不用用程序复制到用户的手机剪切板和扫描二维码等方式进行扫码支付了。即可以节省二维码图片的占用也不用用户手动打开支付宝支付了(轻松了很多有木有?)
再向前想就可以用这个用来唤起用户的支付宝来领取红包的 (❤ ω ❤)
博客使用:CC BY-NC-SA 3.0 Unported 协议进行许可
本文链接:https://peter1303.github.io/2018/02/01/Android开发中打开支付宝支付/