Android 通过scheme跳转支付宝实现支付

实际上,扫码之后就是通过支付宝内置浏览器打开了h5,如果我能有个方法,可以触发让支付宝去打开支付的h5链接,那么就是相当于实现了唤起APP支付的功能了

于是就轮到了今天所说的scheme实现了功能

步骤
1.知道对应的scheme
首先,我们要知道对应的scheme,这个是重点,但好在酷安人均大佬,已经有人找到了,就是下面的这个,需要在后面拼接下网址即可

alipays://platformapi/startapp?appId=20000067&url=

2.触发scheme
关于触发scheme,这里就涉及到Android里的Intent相关的知识了,这里不详细说明了,直接上代码

val payUrl =""//支付的h5地址
val scheme = "alipays://platformapi/startapp?appId=20000067&url=${payUrl}"
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(scheme))
ActivityUtils.startActivity(intent)

PS: ActivityUtils是个AndroidUtilCode库里的一个工具类,各位也可以直接用activity对象的startActivity方法

当然,这里我们还得加上个判断,来判断用户是否安装了支付宝应用

//判断是否安装支付宝

//判断是否安装支付宝
if (AppUtils.isAppInstalled("com.eg.android.AlipayGphone")) {
    val scheme = "alipays://platformapi/startapp?appId=20000067&url=${payUrl}"
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse(scheme))
    ActivityUtils.startActivity(intent)
} else {
    ToastUtils.showShort("抱歉,当前手机未安装支付宝APP...")
}

【开源库推荐】#2 AndroidUtilCode Android常用工具类大全(附API使用说明) - Stars-One的杂货小窝

不过这里遇到了个问题了,由用户反馈说支付不了

排查一下,发现是我项目里的target SDK变更为了30,而API 30,无法获取包名,详情可见此文声明软件包可见性需求 | Android 开发者 | Android Developers

不过由于我用的是工具库,所以把AndroidUtilCode库更新到最新版本就解决了此问题

PS: 实际上实现效果与官方支付宝的APP支付有些不同,上述的实现效果就是,会先触发支付宝打开一个网页,然后再弹出一个付款的对话框;

而官方支付宝的APP支付的话,就是会直接弹出付款的对话,没有打开网页的这一步操作,不过也是还能接受

最后我碎碎念下,微信这个APP就是垃圾,限制太多了,对开发者极度不友好,不同于支付宝,它是直接限制了scheme,除非你是它白名单里,否则不允许你用它里面浏览器打开页面
在这里插入图片描述

所以估计我以后不会对接微信支付!!

补充 scheme收集
来自 酷安’掏友’的内容
酷安’掏友’分享的飞书文档
下面是我从上面文章里抽取一些可能开发会用的scheme:

在这里插入图片描述

上面微信的联系人跳转,需要个ID,关于如何获取,可见下图
在这里插入图片描述

补充 - 跳转网易云音乐打开链接

val intent = Intent(Intent.ACTION_VIEW)
intent.data = Uri.parse("https://www.cnblogs.com/stars-one")
intent.setPackage("com.netease.cloudmusic")
ActivityUtils.startActivity(intent)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android开发中,android:scheme 是一个很重要的属性,用于指定一个应用程序的URI scheme。URI(Uniform Resource Identifier)是用于标识和定位资源的字符串,通常用于网络资源的访问。 通过在AndroidManifest.xml文件中使用 android:scheme 属性,可以告诉Android系统该应用程序支持通过特定的URI scheme来进行跳转。例如,可以指定一个自定义的URI scheme,比如"myapp",然后在其他应用程序中使用这个自定义URI来启动该应用程序。 具体步骤如下: 1. 在 AndroidManifest.xml 文件的<application>标签内部添加以下代码: ```xml <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="myapp" /> </intent-filter> ``` 这样就指定了该应用程序支持通过"myapp" scheme进行跳转。 2. 然后在其他应用程序中,可以通过以下代码来启动该应用程序: ```java String uriString = "myapp://example"; Uri uri = Uri.parse(uriString); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); ``` 在上述代码中,使用 Uri.parse() 方法将字符串转换为Uri对象,然后使用 Intent.ACTION_VIEW 和指定的Uri对象创建一个Intent对象,最后通过 startActivity() 方法启动该Intent。 通过以上步骤,就可以在其他应用程序中使用指定的URI scheme跳转到该应用程序。 需要注意的是,为了确保跳转成功,需要确保该应用程序已经安装在设备上,并且支持该指定的URI scheme
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值