集成支付宝APP支付
直接按照官方文档逐步集成
官方文档:支付宝APP支付官方文档
Android客户端封装支付宝支付
public class AlipayUtil {
private static final int SDK_PAY_FLAG = 1;
//静态内部类单例模式
public static AlipayUtil getInstance(){
return SingletonHolder.INSTANCE;
}
private static class SingletonHolder{
private static final AlipayUtil INSTANCE = new AlipayUtil();
}
private AlipayUtil(){
}
//orderInfo是服务端经过签名后的字符串,isShowPayLoading是否弹出支付宝支付dialog
public void pay(final Activity activity , final String orderInfo, final boolean isShowPayLoading, final AlipayCallBack callBack){
@SuppressLint("HandlerLeak")
final Handler mHandler = new Handler() {
@SuppressWarnings("unused")
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
@SuppressWarnings("unchecked")
PayResult payResult = new PayResult((Map<String, String>) msg.obj);
callBack.callBack(payResult);
}
}
}
};
Runnable payRunnable = new Runnable() {
@Override
public void run() {
PayTask alipay = new PayTask(activity);
Map<String, String> result = alipay.payV2(orderInfo, isShowPayLoading);
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
mHandler.sendMessage(msg);
}
};
// 必须异步调用
Thread payThread = new Thread(payRunnable);
payThread.start();
}
public interface AlipayCallBack{
void callBack(PayResult resultSet);
}
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;
}
}
使用方法:
AlipayUtil.getInstance().pay(this, "请求服务端返回的经过签名的字符串", true, new AlipayUtil.AlipayCallBack() {
@Override
public void callBack(AlipayUtil.PayResult resultSet) {
}
});
这样子,可以得到PayResult,根据这个PayResult处理支付结果。