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'
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM