1、加入小程序支付(1、微信小程序,2、UniMp小程序)
This commit is contained in:
shenzuqiang 2026-03-09 09:46:11 +08:00
parent 56cc572077
commit f5aa72bb3a
4 changed files with 29 additions and 9 deletions

View File

@ -4,7 +4,7 @@
<selectionStates> <selectionStates>
<SelectionState runConfigName="app"> <SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" /> <option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2026-03-05T07:51:25.715983900Z"> <DropdownSelection timestamp="2026-03-09T01:29:27.555907500Z">
<Target type="DEFAULT_BOOT"> <Target type="DEFAULT_BOOT">
<handle> <handle>
<DeviceId pluginId="PhysicalDevice" identifier="serial=JRBI89BIE6AI5TG6" /> <DeviceId pluginId="PhysicalDevice" identifier="serial=JRBI89BIE6AI5TG6" />

Binary file not shown.

View File

@ -62,10 +62,12 @@ import com.img.rabbit.utils.AppEventBus
import com.img.rabbit.utils.UniAppUtils import com.img.rabbit.utils.UniAppUtils
import com.img.rabbit.utils.UniMpUpdate import com.img.rabbit.utils.UniMpUpdate
import com.img.rabbit.utils.UniMpWXPayEvent import com.img.rabbit.utils.UniMpWXPayEvent
import com.img.rabbit.utils.UpdateUtils
import com.img.rabbit.viewmodel.GeneralViewModel import com.img.rabbit.viewmodel.GeneralViewModel
import io.dcloud.feature.sdk.DCUniMPSDK
import io.dcloud.feature.unimp.DCUniMPJSCallback
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.json.JSONObject
@SuppressLint("UnrememberedMutableState", "MutableCollectionMutableState") @SuppressLint("UnrememberedMutableState", "MutableCollectionMutableState")
@Composable @Composable
@ -117,11 +119,20 @@ fun HomeScreen(
} }
LaunchedEffect(Unit) { LaunchedEffect(Unit) {
UniAppUtils.uniMpFlow.collect { currentMap -> DCUniMPSDK.getInstance().setOnUniMPEventCallBack { _, _, data, _ ->//appid, event, data, callback ->
Log.d("UniMP", "Map 变化了,当前数量: ${currentMap.size}") //拉起微信小程序来支付
val weixinMpOriId = JSONObject(data.toString()).optString("weixinMpOriId")
val outTradeNo = JSONObject(data.toString()).optString("outTradeNo")
UniAppUtils.startUniPay(
api = generalViewModel.api,
weixinMpOriId = weixinMpOriId,
outTradeNo = outTradeNo
)
} }
} }
var homeIconConfig by remember { mutableStateOf(PreferenceUtil.getUserConfig()?.config?.homeIconEntity) } var homeIconConfig by remember { mutableStateOf(PreferenceUtil.getUserConfig()?.config?.homeIconEntity) }
var uniVersionConfig by remember { mutableStateOf(PreferenceUtil.getUserConfig()?.config?.uniVersionEntity) } var uniVersionConfig by remember { mutableStateOf(PreferenceUtil.getUserConfig()?.config?.uniVersionEntity) }
LaunchedEffect(globalUserConfig) { LaunchedEffect(globalUserConfig) {

View File

@ -13,6 +13,8 @@ import com.img.rabbit.provider.storage.PreferenceUtil.getBDVID
import com.img.rabbit.provider.utils.HeadParamUtils.applicationContext import com.img.rabbit.provider.utils.HeadParamUtils.applicationContext
import com.img.rabbit.provider.utils.HeadParamUtils.getAppVersionName import com.img.rabbit.provider.utils.HeadParamUtils.getAppVersionName
import com.img.rabbit.uni.UniMPSplashView import com.img.rabbit.uni.UniMPSplashView
import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram
import com.tencent.mm.opensdk.openapi.IWXAPI
import io.dcloud.feature.sdk.DCUniMPSDK import io.dcloud.feature.sdk.DCUniMPSDK
import io.dcloud.feature.sdk.Interface.IUniMP import io.dcloud.feature.sdk.Interface.IUniMP
import io.dcloud.feature.unimp.config.UniMPOpenConfiguration import io.dcloud.feature.unimp.config.UniMPOpenConfiguration
@ -147,7 +149,6 @@ object UniAppUtils {
configuration.splashClass = UniMPSplashView::class.java configuration.splashClass = UniMPSplashView::class.java
} }
updateUniMp(uniVersion.unimp_id, DCUniMPSDK.getInstance().openUniMP(context, uniVersion.unimp_id, configuration)) updateUniMp(uniVersion.unimp_id, DCUniMPSDK.getInstance().openUniMP(context, uniVersion.unimp_id, configuration))
//uniMpPair[uniVersion.unimp_id] = DCUniMPSDK.getInstance().openUniMP(context, uniVersion.unimp_id, configuration)
} }
onResult(false) onResult(false)
} }
@ -167,9 +168,6 @@ object UniAppUtils {
if(uniMp?.isRuning == true){ if(uniMp?.isRuning == true){
uniMp.showUniMP() uniMp.showUniMP()
} }
// if(uniMpPair[uniMpId]?.isRuning == true){
// uniMpPair[uniMpId]?.closeUniMP()
// }
// 启动直达页面 // 启动直达页面
startUniMpToPage(context, uniMpId, uniMpType, pagePath) startUniMpToPage(context, uniMpId, uniMpType, pagePath)
} }
@ -318,7 +316,6 @@ object UniAppUtils {
stringBuilder.append("│ decrypt = ${Constants.AESDecrypt}\n") stringBuilder.append("│ decrypt = ${Constants.AESDecrypt}\n")
stringBuilder.append("│ decrypt = ${Constants.Signature}\n") stringBuilder.append("│ decrypt = ${Constants.Signature}\n")
stringBuilder.append("-------------> header end <-------------") stringBuilder.append("-------------> header end <-------------")
Log.i("UniAppUtils", stringBuilder.toString()) Log.i("UniAppUtils", stringBuilder.toString())
return UniMPOpenConfiguration().apply { return UniMPOpenConfiguration().apply {
@ -337,6 +334,18 @@ object UniAppUtils {
extraData.put("isCombo", "ok") extraData.put("isCombo", "ok")
} }
} }
/**
* 拉起微信小程序来支付
*/
fun startUniPay(api: IWXAPI, weixinMpOriId: String, outTradeNo: String) {
//isStartComboPay = true
val req = WXLaunchMiniProgram.Req()
req.userName = weixinMpOriId // 填小程序原始id
req.path = "pages/index/index?outTradeNo=$outTradeNo" //拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE// 可选打开 开发版,体验版和正式版
api.sendReq(req)
}
} }
enum class UniMpUpdate{ enum class UniMpUpdate{