Skip to content

x-wechatshare-s 微信开放平台

微信开放平台「移动应用」Open SDK 封装:跳转微信、分享卡片、拉起小程序、微信支付、微信登录。函数与类型均加 x 前缀,避免与官方同名冲突。回调统一走 DCloud success / fail / complete

三端用的都是官方静态包,已随插件落盘,不走远程依赖:

平台官方包位置
Androidwechat-sdk-android-6.8.40.aarutssdk/app-android/libs/
iOSWechatOpenSDK.xcframework 2.0.7(含支付)utssdk/app-ios/Frameworks/
HarmonyOS@tencent/wechat_open_sdk 1.0.20 HARutssdk/app-harmony/libs/

兼容性

HarmonyiOSAndroidWEB微信小程序
支持支持支持不支持不支持

Web 与微信小程序导出同名空签名,全部 fail 1008。微信小程序里请用官方 wx.*,移动应用 Open SDK 只在 App 端可用。

几处官方 SDK 本身的端差异:

  • HarmonyOS 版没有 WXMusicObjectxWechatSharetype: "music" 会返回 fail 1005
  • iOS 版 PayReq 没有 extData / signType,传了会被忽略;对应地 XWechatPayResult.extData 在 iOS 恒为空串

调用

ts
import {
  xWechatRegister,
  xWechatIsInstalled,
  xWechatOpen,
  xWechatShare,
  xWechatLaunchMiniProgram,
  xWechatPay,
  xWechatAuth,
  XWechatRegisterOptions,
  XWechatShareOptions
} from "@/uni_modules/x-wechatshare-s"

// 每次冷启动先注册一次,AppID 由你的开放平台应用提供
xWechatRegister({
  appId: "wx0000000000000000",
  universalLink: "https://your.domain/app/",
  success: (res) => {
    console.log(res.registered)
  }
} as XWechatRegisterOptions)

// 分享网页卡片
xWechatShare({
  type: "webpage",
  scene: "session",
  title: "标题",
  summary: "描述",
  href: "https://uniapp.dcloud.net.cn",
  thumb: "/static/logo.png",
  success: () => {
    console.log("微信已确认分享")
  }
} as XWechatShareOptions)

API

函数说明
xWechatRegister(options)注册 AppID。iOS 建议同时传 universalLink,Android 可用 checkSignature 关闭微信客户端签名校验
xWechatIsInstalled(options?)installedsupportApi
xWechatOpen(options?)拉起微信客户端
xWechatShare(options)分享卡片
xWechatLaunchMiniProgram(options)拉起小程序,success 回小程序 navigateBackApplication 带出的 extMsg
xWechatPay(options)微信支付,六要素由业务服务端下单后下发
xWechatAuth(options?)微信登录,successcode

xWechatSharetypetext / image / webpage / music / video / miniProgram / filescenesession 好友 / timeline 朋友圈 / favorite 收藏。小程序卡片微信只允许发到会话,插件会强制改成 session

thumbimagePathfilePath 支持 /static/xx.png 这类应用内路径、绝对路径和 http(s) 地址,插件会自动转换并把缩略图压到微信要求的大小内。

错误码

含义
1001系统错误
1002参数错误
1003未调用 xWechatRegister
1004未安装微信
1005当前微信版本或当前平台的官方 SDK 不支持此功能
1006用户取消
1007微信拒绝或发送失败
1008当前平台不支持(Web / 微信小程序)

success 表示微信已回调成功,不是「已打开微信」。收不到回调时先查下面的回跳配置。

回跳配置

微信把结果回传给宿主 App 的路径是平台强制的,三端要求不同。

Android:无需配置

插件的 AndroidManifest.xml 已经用 DCloud 云打包保留的 ${apk.applicationId} 占位符生成了两个别名:

  • {applicationId}.wxapi.WXEntryActivity
  • {applicationId}.wxapi.WXPayEntryActivity

它们都指向插件内部的 XWechatCallbackActivity。登录和支付另外通过 callbackClassName 直接指到同一个 Activity。

如果你的工程已经自己写了 wxapi 下的这两个类(例如从原生工程迁移过来),会和插件的别名冲突,二选一:删掉自己的类,或删掉插件 AndroidManifest.xml 里的两个 activity-alias 并改用 native-templates/android/wxapi/ 下的模板(模板内部会调 XWechatShareNative.handleIntent(intent))。

注意:nativeResources/android 不支持放 Java / Kotlin 源码,所以模板只对离线打包有意义。

插件通过 UTSiOSHookProxy 接管了 application:openURL:continueUserActivity:,不需要改宿主 AppDelegate,但下面两项必须你自己配:

  1. manifest.jsonapp-ios.distribute.urltypes 里加上 wx{你的AppID},例如 wx0000000000000000
  2. Universal Link 域名要在开放平台登记,并配到 app-ios.distribute.capabilities.entitlementscom.apple.developer.associated-domains,与 xWechatRegister 传的 universalLink 前缀一致

LSApplicationQueriesSchemes 里的 weixin / weixinULAPI 已由插件的 Info.plist 提供。

HarmonyOS:无需配置

插件在 app-harmony/index.uts 里通过 UTSHarmony.onAppAbilityCreateUTSHarmony.onAppAbilityNewWant 接住微信回跳的 want 并交给 SDK。只有当你自己维护 EntryAbility.ets 并绕开了 uni-app x 的生命周期分发时,才需要参考 native-templates/harmony/EntryAbility.snippet.ets 手动转发。

你需要自己准备的

  • 微信开放平台「移动应用」AppID,且三端包名 / 签名 / Bundle ID / Universal Link / 鸿蒙 BundleName 已审核通过
  • 支付:商户号 + 服务端预下单,插件只负责把六要素交给 PayReq,不生成 sign
  • 改过原生配置后必须重新提交云端打包自定义基座,标准基座里没有微信 SDK

没有真实 AppID 时代码和编译都能通过,真机拉起微信会因签名校验失败。

更新日志

1.0.0(2026-08-17)

  • 新增 x-wechatshare-s:xWechatRegister、xWechatIsInstalled、xWechatOpen、xWechatShare、xWechatLaunchMiniProgram、xWechatPay、xWechatAuth。
  • Android / iOS / HarmonyOS 使用官方 Open SDK 静态包真实实现,Web 与微信小程序为同名空签名并 fail 1008。
  • Android 用 ${apk.applicationId} 别名自动接管 wxapi 回跳,iOS 用 UTSiOSHookProxy 接管 openURL / UniversalLink,鸿蒙用 UTSHarmony 生命周期接管 want,三端均无需宿主手动接线。
最近更新