Alipay集成
- 下载Alipay的SDK
SDK下载地址 - 导入资源
将AlipaySdk******.jar包放入应用工程libs目录
- 添加依赖
compile files(‘libs/alipaySdk-20170725.jar’)
- 配置Manifest文件
<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>
<activity
android:name="com.alipay.sdk.app.H5AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden" >
- 权限声明
<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" />
- 设置混淆规则
在商户应用工程的proguard-project.txt(proguard-rules.pro)里添加以下相关规则:
-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.** { *;}
-
设置运行环境
沙箱测试环境:
在super.onCreate(savedInstanceState)方法调用前调用EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX)
生产环境:
去掉EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX) -
调用Alipay接口(必须在子线程中调用)
Runnable payRunable = new Runnable() {
@Override
public void run() {
PayTask alipay = new PayTask(activity);
Map<String, String> result = alipay.payV2(signature, true);
Message msg = new Message();
msg.what =msgWhat;
msg.obj = result.get("resultStatus");
mHandler.sendMessage(msg);
}
};
Thread payThread = new Thread(payRunable);
payThread.start();