1、导入依赖
//支付宝支付
//https://opendocs.alipay.com/open/204/105296
implementation 'com.alipay.sdk:alipaysdk-android:+@aar'
2、支付工具类
PayUtil.alipay(this, "哪种方式支付');
/**
* 支付工具类
*/
public class PayUtil {
private static final String TAG = "PayUtil";
/**
* 支付宝支付
* 支付宝官方开发文档:https://docs.open.alipay.com/204/105295/
*
* @param activity
* @param data
*/
public static void alipay(Activity activity, String data) {
//创建运行对象
Runnable runnable = new Runnable() {
/**
* 子线程执行
*/
@Override
public void run() {
//创建支付宝支付任务
PayTask alipay = new PayTask(activity);
//支付结果
Map<String, String> result = alipay.payV2(data, true);
//解析支付结果
PayResult resultData = new PayResult(result);
//发布状态
EventBus.getDefault().post(new AlipayStatusChangedEvent(resultData));
}
};
//创建一个线程
Thread thread = new Thread(runnable);
//启动线程
thread.start();
}
}
3、支付宝解析结果
/**
* 支付宝支付结果解析类
* 目的是将Map参数解析到对象
* 可以不用该类
* 该类来自支付宝支付Demo
*/
public class PayResult {
private String resultStatus;
private String result;
private String memo;
public PayResult(Map<String, String> rawResult) {
if (rawResult == null) {
return;
}
for (String key : rawResult.keySet()) {
if (TextUtils.equals(key, "resultStatus")) {
resultStatus = rawResult.get(key);
} else if (TextUtils.equals(key, "result")) {
result = rawResult.get(key);
} else if (TextUtils.equals(key, "memo")) {
memo = rawResult.get(key);
}
}
}
@Override
public String toString() {
return "resultStatus={" + resultStatus + "};memo={" + memo
+ "};result={" + result + "}";
}
/**
* @return the resultStatus
*/
public String getResultStatus() {
return resultStatus;
}
/**
* @return the memo
*/
public String getMemo() {
return memo;
}
/**
* @return the result
*/
public String getResult() {
return result;
}
}
4、支付宝支付状态改变
/**
* 支付宝支付状态改变了事件
*/
public class AlipayStatusChangedEvent {
/**
* 支付状态
*/
private PayResult data;
public AlipayStatusChangedEvent(PayResult data) {
this.data = data;
}
public PayResult getData() {
return data;
}
public void setData(PayResult data) {
this.data = data;
}
}