Android集成支付宝支付以及沙箱环境测试注意事项

前言

现在很多App都涉及到支付, 毕竟开发APP目的是为了盈利嘛, 通常我们会在App中同时集成支付宝和微信支付, 方便用户消费

集成相关

支付宝的集成相对简单, 前端无需添加APPID和密钥, 签名部分在在后端完成,只要确保应用签名和开发平台填入的保持一致就行, 不像微信不仅要配置APPID, 还要添加WXEntryActivity ,此外包名也必须匹配 少一个都不行

当然两者都需要在开发平台填入一个应用签名, 格式为MD5

沙箱环境

当我们SDK集成完毕, 后台接口也调好后, 开始测试支付, 那么问题来了, 支付可是得花钱的呀, 为了解决这个问题, 支付宝官方给我们提供了一个沙箱环境的支付宝, 方便开发测试

简而言之就是提供了一个测试用的支付宝账号, 里面有很多钱, 可以随便花, 哈哈, 不过仅限于测试

这个测试账号不能直接登录我们平常用的支付宝App, 需要下载一个沙箱用的支付宝App

这里提供了沙箱支付宝App下载地址

沙箱支付宝App下载

沙箱测试

安装完毕后登录沙箱账号, 看看你的应用能否调起支付

此时你会发现支付宝调不起来 ,如果返回错误码4000, 那么就是没有检测到沙箱支付宝App

此时 需要在支付Activity中开启沙箱环境, 代码如下:

1
2
3
4
5
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX)

}

如果依然无效, 那么大概率是后台签名出了问题, 后台网关需要改成沙箱环境地址

支付宝H5支付

当用户手机上未安装支付宝app时也需要支持支付功能的话, 可以采用H5页面支付方案, 此时需要在清单文件中声明相应Activity,如下:

1
2
3
4
5
6
7
8
9
<!--        支付宝客户端未安装时使用H5页面  -->
<activity
android:name="com.alipay.sdk.app.H5PayActivity"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
android:name="com.alipay.sdk.app.H5AuthActivity"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />

该功能可选, 如果不需要可不添加

总结

支付宝集成归纳如下:

  • 前端无需配置APPID, 只需确保应用签名正确 包名不一样也能正常调起
  • 沙箱测试, 前端需要使用EnvUtils开启沙箱环境
  • 沙箱支付宝登录使用开发后台提供的买家账号登录, 用于支付

微信支付集成归纳如下:

  • 前端需要配置APPID和密钥 同时包名应用签名需要正确

  • 还需要再创建一个WXEntryActivity, 并在清单文件中注册

    清单文件中可以考虑使用activity-alias 实现多合一注册, 示例如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      <activity-alias
    android:name="${applicationId}.wxapi.WXPayEntryActivity"
    android:exported="true"
    android:targetActivity="WeiXinHandlerActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    <activity-alias
    android:name="${applicationId}.wxapi.WXEntryActivity"
    android:exported="true"
    android:targetActivity="WeiXinHandlerActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />

注意事项

Android11开始, 涉及到一个软件可见性适配问题, 也就是说调起第三方应用时需要在清单文件中声明其对应的包名, 否则无法调起支付, 具体代码如下:

1
2
3
4
5
6
7
8
<queries>
<package android:name="com.eg.android.AlipayGphone" /> <!-- 支付宝 -->
<package android:name="hk.alipay.wallet" /> <!-- AlipayHK -->
<package android:name="com.tencent.mm" /> <!-- 微信支付 -->
<package android:name="com.sina.weibo" /> <!-- 微博 -->
</queries>
<application
...

Android 11 系统策略更新

附加

支付宝支付客户端 DEMO&SDK下载

支付宝支付集成文档

微信支付安卓接入指南

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%