增加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

@@ -505,6 +505,7 @@ class HomePartyFragment : BaseFragment(), View.OnClickListener, OnShareDialogIte
binding.tvFollowRoom.visibility =
if (AvRoomDataManager.get().isRoomOwner) View.GONE else View.VISIBLE
if (AvRoomDataManager.get().isRoomFans) {
binding.tvFollowRoom.visibility = View.GONE
binding.tvFollowRoom.text = "已收藏"
binding.tvFollowRoom.setBackgroundResource(R.drawable.shape_bdbfd0_corner)
} else {

View File

@@ -23,6 +23,7 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.security.realidentity.RPEventListener;
import com.alibaba.security.realidentity.RPResult;
import com.alibaba.security.realidentity.RPVerify;
import com.nnbc123.core.pay.PaymentActivity;
import com.nnbc123.library.utils.file.JXFileUtils;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.orhanobut.logger.Logger;
@@ -587,4 +588,10 @@ public class JSInterface {
mWebView.evaluateJavascript("saveBase64ImageCallback(" + result + ")", null);
}
@JavascriptInterface
public void openNativeTarotPay(String tarotJson) {
mActivity.runOnUiThread(() -> PaymentActivity.start(mActivity, tarotJson));
}
}

View File

@@ -64,15 +64,14 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="5dp"
android:layout_weight="0.62"
android:layout_marginEnd="12dp"
android:layout_weight="0.72"
android:drawableStart="@drawable/ic_diamond_rank"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:includeFontPadding="false"
android:lines="1"
android:textColor="#1726AA"
android:textSize="@dimen/dp_18"
android:textSize="@dimen/sp_18"
android:textStyle="bold"
tools:text="9999999" />

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();
}
/**
* 发起充值(银联支付), 下单
*

View File

@@ -25,5 +25,5 @@ only_arm64=false
channel_file=channel.txt
version_name=1.0.0
version_code=100
version_name=1.0.1
version_code=101