增加H5调用原生支付方法

This commit is contained in:
huangjian
2023-03-22 18:49:25 +08:00
parent ce63fdcd12
commit 7dcd553fba
5 changed files with 69 additions and 15 deletions

View File

@@ -2,22 +2,15 @@ package com.nnbc123.core.pay;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.annotation.Nullable;
import com.alibaba.fastjson.JSON;
import com.alipay.sdk.app.PayTask;
import com.tencent.mm.opensdk.constants.Build;
import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
import com.tencent.mm.opensdk.modelpay.PayReq;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.nnbc123.xchat_android_constants.XChatConstants;
import com.nnbc123.core.BuildConfig;
import com.nnbc123.core.Constants;
import com.nnbc123.core.auth.AuthModel;
@@ -41,6 +34,16 @@ import com.nnbc123.core.pay.view.IPaymentView;
import com.nnbc123.core.utils.net.RxHelper;
import com.nnbc123.library.utils.ListUtils;
import com.nnbc123.library.utils.SingleToastUtil;
import com.nnbc123.xchat_android_constants.XChatConstants;
import com.tencent.mm.opensdk.constants.Build;
import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
import com.tencent.mm.opensdk.modelpay.PayReq;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import org.greenrobot.eventbus.EventBus;
@@ -61,6 +64,7 @@ public class PaymentActivity extends Activity
public static final int REQUEST_CODE_PAY = 1000;
public static final String KEY_CHANNEL = "key_channel";
public static final String KEY_TAROT_JSON = "key_tarot_json";
public static final String KEY_CHARGE_PRODUCT_ID = "key_charge_product_id";
public static final String KEY_PAY_RESULT = "key_pay_result";
public static final String KEY_WANNA_GET_ORDER = "key_wanna_get_order";
@@ -72,6 +76,13 @@ public class PaymentActivity extends Activity
private String paymentPassword;
private volatile IWXAPI api;
public static void start(Context context, String tarotJson) {
Intent intent = new Intent(context, PaymentActivity.class);
intent.putExtra(KEY_TAROT_JSON, tarotJson);
context.startActivity(intent);
}
public static void startToPay(Activity context, String channel, String paymentPassword) {
Intent intent = new Intent(context, PaymentActivity.class);
intent.putExtra(KEY_CHANNEL, channel);
@@ -94,6 +105,11 @@ public class PaymentActivity extends Activity
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent() != null) {
String tarotJson = getIntent().getStringExtra(KEY_TAROT_JSON);
if (!TextUtils.isEmpty(tarotJson)) {
requestWeChatPay(tarotJson);
return;
}
this.channel = getIntent().getStringExtra(KEY_CHANNEL);
this.chargeProdId = getIntent().getStringExtra(KEY_CHARGE_PRODUCT_ID);
this.wannaGetOrder = getIntent().getBooleanExtra(KEY_WANNA_GET_ORDER, true);
@@ -156,6 +172,37 @@ public class PaymentActivity extends Activity
}
}
/**
* 发起充值(塔罗微信原生支付)
*/
@SuppressLint("CheckResult")
public void requestWeChatPay(String tarotJson) {
WeChatAppParam data = JSON.parseObject(tarotJson, WeChatAppParam.class);
api = WXAPIFactory.createWXAPI(this, data.getAppId());
api.registerApp(data.getAppId());
api.handleIntent(getIntent(), PaymentActivity.this);
if (!api.isWXAppInstalled()) {
SingleToastUtil.showToast("未安装微信");
finish();
}
boolean isPaySupported = api.getWXAppSupportAPI() >= Build.PAY_SUPPORTED_SDK_INT;
if (!isPaySupported) {
SingleToastUtil.showToast("不支持的微信版本");
finish();
}
// 拉起微信,直接支付
PayReq req = new PayReq();
req.appId = data.getAppId();
req.partnerId = data.getPartnerId();
req.prepayId = data.getPrepayId();
req.packageValue = data.getPackageValue();
req.nonceStr = data.getNonceStr();
req.timeStamp = data.getTimestamp();
req.sign = data.getSign();
api.sendReq(req);
finish();
}
/**
* 发起充值(银联支付), 下单
*