转自: https://doc.open.alipay.com/
申请流程
准备:
1.营业执照,APP说明文档,如开发者与签约者不一致需要提供开发合作协议;
2.提交签约信息(t填写商户经营信息,APP说明文档,商户联系人信息)
3.产品集成
集成
1.创建应用并获取APPID
2.配置密钥
3.继承并配置SDK
4.调用接口
集成详解
1.将alipay-sdk-common/alipaySdk-xxxxxxxx.jar包放入商户应用工程的libs目录下
2.
修改Manifest
在商户应用工程的AndroidManifest.xml文件里面添加声明:
1
2
3
4
5
6
7
8
9
10
11
12
|
<activity
android:name=
"com.alipay.sdk.app.H5PayActivity"
android:configChanges=
"orientation|keyboardHidden|navigation"
android:exported=
"false"
android:screenOrientation=
"behind"
>
</activity>
<activity
android:name=
"com.alipay.sdk.auth.AuthActivity"
android:configChanges=
"orientation|keyboardHidden|navigation"
android:exported=
"false"
android:screenOrientation=
"behind"
>
</activity>
|
和权限声明:
1
2
3
4
5
|
<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:n
|
添加混淆规则
在商户应用工程的proguard-project.txt里添加以下相关规则:
1
2
3
4
5
6
7
8
|
-libraryjars libs/alipaySDK-
20150602
.jar
-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
*;}
|
支付接口调用
需要在新线程中调用支付接口。(可参考alipay_demo实现)
获取PayTask支付对象调用支付(支付行为需要在独立的非ui线程中执行),代码示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
final
String orderInfo = info;
// 订单信息
Runnable payRunnable =
new
Runnable() {
@Override
public
void
run() {
PayTask alipay =
new
PayTask(DemoActivity.
this
);
String result = alipay.payV2(orderInfo,
true
);
Message msg =
new
Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
mHandler.sendMessage(msg);
}
};
// 必须异步调用
Thread payThread =
new
Thread(payRunnable);
payThread.start();
|
支付结果获取和处理
调用pay方法支付后,将通过2种途径获得支付结果:
同步返回
商户应用客户端通过当前调用支付的Activity的Handler对象,通过它的回调函数获取支付结果。(可参考alipay_demo实现)
代码示例:
1
2
3
4
5
6
7
|
private
Handler mHandler =
new
Handler() {
public
void
handleMessage(Message msg) {
Result result =
new
Result((String) msg.obj);
Toast.makeText(DemoActivity.
this
, result.getResult(),
Toast.LENGTH_LONG).show();
};
};
|
异步通知
商户需要提供一个http协议的接口,包含在请求支付的入参中,其key对应notify_url。支付宝服务器在支付完成后,会以POST方式调用notify_url传输数据。