Files
yusheng-android/moduleUtil/src/main/java/com/xscm/moduleutil/widget/PaymentUtil.java

116 lines
4.6 KiB
Java
Raw Normal View History

2025-10-20 10:16:44 +08:00
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<String, String> 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<String, String>) 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;
}
}
};
}