package com.xscm.moduleutil.widget; import static com.xscm.moduleutil.utils.permission.PermissionUtils.TAG; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import com.alipay.sdk.app.PayTask; import com.blankj.utilcode.util.ToastUtils; import com.orhanobut.logger.Logger; import com.xscm.moduleutil.R; import com.xscm.moduleutil.bean.AppPay; import com.xscm.moduleutil.event.PayEvent; import com.tencent.liteav.base.Log; import com.tencent.mm.opensdk.constants.ConstantsAPI; import com.tencent.mm.opensdk.modelbase.BaseResp; import com.tencent.mm.opensdk.modelpay.PayReq; import com.tencent.mm.opensdk.openapi.IWXAPI; import org.greenrobot.eventbus.EventBus; import java.util.Map; public class PaymentUtil { private static final int SDK_PAY_FLAG = 1; public static void payAlipay(final Context mContext, String orderNo) { // 订单信息 final String orderInfo = orderNo; Runnable payRunnable = new Runnable() { @Override public void run() { PayTask alipay = new PayTask((Activity) mContext); Map result = alipay.payV2(orderInfo, true); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = result; mHandler.sendMessage(msg); } }; // 必须异步调用 Thread payThread = new Thread(payRunnable); payThread.start(); } public static void payWxMiniProgram2(IWXAPI api, AppPay appPay) { if (!api.isWXAppInstalled()) { ToastUtils.showShort("请安装微信"); return; } PayReq request = new PayReq(); request.appId = appPay.getWx().getAppid(); request.partnerId = appPay.getWx().getPartnerid(); request.prepayId= appPay.getWx().getPrepayid(); request.packageValue = "Sign=WXPay"; request.nonceStr= appPay.getWx().getNoncestr(); request.timeStamp= appPay.getWx().getTimestamp(); request.sign= appPay.getWx().getSign(); api.sendReq(request); Logger.e("@@@@@","payWxMiniProgram2:"+request); } public void onResp(BaseResp resp){ if(resp.getType()== ConstantsAPI.COMMAND_PAY_BY_WX){ Log.d(TAG,"onPayFinish,errCode="+resp.errCode); // AlertDialog.Builder builder=new AlertDialog.Builder(this); // builder.setTitle(""); } } @SuppressLint("HandlerLeak") public static Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case SDK_PAY_FLAG: { PayResult payResult = new PayResult((Map) msg.obj); /** 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。 */ // 同步返回需要验证的信息 String resultInfo = payResult.getResult(); String resultStatus = payResult.getResultStatus(); // 判断resultStatus 为9000则代表支付成功 if (TextUtils.equals(resultStatus, "9000")) { // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。 ToastUtils.showShort("支付成功"); PayEvent messageEvent = new PayEvent(Constants.PAYSUCESS, "支付成功"); EventBus.getDefault().post(messageEvent); } else if (TextUtils.equals(resultStatus, "6001")) { // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。 ToastUtils.showShort("支付取消"); PayEvent messageEvent = new PayEvent(-2, "支付取消"); EventBus.getDefault().post(messageEvent); } else { // 该笔订单真实的支付结果,需要依赖服务端的异步通知。 ToastUtils.showShort("支付失败"); // StatisticsUtils.addEvent(MyApplication.getInstance(), Constant.OpenInstall.ALIRECHARGEFAIL); // StatisticsUtils.addEvent(MyApplication.getInstance(), Constant.OpenInstall.RECHARGEFAIL); } break; } default: break; } } }; }