116 lines
4.6 KiB
Java
116 lines
4.6 KiB
Java
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;
|
|
}
|
|
}
|
|
};
|
|
}
|