@SuppressLint("HandlerLeak")
private Handler mHandler = new Handler() {
@SuppressWarnings("unused")
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
PayResult payResult = new PayResult((String) msg.obj);
/**
* 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/
* detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&
* docType=1) 建议商户依赖异步通知
*/
String resultInfo = payResult.getResult();// 同步返回需要验证的信息
String resultStatus = payResult.getResultStatus();
// 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档
if (TextUtils.equals(resultStatus, "9000")) {
Toast.makeText(PayDemoActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
} else {
// 判断resultStatus 为非"9000"则代表可能支付失败
// "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
if (TextUtils.equals(resultStatus, "8000")) {
Toast.makeText(PayDemoActivity.this, "支付结果确认中", Toast.LENGTH_SHORT).show();
} else {
// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误
Toast.makeText(PayDemoActivity.this, "支付失败", Toast.LENGTH_SHORT).show();
}
}
break;
}
default:
break;
}
};
};
/**
* 支付接口
* Created by kingpeng on 16/5/19.
*/
public interface IPay {
void pay(int payType,String orderInfo);
}
/**
* 支付工具类
* Created by kingpeng on 16/5/19.
*/
public class Pay implements IPay {
private Activity mContext;
private MyCallback mCallback = new MyCallback();
private int mPayType;
private PayHelper mPayHelper;
private IPayResultCallback mPayResultCallback;
public Pay(Activity context, IPayResultCallback payResultCallback) {
mContext = context;
mPayResultCallback = payResultCallback;
mPayHelper = new PayHelper();
}
@Override
public void pay(int payType, String orderInfo) {
mPayType = payType;
ReqParam param = new ReqParam();
param.setAlertProgressDialog(mContext, true);
param.put("orderInfo", orderInfo);
param.put("payway", payType);
RequestUtil.getInstance().postApi3(R.string.payment_app_require, param, mCallback);
}
/**
* 支付宝支付
*
* @param payInfo
*/
private void aliPay(final String payInfo) {
mPayHelper.aliPay(mContext, payInfo, mPayResultCallback);
}
private class MyCallback extends ReqCallbackIml {
@Override
public void onSuccess(int action, String response) {
switch (action) {
case R.string.payment_app_require:
PayParseBean bean = (PayParseBean) GsonUtil.jsonToBean(response, PayParseBean.class);
if (bean != null && bean.errcode == 0) {
switch (mPayType) {
case 1:
//请求支付宝
aliPay(bean.signStr);
break;
case 2:
//ToDo 请求微信
break;
}
} else {
ToastUtils.showDefaultToastCenter(mContext.getApplicationContext(), "获取订单信息失败");
}
break;
}
}
@Override
public void onFail(int action, Throwable e) {
ToastUtils.showDefaultToastCenter(mContext.getApplicationContext(), "获取订单信息失败");
}
}
/**
* 支付帮助类
* Created by kingpeng on 16/5/19.
*/
public class PayHelper {
public PayHelper() {
}
/**
* 支付宝支付
*
* @param activity
* @param payInfo
*/
public void aliPay(Activity activity, String payInfo, IPayResultCallback payResultCallback) {
new AlipayTask(activity, payInfo, payResultCallback).execute();
}
private class AlipayTask extends AsyncTask<String, Integer, String> {
private Activity mContext;
private String mPayInfo;
private IPayResultCallback mPayResultCallback;
public AlipayTask(Activity context, String payInfo, IPayResultCallback payResultCallback) {
super();
mContext = context;
mPayInfo = payInfo;
mPayResultCallback = payResultCallback;
}
@Override
protected String doInBackground(String... params) {
// 构造PayTask 对象
PayTask alipay = new PayTask(mContext);
// 调用支付接口,获取支付结果
String result = alipay.pay(mPayInfo, true);
return result;
}
@Override
protected void onPostExecute(String result) {
mPayResultCallback.payResult(result, Constants.PAY_ALIPAY);
}
}
/**
* 支付结果回调
* Created by kingpeng on 16/5/19.
*/
public abstract class PayResultCallbackImpl implements IPayResultCallback {
public void payResult(String result, int payType) {
switch (payType) {
case Constants.PAY_ALIPAY:
aliPayResult(result, payType);
break;
case Constants.PAY_WX:
wxPayResult(result, payType);
break;
}
}
/**
* 支付宝支付结果
*
* @param result
* @param payType
*/
private void aliPayResult(String result, int payType) {
PayResult payResult = new PayResult(result);
/**
* 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/
* detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&
* docType=1) 建议商户依赖异步通知
*/
String resultInfo = payResult.getResult();// 同步返回需要验证的信息
String resultStatus = payResult.getResultStatus();
// 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档
if (TextUtils.equals(resultStatus, "9000")) {
onPaySuccess(result, payType);
} else {
// 判断resultStatus 为非"9000"则代表可能支付失败
// "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误
onPayFail(result, payType);
}
}
/**
* 支付成功
*
* @param result
* @param payType
*/
public abstract void onPaySuccess(String result, int payType);
/**
* 支付失败
*
* @param result
* @param payType
*/
public abstract void onPayFail(String result, int payType);
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有