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>
<SelectionState runConfigName="app">
<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">
<handle>
<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.UniMpUpdate
import com.img.rabbit.utils.UniMpWXPayEvent
import com.img.rabbit.utils.UpdateUtils
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.launch
import org.json.JSONObject
@SuppressLint("UnrememberedMutableState", "MutableCollectionMutableState")
@Composable
@ -117,11 +119,20 @@ fun HomeScreen(
}
LaunchedEffect(Unit) {
UniAppUtils.uniMpFlow.collect { currentMap ->
Log.d("UniMP", "Map 变化了,当前数量: ${currentMap.size}")
DCUniMPSDK.getInstance().setOnUniMPEventCallBack { _, _, data, _ ->//appid, event, data, callback ->
//拉起微信小程序来支付
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 uniVersionConfig by remember { mutableStateOf(PreferenceUtil.getUserConfig()?.config?.uniVersionEntity) }
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.getAppVersionName
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.Interface.IUniMP
import io.dcloud.feature.unimp.config.UniMPOpenConfiguration
@ -147,7 +149,6 @@ object UniAppUtils {
configuration.splashClass = UniMPSplashView::class.java
}
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)
}
@ -167,9 +168,6 @@ object UniAppUtils {
if(uniMp?.isRuning == true){
uniMp.showUniMP()
}
// if(uniMpPair[uniMpId]?.isRuning == true){
// uniMpPair[uniMpId]?.closeUniMP()
// }
// 启动直达页面
startUniMpToPage(context, uniMpId, uniMpType, pagePath)
}
@ -318,7 +316,6 @@ object UniAppUtils {
stringBuilder.append("│ decrypt = ${Constants.AESDecrypt}\n")
stringBuilder.append("│ decrypt = ${Constants.Signature}\n")
stringBuilder.append("-------------> header end <-------------")
Log.i("UniAppUtils", stringBuilder.toString())
return UniMPOpenConfiguration().apply {
@ -337,6 +334,18 @@ object UniAppUtils {
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{