引入支付包SDK:
到官网地址选择下载Demo文件
在Demo文件里找到aar文件
把aar文件引入到项目里
拉起支付:
final Runnable payRunnable = new Runnable() {
@Override
public void run() {
PayTask alipay = new PayTask(LoginActivity.this);
Map<String, String> result = alipay.payV2("后台返回的订单信息,里面除了订单ID等,还有签名等安全信息", true);
Log.i("msp", result.toString());
Message msg = new Message();
msg.what = 1;
msg.obj = result;
mHandler.sendMessage(msg);
}
};
// 必须异步调用
Thread payThread = new Thread(payRunnable);
payThread.start();
回调:
private Handler mHandler = new Handler() {
@SuppressWarnings("unused")
public void handleMessage(Message msg) {
switch (((HashMap) msg.obj).get("resultStatus").toString()) {
//这里接收支付宝的回调信息
//需要注意的是,支付结果一定要调用自己的服务端来确定,不能通过支付宝的回调结果来判断
case "9000":
//订单支付成功
break;
case "8000":
//正在处理中
break;
case "4000":
//订单支付失败
break;
case "6001":
//用户中途取消
break;
case "6002":
//网络连接出错
break;
}
ToastUtils.showLongToast(LoginActivity.this, ((HashMap) msg.obj).get("memo").toString());
}
};
返回状态
((HashMap) msg.obj).get("resultStatus")
9000 订单支付成功
8000 正在处理中
4000 订单支付失败
6001 用户中途取消
6002 网络连接出错
((HashMap) msg.obj).get("memo")
状态明文描述:类似“操作已经取消”等提示语