package com.edufound.mobile.pay; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import com.alipay.sdk.app.PayTask; import com.edufound.mobile.base.BasePersenter; import com.edufound.mobile.base.BaseView; import com.edufound.mobile.interfaces.EfunboxPayInterfaces; import com.edufound.mobile.main.MainPersenter; import com.edufound.mobile.pay.ali.PayResult; import com.edufound.mobile.util.Logger; import com.edufound.mobile.util.ToastUtil; import com.tencent.mm.opensdk.modelpay.PayReq; import org.json.JSONObject; import java.util.Map; public class PayPersenter implements PayIPersenter { BaseView mView; public PayPersenter(BaseView view) { mView = view; } @Override public void loadData() { } @Override public void onDisConnNetWork() { } @Override public void onConnNetWork() { } @Override public void WeChatPay(String json) { if (!PayInit.getInstance().WX_API.isWXAppInstalled()) { ToastUtil.showToast("请安装微信"); return; } Message msg = new Message(); msg.obj = json; msg.what = 0xffbcd14; resultHandler.sendMessageDelayed(msg, 0); } @Override public void ALIPay(final String orderInfo) { Logger.e("orderInfo:" + orderInfo); Runnable payRunnable = new Runnable() { @Override public void run() { PayTask alipay = new PayTask(mView.getActivity()); Map result = alipay.payV2(orderInfo, true); Message msg = new Message(); msg.what = 0xffbcd15; msg.obj = result; resultHandler.sendMessage(msg); } }; Thread payThread = new Thread(payRunnable); payThread.start(); } Handler resultHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { switch (msg.what) { case EfunboxPayInterfaces.PAY_BEGIN: ToastUtil.showToast("支付开始"); break; case EfunboxPayInterfaces.PAY_SUCCESS: ToastUtil.showToast("支付成功"); break; case EfunboxPayInterfaces.PAY_ERROR: ToastUtil.showToast("支付失败"); break; case EfunboxPayInterfaces.PAY_CANCEL: ToastUtil.showToast("取消支付"); break; case 0xffbcd14: //微信支付 try { String jsonmessage = msg.obj.toString(); if (jsonmessage != null && jsonmessage.length() > 0) { JSONObject json = new JSONObject(jsonmessage); Logger.e("json:" + json); if (null != json) { PayReq req = new PayReq(); req.appId = json.getString("appid"); req.partnerId = json.getString("partnerid"); req.prepayId = json.getString("prepayid"); req.nonceStr = json.getString("noncestr"); req.timeStamp = json.getString("timestamp"); req.packageValue = json.getString("package"); req.sign = json.getString("sign"); PayInit.getInstance().WX_API.sendReq(req); } else { Logger.e("返回错误" + json.getString("retmsg")); mView.getActivity().finish(); } } else { Logger.e("服务器请求错误"); mView.getActivity().finish(); } } catch (Exception e) { Logger.e("异常:" + e.getMessage()); mView.getActivity().finish(); } break; case 0xffbcd15: //支付宝支付 PayResult payResult = new PayResult((Map) msg.obj); String resultInfo = payResult.getResult();// 同步返回需要验证的信息 String resultStatus = payResult.getResultStatus(); Logger.e("resultInfo:" + resultInfo); Logger.e("resultStatus:" + resultStatus); Message alimsg = new Message(); alimsg.what = MainPersenter.PAY_RESULT; // 判断resultStatus 为9000则代表支付成功 if (TextUtils.equals(resultStatus, "9000")) { // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。 // ToastUtil.showToast( "支付成功"); alimsg.obj = 0; } else { // 该笔订单真实的支付结果,需要依赖服务端的异步通知。 // CustomToast.showToast(mContext, "支付失败", 3000); alimsg.obj = -11; } MainPersenter.mPersenterHandler.sendMessage(alimsg); break; } return false; } }); } interface PayIPersenter extends BasePersenter { void WeChatPay(String json); void ALIPay(String orderInfo); }