android 集成微信支付宝 RxPay
集成步骤
Java 项目配置
dependencies { compile 'com.cuieney:rxpay-api:2.2.3' annotationProcessor 'com.cuieney:rxpay-compiler:2.1.1' //如果你项目配置了kotlin请忽略下面这行的配置 //否则会报错 Failed resolution of: Lkotlin/jvm/internal/Intrinsics compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" }
添加权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
支付宝
清单文件注册支付宝相关 Activity
<!-- 支付宝 -->
<activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation|screenSize" android:exported="false" android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden"/> <activity android:name="com.alipay.sdk.app.H5AuthActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden"/>
发起支付宝支付
new RxPay(this) .requestAlipay("服务器产生的订单信息") .subscribe(new Consumer<Boolean>() { @Override public void accept(Boolean aBoolean) throws Exception { payState.setText("阿里支付状态:"+aBoolean); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { payState.setText("阿里支付状态:"+throwable.getMessage()); } });
微信
在 Application 类中添加支付节点
@WX(packageName = "微信支付注册keystore时候的包名") public class XXActivity extends Activity { }
在AndroidManifest添加你微信支付的appid 和PARTNER_ID商户号(固定不变的),apiKey(商户平台设置的密钥key获取方法,可以问后台要可以到微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置)
<!-- WX_APPID必填项 --> <meta-data android:name="WX_APPID" android:value="xxxxx" /> <!-- 非必填项,此处填写后,请求json的partnerId字段就可以不填 --> <meta-data android:name="PARTNER_ID" android:value="xxxx" /> <!-- 非必填项,此处填写后,请求json的sign字段就可以不填(即App端签名) --> <meta-data android:name="API_KEY" android:value="xxxxx" />
在清单文件中注册微信相关的Activity,添加完之后会报错,使用 ReBuild 或者重新运行就不会了,这个 Activity 会被自动生成
<activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan" />
发起微信支付
new RxPay(this) .requestWXpay(("服务器生成订单的后拼接成下面这种json字符串")) .subscribe(new Consumer<Boolean>() { @Override public void accept(Boolean aBoolean) throws Exception { payState.setText("微信支付状态:"+aBoolean); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { payState.setText("微信支付状态:"+throwable.getMessage()); } });
对应的json格式参考
1.格式一(Manifest三个参数全设置了) { "prepayId": "必填项", } 2.格式二(Manifest设置了PARTNER_ID 没有设置API_KEY) { "nonceStr": "必填项", "partnerId": "必填项", "packageValue": "必填项", "prepayId": "必填项", "sign": "必填项", "timeStamp": "必填项" }
混淆规则
-keep class com.alipay.android.app.IAlixPay{*;} -keep class com.alipay.android.app.IAlixPay$Stub{*;} -keep class com.alipay.android.app.IRemoteServiceCallback{*;} -keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;} -keep class com.alipay.sdk.app.PayTask{ public *;} -keep class com.alipay.sdk.app.AuthTask{ public *;} -keep class com.alipay.sdk.app.H5PayCallback { <fields>; <methods>; } -keep class com.alipay.android.phone.mrpc.core.** { *; } -keep class com.alipay.apmobilesecuritysdk.** { *; } -keep class com.alipay.mobile.framework.service.annotation.** { *; } -keep class com.alipay.mobilesecuritysdk.face.** { *; } -keep class com.alipay.tscenter.biz.rpc.** { *; } -keep class org.json.alipay.** { *; } -keep class com.alipay.tscenter.** { *; } -keep class com.ta.utdid2.** { *;} -keep class com.ut.device.** { *;} -dontwarn com.alipay.**
其他问题
-
对于调起微信支付的json的字段请参考以上的json
-
以下的过度版本可以解决依赖包冲突问题
-
com.cuieney:rxpay-api:2.1.11 版本 阿里jar包 微信依赖 都已剔除
-
com.cuieney:rxpay-api:2.1.12 版本只剔除 阿里jar包
-
com.cuieney:rxpay-api:2.2.2 版本只剔除 微信依赖
-
-
如果项目中还有Rxjava版本1的话为了防止代码冲突 请在build.gradle里面添加一下代码
packagingOptions { exclude 'META-INF/rxjava.properties' }
分类:
android技术
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通