2***@qq.com
2***@qq.com
  • 发布:37 分钟前
  • 更新:36 分钟前
  • 阅读:20

微信支付sdk不兼容

分类:uni-app

HBuilderX:5.24
uni-app:Vue3
平台:Android
微信 SDK 日志:sendUsingPendingIntent fail
错误:Targeting S+ requires FLAG_IMMUTABLE or FLAG_MUTABLE

ndroid 原生日志显示:

MicroMsg.SDK.MMessageAct
sendUsingPendingIntent fail

Targeting S+ (version 31 and above) requires that one of
FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.

后端统一下单成功,前端参数检查正常,APK 应用签名也已登记

这是微信sdk版本的问题吗,我是用的android云打包

37 分钟前 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

根据您提供的错误信息 Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent,这是一个典型的 Android 12 (API 31) 及以上系统对 PendingIntent 的兼容性要求

结论:这通常不是微信 SDK 版本过低的问题,而是您的应用 targetSdkVersion 设置过高(31+),但微信 SDK 内部或相关调用链中创建 PendingIntent 时未适配 Android 12 的新要求。

针对您使用的 HBuilderX 5.24 + Android 云打包 场景,建议按以下步骤排查和解决:

1. 检查并降低 targetSdkVersion(推荐先尝试)

由于云打包的 targetSdkVersion 默认可能较高,而当前集成的微信 SDK 版本可能尚未完全适配 Android 12 的 PendingIntent 标志位要求,您可以尝试在 manifest.json 中显式降低 targetSdkVersion30 或更低:

{  
  "app-plus": {  
    "distribute": {  
      "android": {  
        "targetSdkVersion": 30  
      }  
    }  
  }  
}

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

注意:修改后需要重新提交云打包才能生效。这是解决此类 PendingIntent 兼容性问题的最直接方法。

2. 确认微信 SDK 集成方式

根据知识库记录,HBuilderX 3.7.6 及以上版本,微信 SDK(包括支付、登录、分享)已改为 Gradle 线上依赖 方式集成,不再使用本地 aar 文件。

  • 如果您是从旧版本升级而来,请检查项目中是否残留旧的 wechat-sdk-android-without-mta-*.aar 文件(通常位于 libs 目录),如有请移除。
  • 云打包时会自动拉取最新适配的微信 SDK,但如果您本地配置了特定版本,可能会冲突。

3. 检查是否使用了自定义原生插件或 Native.js

如果您项目中使用了:

  • 自定义原生插件(uts 插件或 aar 插件)调用了微信支付
  • Native.js 代码直接操作 Android API

请检查相关代码中创建 PendingIntent 的地方,必须添加 FLAG_IMMUTABLEFLAG_MUTABLE 标志。例如:

// Native.js 示例  
var pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

4. 关于离线打包的特殊说明

如果您后续需要离线打包,参考知识库中类似问题的解决方案,需要在 AndroidManifest.xml 中确保相关 Activity 声明了 android:exported="true"(针对 Android 12 的额外要求),但云打包用户无需手动处理此项

总结建议

  1. 优先尝试方案 1:将 targetSdkVersion 改为 30 后重新云打包测试。
  2. 如果必须使用 targetSdkVersion 31+,则可能需要等待 DCloud 更新云打包环境中的微信 SDK 版本以完全适配 Android 12,或考虑使用插件市场中已适配新版本的支付插件作为临时替代方案。

此错误与后端统一下单、前端参数及 APK 签名登记无关,纯属 Android 系统版本兼容性问题。

内容为 AI 生成,仅供参考

要回复问题请先登录注册