先为大家上官方的链接:https://b.alipay.com/order/productDetail.htm?productId=2013080604609654&tabId=4#ps-tabinfo-hash
1.先导入jar包。
https://docs.open.alipay.com/54/104509/
2.第二步:修改AndroidManifest.xml清单
1) 声明必要Activity
<!--支付相关-->
<activity
android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false" android:screenOrientation="behind" />
<activity
android:name="com.alipay.sdk.auth.AuthActivity" android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false" android:screenOrientation="behind" />
2) 添加必要权限
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
3.使用代码
//必须异步调用
Runnable payRunnable = new Runnable() {
@Override
public void run() {
PayTask alipay = new PayTask(context);
// String result = payTask.pay(signInfo, true);
Map<String, String> result = alipay.payV2(signInfo, true); //sign 加密支付信息
Message msg = new Message();
msg.what = 0;
msg.obj = result;
mHandler.sendMessage(msg);
}
};
Thread payThread = new Thread(payRunnable);
payThread.start();
app携带支付信息调用支付接口请求支付宝客户端调起支付界面;
用户操作,输入密码支付,支付成功;直接返回取消支付;出现错误,支付失败;进入支付界面,但输入密码支付,支付待确认;
支付宝客户端将支付结果告诉app客户端,商户服务器通知app服务器支付结果;
app客户端处理支付结果;
app服务器处理支付结果。
4.设置回传
Handler mHandler =new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case SDK_PAY_FLAG:
PayResult payResult = null;
try{
payResult = new PayResult((Map<String, String>) msg.obj);
}catch (Exception e){
e.printStackTrace();
}
/**
对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
*/
String resultInfo = payResult.getResult();// 同步返回需要验证的信息
String resultStatus = payResult.getResultStatus();
// 判断resultStatus 为9000则代表支付成功
if (TextUtils.equals(resultStatus, PAY_OK)) {//----------------------------------->支付成功
// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
toast.( "购买服务成功");
} else if (TextUtils.equals(resultStatus, PAY_FAILED)) {//------------------------->支付失败
// 该笔订单真实的支付结果,需要依赖服务端的异步通知。
toast.(""+payResult.getMemo());
} else if (TextUtils.equals(resultStatus, PAY_CANCLE)) {//-------------------------->交易取消
toast.(""+payResult.getMemo());
} else if (TextUtils.equals(resultStatus, PAY_NET_ERR)) {//------------------------->网络出现错误
toast.(""+payResult.getMemo());
} else if (TextUtils.equals(resultStatus, PAY_WAIT_CONFIRM)) {//--------------------->交替等待
}
break;
}
}
文章到这里就结束了!
写这篇博客是为了以后好复制粘贴快速集成。
看我博客的小伙伴们直接cv,你就会发现很神奇,支付宝集成支付如此简单,关注我的博客后续我会继续发神奇的cv文章(鲜花在哪里,掌声在哪里)!