更新记录

1.0.10(2026-11-02)

  • 修复示例页面和辅助模块使用相对引入路径的问题,统一通过 @/uni_modules/ 引用插件内文件,复制页面到其他目录时无需另行复制辅助代码。
  • 修复 Android 运行时 aapt2Link 提示微信回调别名不是合法 Java 类名,以及随后找不到名称“R”的编译错误。
  • 微信登录、分享和支付的两个回调别名统一在项目根 AndroidManifest.xml 配置,保留插件内真实回调入口和图片分享 FileProvider;已有根清单配置可继续使用,未配置时请按 README 合并示例。
  • 修改原生清单后需重新制作并安装 Android 自定义基座或重新打包应用;公开 API 与 iOS 实现不变。

1.0.9(2026-10-18)

  • 修复 Android 1.0.8 升级后微信登录请求可以发起但回到应用后没有 success 或 fail 回调的问题;恢复插件内置的 WXEntryActivity 与 WXPayEntryActivity 回调别名,登录、分享和支付回流可以进入同一入口。
  • 需要重新制作并安装 Android 自定义基座或重新打包应用;如果项目根清单已手工声明同名微信回调入口,请合并为一组,避免重复声明。

1.0.8(2026-10-17)

  • 修复 Android 在“选择哪个微信”的界面直接退出后,后续分享持续提示 9014111 的问题;返回应用且未收到微信结果时结束本次等待,允许再次分享,保留正常成功和取消回调。
  • 修复 Android 运行和打包时的编译失败,以及随后出现的找不到名称“R”的问题。
  • 补充 Android 微信回调入口配置示例;升级后请按 README 将配置合并到项目清单,原有 API 和调用方式保持不变。
  • 需要重新制作并安装 Android 自定义基座或重新打包应用;iOS 原生内容未变,无需因本次升级重新制作 iOS 基座。
查看更多

平台兼容性

uni-app(4.84)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
√ √ - - √ √ √ √ √
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(4.84)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - √ √ √ -

lizhao-wechat-kit

介绍

lizhao-wechat-kit 是面向 uni-app 与 uni-app x 的微信开放能力 UTS API 插件,用一套调用方式接入 Android/iOS 微信注册、登录、分享、支付、商家转账、打开小程序、客服和回流监听。

  • 插件名:lizhao-wechat-kit
  • 插件类型:UTS API 插件
  • 调用环境:uni-app / uni-app x
  • 导入路径:@/uni_modules/lizhao-wechat-kit

功能特色

功能 能力与说明
统一API 统一公开 API:业务代码只调用 register / login / share / pay 等统一名称,不需要判断 registerByAndroid 或 registerByIos。
微信常见业务 覆盖常见微信业务:支持授权登录、文本/图片/网页/小程序分享、支付、商家转账确认、打开小程序、打开客服和微信回流监听。
真实SDK状态 真实能力状态:注册结果、微信安装状态和 API 支持状态来自微信 SDK,不用静态值伪造成功。
一致回调 完整回调契约:异步 API 支持 success / fail / complete,Android 与 iOS 使用一致的业务回调语义。
明确错误边界 明确失败边界:统一错误码 9014101~9014111,未安装微信、未注册、参数错误、用户取消和签名配置错误可分别处理。
双宿主兼容 双项目兼容:同一插件 API 同时服务 uni-app 与 uni-app x,平台不支持时返回明确错误而不是静默失败。

适合哪些场景

场景 接入说明
授权登录 App 使用微信授权登录,并将临时 code 交给业务服务端换取登录态。
内容分享 将文字、图片、网页、音乐、视频、文件或小程序卡片分享给微信好友、朋友圈或收藏。
小程序业务闭环 从 App 打开指定微信小程序页面,适用于商城、会员、活动和服务闭环。
支付与转账 接入微信支付或商家转账用户确认,前端只负责向微信提交服务端生成的参数。
客服与回流 打开微信客服会话,或监听用户从微信返回 App 时携带的回流数据。
双宿主跨平台 同一业务同时维护 Android/iOS、uni-app/uni-app x,希望复用一套接口和错误处理逻辑。
业务目标 推荐 API 是否需要业务服务端 接入重点
只判断微信是否可用 isInstall / isWXAppSupportApi / getApiSupportInfo 否 仍建议先完成 SDK 注册,以获得完整能力状态
拉起微信客户端 openWXApp 否 设备需安装微信,SDK 注册成功
微信授权登录 login 是 服务端使用返回的 code 换取微信会话
分享内容 share 视分享类型而定 图片需本地可访问路径,小程序分享需原始 ID
打开微信小程序 launchMiniProgram 否 userName 使用 gh_ 开头的小程序原始 ID
打开微信客服 openCustomerService 否 准备企业 ID 和客服 URL
微信支付 pay 是 预支付单和签名必须由服务端生成
商家转账确认 requestMerchantTransfer 是 转账业务包和签名参数必须由服务端生成
处理微信回流 onLaunchFromWX / offLaunchFromWX 视业务而定 页面或应用初始化时订阅,销毁时解除

下载与导入

保留完整插件目录,从插件根入口导入;按使用宿主注册下方示例页面。文中含类型声明的脚本片段适用于 uni-app x / UTS;<script setup> 完整页需 Vue 3。普通 uni-app 使用无类型的 JavaScript 写法,Options API 示例兼容 Vue 2 / Vue 3。

import * as WeChatKit from '@/uni_modules/lizhao-wechat-kit'

业务代码只能调用下方 API 列表中的统一公开名称。不要直接调用 registerByAndroid、registerByIos 或其他 *By平台 函数;这些函数是插件内部委派入口,参数签名不属于客户接入契约。

接入前准备

  1. 在微信开放平台创建并审核移动应用,取得 wx 开头的移动应用 AppID。
  2. Android 端确保最终包名和应用签名与开放平台一致;iOS 端确保 Bundle ID、URL Scheme、Universal Link 和 Associated Domains 完整配置。
  3. 使用包含本插件原生依赖的自定义基座或云打包安装包,标准基座和资源热更新不能新增微信 OpenSDK。
  4. 在真实安装了微信的设备上测试。模拟器可验证参数和失败回调,但不能代替登录、分享、支付等真实微信链路。
  5. 支付、商家转账和登录换取会话等敏感操作必须由业务服务端参与,禁止在客户端保存 AppSecret、商户密钥或私钥。

Android 微信回调入口配置

Android 项目需要在项目根目录 AndroidManifest.xml 配置微信返回 App 的入口,登录、分享和支付通过这些入口接收结果。插件提供实际回调 Activity,应用需要声明与最终包名对应的两个回调别名;仅升级插件不能替代这项配置。

  1. 请打开插件内的 Android 清单示例(uni_modules/lizhao-wechat-kit/example/android/AndroidManifest.xml),将 <application> 内的一个 <activity> 和两个 <activity-alias> 合并到项目根目录 AndroidManifest.xml 的 <application> 中;根目录尚无清单时,可从该示例创建。
  2. 项目根清单已经声明同名微信入口时,只保留一组配置,确保真实 <activity> 位于两个 <activity-alias> 之前,并让两个别名的 android:targetActivity 指向示例中的回调 Activity;不要重复声明。
  3. 保留示例中的 ${applicationId},打包时会自动使用实际 Android 应用包名,不要填写微信 AppID。
  4. 两个回调别名只放在项目根清单,不要复制到插件的 uni_modules/lizhao-wechat-kit/utssdk/app-android/AndroidManifest.xml,否则可能导致 Android 资源编译失败。

完成升级或清单合并后,重新制作并安装 Android 自定义基座或重新打包应用,再验证微信返回 App 后的登录、分享和支付回调。

完整示例源码

  • uni-app 综合调试页:uni_modules/lizhao-wechat-kit/example/uniapp/wechatKit.vue
  • uni-app x 接入示例:uni_modules/lizhao-wechat-kit/example/uniappx/index.uvue

综合调试页提供注册参数、安装检测、API 能力、登录、分享、支付、小程序、客服、回流监听和运行日志,适合在自定义基座中逐项验收。复制到业务页面时,只保留实际需要的能力和参数,不要把调试占位值带入生产环境。

从基础到进阶:按业务模块使用

五分钟最小接入

先完成 SDK 注册,再读取能力矩阵。这个示例适合作为接入后的第一个验证点:

import * as WeChatKit from '@/uni_modules/lizhao-wechat-kit'

WeChatKit.register({
  appId: 'wx1234567890abcdef',
  // Android 可传空字符串;iOS 必须填写已完成 AASA 配置的 HTTPS Universal Link。
  universalLink: 'https://your.domain.com/app/',
  success(registerResult) {
    console.log('微信 SDK 注册成功', registerResult)

    WeChatKit.getApiSupportInfo({
      success(info) {
        console.log('微信能力矩阵', info)
      },
      fail(err) {
        console.error('读取能力矩阵失败', err)
      },
      complete(result) {
        console.log('能力矩阵检查完成', result)
      }
    })
  },
  fail(err) {
    console.error('微信 SDK 注册失败', err)
  },
  complete(result) {
    console.log('微信 SDK 注册流程完成', result)
  }
})

注册成功只表示当前 App 已通过微信 SDK 注册校验,不代表用户已经登录,也不代表支付或分享业务已经完成。后续能力必须分别调用对应 API。

判断微信是否安装及版本能力

isInstall 和 isWXAppSupportApi 是同步方法,可用于控制按钮是否可用:

const installed = WeChatKit.isInstall()
const supportTargetApi = WeChatKit.isWXAppSupportApi(0)

console.log('是否安装微信', installed)
console.log('是否支持目标 API', supportTargetApi)

传入的 API 级别由业务根据目标微信能力确定;不确定时优先使用 getApiSupportInfo 查看完整能力状态。

拉起微信客户端

WeChatKit.openWXApp({
  success(res) {
    console.log('已提交拉起微信请求', res)
  },
  fail(err) {
    console.error('拉起微信失败', err)
  },
  complete(res) {
    console.log('拉起微信调用完成', res)
  }
})

以下示例均应在 register 成功后调用。

微信授权登录

WeChatKit.login({
  state: 'login-' + Date.now().toString(),
  success(res) {
    console.log('微信授权成功,临时 code =', res.code)
    // 将 res.code 发送给业务服务端,由服务端换取微信会话和业务登录态。
  },
  fail(err) {
    console.error('微信授权失败', err)
  },
  complete(res) {
    console.log('微信授权流程完成', res)
  }
})

不要在客户端使用 AppSecret 换取 access_token。state 应由业务生成并在服务端校验,避免授权结果被串用。

分享文本

WeChatKit.share({
  type: 0,
  scene: 0,
  text: '这是一段要分享给微信好友的文字',
  success(res) {
    console.log('文本分享请求成功', res)
  },
  fail(err) {
    console.error('文本分享失败', err)
  },
  complete(res) {
    console.log('文本分享流程完成', res)
  }
})

分享网页

WeChatKit.share({
  type: 3,
  scene: 0,
  title: '网页标题',
  desc: '网页内容摘要',
  href: 'https://example.com/article/1001',
  thumbImageUrl: '/storage/emulated/0/Download/share-thumb.jpg',
  success(res) {
    console.log('网页分享请求成功', res)
  },
  fail(err) {
    console.error('网页分享失败', err)
  },
  complete(res) {
    console.log('网页分享流程完成', res)
  }
})

分享本地图片

WeChatKit.share({
  type: 1,
  scene: 0,
  imageUrl: '/storage/emulated/0/Download/share-image.jpg',
  thumbImageUrl: '/storage/emulated/0/Download/share-thumb.jpg',
  success(res) {
    console.log('图片分享请求成功', res)
  },
  fail(err) {
    console.error('图片分享失败', err)
  },
  complete(res) {
    console.log('图片分享流程完成', res)
  }
})

图片必须是当前 App 可以读取的本地路径。远程图片应先下载到本地并检查文件存在,再交给插件分享。

私有目录图片分享到朋友圈(uni-app / uni-app x)

1.0.7 支持直接传入应用可读取的私有目录或临时下载图片,不需要先保存到系统相册。下载仍由业务侧完成,拿到 tempFilePath 或已经写入 uni.env.USER_DATA_PATH 的图片路径后,继续使用原 share 接口:

// localImagePath 是业务已下载或生成的本地图片路径;文件必须已经存在。
function sharePrivateImage(localImagePath: string) {
  WeChatKit.share({
    type: 1,
    scene: 1, // 朋友圈;微信好友使用 0。
    imageUrl: localImagePath,
    success: (res) => {
      console.log('私有图片分享成功', res)
    },
    fail: (err) => {
      console.error('私有图片分享失败', err)
    },
    complete: (res) => {
      console.log('私有图片分享流程完成', res)
    }
  })
}
  • Android:插件在应用私有缓存中准备独立图片副本,以 FileProvider 的 content:// 地址仅授予微信读取权限;分享结束或发送失败时清理临时授权及副本。不会写入相册、MediaStore 或触发媒体扫描,不修改原文件。
  • Android 分享处理中会拒绝重复请求。在“选择哪个微信”的界面退出,或返回应用后仍未收到微信结果时,本次调用以 9014107 触发 fail / complete 并允许重新分享;这不代表微信已确认分享成功或取消。仍停留在微信时保留原等待,30 分钟未收到结果则回收本次资源并报告超时。进程退出留下的副本会在下次图片分享时按过期时间和容量上限清理。
  • iOS:解析当前应用的沙盒路径后直接读取图片数据交给微信 SDK,不调用相册保存接口。
  • 两端支持可读绝对路径、正确编码的 file:// 地址和宿主支持的 _doc/、_downloads/、unifile:// 路径。Android 也支持当前应用已有读取权限的 content:// 图片;iOS 不支持 Android 的 content URI。
  • 文件不能是目录或空文件,图片最大 25 MiB。远程 http(s) URL 不由分享接口自动下载;源文件在插件准备完成前应保持可读。
  • 普通绝对路径可包含中文、空格、#、%;传 file:// URI 时须正确编码文件名,避免把 # 当作片段或把 ? 当作查询参数。

本功能不会帮客户执行“下载到相册”。如业务需要用户主动保存相册,请独立提供保存按钮。Android 新增原生 Provider 配置、iOS 更新原生读取逻辑,升级后两端都需重新制作匹配版本的自定义基座或重新打包安装,资源热更新不能替换原生部分。

排查分享失败时,请复制 fail 中的完整错误,以及同次操作的 [lizhao-wechat-kit][Android][图片分享] 日志;Android 日志包含请求号、准备阶段、来源类别、字节数和资源回收状态,iOS 读取错误包含路径解析、文件检查或文件读取阶段。日志不会输出图片内容或完整私有文件路径。

打开微信小程序

WeChatKit.launchMiniProgram({
  userName: 'gh_xxxxxxxx',
  path: 'pages/index/index?from=app',
  miniProgramType: 0,
  success(res) {
    console.log('打开小程序请求成功', res)
  },
  fail(err) {
    console.error('打开小程序失败', err)
  },
  complete(res) {
    console.log('打开小程序调用完成', res)
  }
})

userName 必须填写微信公众平台提供的 gh_ 开头小程序原始 ID,不是小程序 AppID。miniProgramType:0 正式版、1 开发版、2 体验版。

打开微信客服

WeChatKit.openCustomerService({
  corpId: '企业ID',
  url: 'https://work.weixin.qq.com/kfid/your-service-url',
  success(res) {
    console.log('打开微信客服请求成功', res)
  },
  fail(err) {
    console.error('打开微信客服失败', err)
  },
  complete(res) {
    console.log('打开微信客服调用完成', res)
  }
})

支付和转账参数必须来自业务服务端。以下占位值只说明字段结构,不能直接用于生产交易。

微信支付

WeChatKit.pay({
  partnerId: '服务端返回的商户号',
  prepayId: '服务端返回的预支付单号',
  nonceStr: '服务端返回的随机串',
  timeStamp: 1720000000,
  package: 'Sign=WXPay',
  sign: '服务端生成的支付签名',
  signType: 'MD5',
  success(res) {
    console.log('微信支付回调成功', res)
    // 最终支付状态仍应由服务端查询微信订单或接收支付通知确认。
  },
  fail(err) {
    console.error('微信支付失败', err)
  },
  complete(res) {
    console.log('微信支付流程完成', res)
  }
})

客户端成功回调不能代替服务端订单确认。发货、充值等业务必须以服务端验证后的支付结果为准。

商家转账用户确认

WeChatKit.requestMerchantTransfer({
  mchId: '服务端返回的商户号',
  package: '服务端返回的转账业务包参数',
  appId: 'wx1234567890abcdef',
  openId: '服务端确认的用户 openId',
  transferId: '服务端返回的转账单号',
  businessType: 'transfer_to_change',
  success(res) {
    console.log('已完成商家转账用户确认请求', res)
  },
  fail(err) {
    console.error('商家转账确认失败', err)
  },
  complete(res) {
    console.log('商家转账确认流程完成', res)
  }
})

分享微信小程序卡片

WeChatKit.share({
  type: 4,
  scene: 0,
  title: '小程序卡片标题',
  desc: '小程序卡片说明',
  thumbImageUrl: '/storage/emulated/0/Download/mini-thumb.jpg',
  miniProgram: {
    userName: 'gh_xxxxxxxx',
    path: 'pages/index/index?from=share',
    miniProgramType: 0,
    webpageUrl: 'https://example.com/fallback'
  },
  success(res) {
    console.log('小程序卡片分享请求成功', res)
  },
  fail(err) {
    console.error('小程序卡片分享失败', err)
  },
  complete(res) {
    console.log('小程序卡片分享流程完成', res)
  }
})

监听微信回流

const launchListener = (res) => {
  console.log('收到微信回流数据', res)
}

WeChatKit.onLaunchFromWX({
  success: launchListener,
  fail(err) {
    console.error('订阅微信回流失败', err)
  },
  complete(res) {
    console.log('微信回流订阅调用完成', res)
  }
})

// 页面或业务模块销毁时解除监听。
WeChatKit.offLaunchFromWX(launchListener)

iOS 受 Swift 闭包比较限制,offLaunchFromWX(listener?) 会清空当前插件内的全部回流监听器;请按页面生命周期统一管理订阅。

使用兼容对象入口

如果旧业务习惯通过一个 SDK 对象调用能力,可以使用:

const sdk = WeChatKit.getTTWeChatSDK()

console.log('微信是否安装', sdk.isInstall())
sdk.openWXApp({
  success(res) {
    console.log('已提交拉起微信请求', res)
  },
  fail(err) {
    console.error('拉起微信失败', err)
  },
  complete(res) {
    console.log('兼容对象调用完成', res)
  }
})

新项目优先直接调用模块导出的统一 API;兼容对象不提供额外能力。

API 用途速查

  • register(options)
  • isInstall()
  • isWXAppSupportApi(api)
  • openWXApp(options)
  • getApiSupportInfo(options)
  • login(options)
  • share(options)
  • pay(options)
  • requestMerchantTransfer(options)
  • launchMiniProgram(options)
  • openCustomerService(options)
  • onLaunchFromWX(options)
  • offLaunchFromWX(listener?)
  • getTTWeChatSDK()

详细参数、默认值、回调与返回字段见本节下方的参数表和返回值说明。

参数与回调

以下内容用于查询完整参数。第一次接入建议先完成前面的“五分钟最小接入”,再按业务场景查阅对应 API。

register(options)

参数 类型 必填 说明 默认值 可选参数
options TTWeChatRegisterOptions 是 注册参数对象 无 appId / appid / universalLink / success / fail / complete
options.appId string 条件 微信开放平台 AppID,与 appid 二选一 无 无
options.appid string 条件 appId 兼容字段 无 无
options.universalLink string iOS 必填 iOS Universal Link,必须使用 HTTPS、以 / 结尾,并与开放平台配置完全一致 无 无
options.success function 否 成功回调 无 无
options.fail function 否 失败回调 无 无
options.complete function 否 完成回调 无 无

isInstall()

同步返回当前设备是否安装微信。

参数 类型 必填 说明 默认值 可选参数
无 无 无 本方法不接收参数 无 无

返回值:boolean。

isWXAppSupportApi(api)

参数 类型 必填 说明 默认值 可选参数
api number 是 需要检测的微信 API 支持级别 无 无

返回值:boolean。

openWXApp(options)

参数 类型 必填 说明 默认值 可选参数
options WeChatCallbackOptions 是 拉起微信参数对象 无 success / fail / complete
options.success function 否 拉起请求成功回调 无 无
options.fail function 否 拉起失败回调 无 无
options.complete function 否 调用完成回调 无 无

getApiSupportInfo(options)

参数 类型 必填 说明 默认值 可选参数
options WeChatCallbackOptions 是 获取能力矩阵参数对象 无 success / fail / complete
options.success function 否 成功回调,返回安装、注册、API 级别和拉起能力 无 无
options.fail function 否 获取失败回调 无 无
options.complete function 否 调用完成回调 无 无

login(options)

参数 类型 必填 说明 默认值 可选参数
options TTWeChatLoginOptions 是 登录参数对象 无 state / success / fail / complete
options.state string 否 登录透传状态 无 无
options.success function 否 成功回调,返回 code/state/lang/country 无 无
options.fail function 否 失败回调 无 无
options.complete function 否 完成回调 无 无

share(options)

参数 类型 必填 说明 默认值 可选参数
options TTWeChatShareOptions 是 分享参数对象 无 type / scene / title / desc / text / imageUrl / thumbImageUrl / videoUrl / musicUrl / href / filePath / fileExt / miniProgram / success / fail / complete
options.type number 是 分享类型 无 0:text / 1:image / 2:video / 3:webpage / 4:miniProgram / 5:music / 6:file
options.scene number 是 分享场景 0 0:会话 / 1:朋友圈 / 2:收藏
options.title string 否 分享标题 无 无
options.desc string 否 分享描述 无 无
options.text string 否 文本分享内容 无 无
options.imageUrl string 否 图片本地路径;支持应用可读私有目录与临时文件,无需先存相册 无 图片最大 25 MiB,远程图片由业务先下载
options.thumbImageUrl string 否 缩略图本地路径 无 无
options.videoUrl string 否 视频链接 无 无
options.musicUrl string 否 音乐链接 无 无
options.href string 否 网页链接 无 无
options.filePath string 否 文件本地路径 无 无
options.fileExt string 否 文件扩展名 无 无
options.miniProgram object 否 小程序分享参数 无 userName / path / miniProgramType / webpageUrl
options.success function 否 分享成功回调 无 无
options.fail function 否 分享失败回调 无 无
options.complete function 否 分享调用完成回调 无 无

pay(options)

参数 类型 必填 说明 默认值 可选参数
options TTWeChatPayOptions 是 支付参数对象 无 partnerId / prepayId / nonceStr / timeStamp / package / sign / signType / extData / success / fail / complete
options.partnerId string 是 商户号 无 无
options.prepayId string 是 预支付交易会话标识 无 无
options.nonceStr string 是 随机串 无 无
options.timeStamp number 是 时间戳(秒) 无 无
options.package string 是 扩展字段 无 无
options.sign string 是 支付签名 无 无
options.signType string 否 签名算法 MD5 无
options.extData string 否 扩展数据 无 无
options.success function 否 支付成功回调 无 无
options.fail function 否 支付失败或用户取消回调 无 无
options.complete function 否 支付调用完成回调 无 无

requestMerchantTransfer(options)

参数 类型 必填 说明 默认值 可选参数
options TTWeChatRequestMerchantTransferOptions 是 商家转账用户确认参数 无 mchId / package / appId / openId / subAppId / subMchId / transferId / businessType / success / fail / complete
options.mchId string 是 商户号 无 无
options.package string 是 转账业务包参数 无 无
options.appId string 否 子应用 appId 无 无
options.openId string 否 用户 openId 无 无
options.subAppId string 否 子商户 appId 无 无
options.subMchId string 否 子商户号 无 无
options.transferId string 否 转账单号 无 无
options.businessType string 否 业务类型 transfer_to_change 无
options.success function 否 转账确认请求成功回调 无 无
options.fail function 否 转账确认失败回调 无 无
options.complete function 否 转账确认调用完成回调 无 无

launchMiniProgram(options)

参数 类型 必填 说明 默认值 可选参数
options TTWeChatLaunchMiniProgramOptions 是 打开小程序参数 无 userName / path / miniProgramType / success / fail / complete
options.userName string 是 小程序原始 ID 无 无
options.path string 否 小程序页面路径 无 无
options.miniProgramType number 否 小程序版本 0 0:正式 / 1:开发 / 2:体验
options.success function 否 小程序拉起请求成功回调 无 无
options.fail function 否 小程序拉起失败回调 无 无
options.complete function 否 小程序拉起调用完成回调 无 无

userName 必须填写微信公众平台提供的 gh_ 开头小程序原始 ID,不是小程序 AppID。

WeChatKit.launchMiniProgram({
  userName: 'gh_xxxxxxxx',
  path: 'pages/index/index',
  miniProgramType: 0,
  success(res) {
    console.log('打开小程序请求成功', res)
  },
  fail(err) {
    console.error('打开小程序失败', err)
  },
  complete(res) {
    console.log('打开小程序调用完成', res)
  }
})

openCustomerService(options)

参数 类型 必填 说明 默认值 可选参数
options TTWeChatOpenCustomerServiceOptions 是 微信客服参数 无 corpId / url / success / fail / complete
options.corpId string 否 企业 ID 无 无
options.url string 是 客服会话或 URL 跳转地址 无 无
options.success function 否 客服拉起请求成功回调 无 无
options.fail function 否 客服拉起失败回调 无 无
options.complete function 否 客服拉起调用完成回调 无 无

onLaunchFromWX(options)

参数 类型 必填 说明 默认值 可选参数
options TTWeChatLaunchListenerOptions 是 微信回流事件订阅参数 无 success / fail / complete
options.success function 是 回流事件回调,返回 data/scene/platform/timestamp 无 无
options.fail function 否 失败回调 无 无
options.complete function 否 完成回调 无 无

offLaunchFromWX(listener?)

取消微信回流事件监听。受 Swift 闭包不支持可靠相等比较的限制,iOS 传入或不传入 listener 都会清空当前全部微信回流监听器;其他平台仍按原有实现处理指定监听器。

getTTWeChatSDK()

返回包含统一公开能力的兼容对象,适用于旧业务按 SDK 对象组织调用的场景。该方法不接收参数,也不会自动注册微信 SDK;仍需先调用返回对象的 register(options)。

字段 类型 说明
register function 注册微信 SDK
isInstall function 判断微信是否安装
isWXAppSupportApi function 判断目标 API 级别是否支持
openWXApp function 拉起微信
getApiSupportInfo function 获取能力矩阵
login / share / pay function 登录、分享与支付能力
requestMerchantTransfer function 商家转账用户确认
launchMiniProgram / openCustomerService function 打开小程序与客服
onLaunchFromWX / offLaunchFromWX function 管理微信回流监听

返回值说明

字段 类型 说明
code string 登录授权码(服务端换取 access_token)
state string 登录透传状态
platform string 当前平台
completed boolean 当前链路是否完成
opened boolean 拉起动作是否成功触发
registered boolean SDK 是否已注册
installed boolean 当前设备是否安装微信
supportApi boolean 当前微信是否支持目标 API
appSupportApiLevel number 微信客户端报告的 API 支持级别
canOpenWeChat boolean 当前状态是否允许拉起微信
appId string 当前成功注册的微信移动应用 AppID;未注册时为空字符串
data string 微信回流携带的业务数据
scene string 分享场景或微信回流场景
timestamp number 回流事件时间戳

错误码说明

错误主题 errSubject 为 lizhao-wechat-kit;失败时保留 errCode 和 errMsg,按下表处理。

错误码 含义 说明
9014101 platform unsupported 当前平台不支持该能力
9014102 wechat sdk not registered 未先调用 register
9014103 invalid options 参数非法
9014104 wechat not installed 设备未安装微信
9014105 wechat api not supported 当前微信版本不支持目标 API
9014106 user cancel 用户取消
9014107 wechat request failed 请求发送或回调失败
9014108 wechat signature or config invalid 签名、配置或 universalLink 不匹配
9014109 not implemented 当前平台实现未提供
9014110 system error 系统环境异常
9014111 operation busy 操作冲突或微信返回 busy

注意事项

支持平台

平台 是否支持 说明
uni-app 是 支持 API 调用
uni-app x 是 支持 API 调用
Android 是 接入微信 OpenSDK
iOS 是 接入微信 OpenSDK(需 universalLink)
Harmony 否 当前版本返回明确不支持错误
Web 否 当前版本返回明确不支持错误
微信小程序 否 当前版本返回明确不支持错误
支付宝小程序 否 当前版本返回明确不支持错误

权限说明

  • Android:按微信 OpenSDK 要求完成应用与权限配置。
  • iOS:需配置 URL Scheme 与 Universal Link。

自定义基座说明

本插件接入微信 OpenSDK(原生依赖与平台配置),默认需要自定义基座。

  1. 必须先调用 register,再调用其他微信能力。
  2. pay 与 requestMerchantTransfer 的签名参数必须由服务端生成。
  3. 不支持平台会返回明确错误,不会静默成功。
  4. iOS 需确保开放平台配置与 universalLink 严格一致。

iOS 必须配置有效的 Universal Link、AASA、签名和 Associated Domains;完整配置与 9014108 排查见本页的“iOS 接入前必检”。支付与转账的最终状态必须由业务服务端确认。

iOS 接入前必检

iOS 微信 OpenSDK 注册依赖宿主应用的签名、URL Scheme、Associated Domains 和 Universal Link。微信开放平台页面已经填写并不代表配置已经进入最终 IPA;建议在调用 register 前完成以下检查。

1. Universal Link 强制要求

  • 必须使用 https://,不支持 http://。
  • 必须以 / 结尾,例如 https://your.domain.com/app/。
  • 代码传入的 universalLink 必须与微信开放平台 iOS 应用配置完全一致,包括协议、域名、路径、大小写和结尾 /。
  • 域名必须能从公网正常访问;证书无效、重定向、鉴权页面、HTML 错误页或 4xx/5xx 都会导致校验失败。

2. AASA 在线检查

服务器应在以下标准地址之一提供 apple-app-site-association 文件,推荐同时支持两个地址:

https://your.domain.com/apple-app-site-association
https://your.domain.com/.well-known/apple-app-site-association

可以在打包前直接检查响应:

curl -i https://your.domain.com/apple-app-site-association
curl -i https://your.domain.com/.well-known/apple-app-site-association

有效响应应为 HTTP 200,不能跳转到其他地址或登录页。AASA 最小示例:

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "ABCDE12345.com.example.app",
        "paths": ["*"]
      }
    ]
  }
}

其中 ABCDE12345 替换为 Apple Team ID,com.example.app 替换为最终 IPA 的 Bundle ID。

paths 如何填写

paths 不是固定值,它用于限制该域名下哪些路径可以关联并唤起 App,必须覆盖实际使用的 Universal Link 路径。

Universal Link AASA paths 示例 说明
https://your.domain.com/ ["*"] 使用域名根路径时,可匹配该域名下全部路径
https://your.domain.com/ulink/ ["/ulink/*"] 只允许 /ulink/ 目录下的链接

例如 AASA 配置为 "paths": ["/ulink/*"] 时,微信开放平台、manifest.json 和 register 参数中的 Universal Link 都应使用 https://your.domain.com/ulink/,不能仍填写域名根路径。

3. IPA 必须包含的配置

  • Bundle ID 与微信开放平台 iOS 应用配置一致。
  • URL Scheme 包含微信移动应用 AppID,例如 wx1234567890abcdef。
  • Associated Domains entitlement 包含对应域名,例如 applinks:your.domain.com,这里不要填写 https:// 或路径。
  • Apple Developer 后台对应 App ID 已开启 Associated Domains,且打包使用的描述文件包含该能力。

uni-app 项目可在 HBuilderX 的 manifest.json 可视化界面中进入“App 常用其它设置 → iOS 设置 → 关联域(Associated Domains)”进行配置,也可以在源码视图的 app-plus.distribute.ios 节点中加入:

{
  "capabilities": {
    "entitlements": {
      "com.apple.developer.associated-domains": [
        "applinks:your.domain.com"
      ]
    }
  }
}

uni-app x 项目在 HBuilderX 4.71 及以上版本可使用 manifest.json 的 iOS 关联域可视化配置;如项目采用 iOS 原生资源配置,则在 nativeResources/ios/UniApp.entitlements 中写入同一个 com.apple.developer.associated-domains 数组。不要在 uni-app x 项目中照搬 uni-app 的 app-plus 节点。

微信 SDK 配置中的 UniversalLinks 和 Associated Domains 是两项不同配置,不能互相替代:

{
  "sdkConfigs": {
    "share": {
      "weixin": {
        "appid": "wx1234567890abcdef",
        "UniversalLinks": "https://your.domain.com/"
      }
    }
  }
}
  • UniversalLinks 使用完整 HTTPS 地址,包含实际路径并以 / 结尾。
  • Associated Domains 只填写 applinks:域名,不包含 https://、路径和结尾 /。
  • 只在 sdkConfigs 中填写 UniversalLinks,不代表 Associated Domains 已进入最终 IPA 的签名权限。
更换域名后是否需要重新生成 Profile

Apple Developer 网站中的 Associated Domains 开关只表示 App ID 可以使用该能力,不保存具体 Universal Link 域名。因此,已经开启该能力且当前 Profile 已包含 Associated Domains 时,更换域名通常不需要关闭后重新开启,也不需要仅因域名变化重新生成 Profile。

以下情况需要重新生成 Profile:

  • Associated Domains 是在当前 Profile 生成之后才首次开启的。
  • 云打包提示 Profile 不支持 Associated Domains。
  • 检查 Profile 后确认其中不包含 com.apple.developer.associated-domains。

Profile 允许 Associated Domains 仍不等于最终 IPA 已写入目标域名,最终应以 App 主程序的签名 entitlements 为准。

以上任一项发生变化后,都必须重新云打包,或重新制作并安装 iOS 自定义基座。资源热更新、WGT/appResource 更新不能改变 IPA 的 Info.plist、entitlement 或签名描述文件。

4. 9014108 排查顺序

注册时会输出以 [lizhao-wechat-kit][iOS] 微信注册诊断: 开头的单行 JSON;失败回调的 err.details 和 err.data 也包含同一份诊断字符串。出现问题时,复制这一整行或完整失败对象,并补充使用的是 uni-app 还是 uni-app x、HBuilderX 版本及是否已安装新 iOS 原生包。

1.0.7 使用微信官方 WechatOpenSDK-XCFramework 2.0.5,Swift 模块名为 WechatOpenSDK。已移除 SDK 缺失时仍可编译安装的备用实现;如果原生打包提示找不到模块,应解决 Pods 集成后重打包。此版本原生构建标识为 wechat-ios-sdk-fix-20261016,可用于确认客户实际安装的代码。

先查看诊断中的 reason,区分错误发生在哪一层:

reason 含义 处理方向
sdk_unavailable 旧诊断基座无法导入微信 SDK,尚未调用微信注册方法 当前版本已改为缺 SDK 时编译失败;出现此值说明仍需更新原生包
invalid_app_id 实际传入的 AppID 为空,错误码为 9014103 核查 appId / appid 入参
request_in_progress 业务仍在等待微信回流,本次未更换 SDK 注册配置,错误码为 9014111 等待原请求结束后再注册
sdk_register_rejected 已调用微信 SDK,但它返回注册失败,错误码为 9014108 继续核查下面的应用与链接配置;此结果本身不指出哪一项不正确
registered 本次微信 SDK 注册返回成功 再分别验收登录、分享等业务

诊断还会记录本次请求标识、原生构建标识、实际注册参数、Bundle ID、应用版本、URL Scheme、查询白名单和线程状态。链接中的账号、密码、查询参数及片段不回显;诊断不会读取设备唯一标识、登录授权码或支付签名。AASA 与最终签名中的 Associated Domains 不由这段本地日志自动验证,不能把“未检查”当成“配置正确”。浏览器出现横幅也不能证明当前插件已加载微信 SDK。

若没有上述诊断行、构建标识不同,或失败详情仍只有 register wechat sdk failed,先确认正在运行的是更新后的 iOS 原生包;仅更新页面资源不会替换这部分代码。升级本次修复需要重新制作并安装 iOS 自定义基座或重新打包。

插件会自动接收 URL Scheme 和 Universal Link 回流,无需页面手动转发。发送请求被微信 SDK 接收不等于业务成功,登录、分享、支付等成功回调以微信真实响应为准;同一时刻正在等待回流的业务未结束时,再发起业务会返回忙碌错误。iOS 的 success / fail / complete 均异步派发,客户回调抛错不会阻止 complete。

当 reason 为 sdk_register_rejected 时,按以下顺序处理:

  1. 用上方 curl 命令确认 AASA 当前返回 200,先解决超时、重定向或 502 等服务器问题。
  2. 逐字符核对微信开放平台、代码 universalLink 和打包配置中的地址。
  3. 核对微信 AppID、最终 Bundle ID、Apple Team ID 与 AASA appID。
  4. 检查最终 IPA 的 URL Scheme、Associated Domains entitlement 和描述文件,不要只查看后台截图。
  5. 删除旧应用,安装重新打包后的基座或正式包,再调用 register。

重新打包后,最终 IPA 的主程序签名中应能看到类似内容:

<key>com.apple.developer.associated-domains</key>
<array>
  <string>applinks:your.domain.com</string>
</array>

如果签名中没有该字段,即使 HBuilderX、微信开放平台和服务器截图看起来都已配置,微信 SDK 仍可能注册失败。重新打包时还应提升 iOS 构建号;构建号低于已安装、TestFlight 或 App Store 中的版本时,可能无法覆盖安装或上传。

Android 正常不代表 iOS 配置正确:Android 不使用 iOS Universal Link、AASA 和 Associated Domains。9014108 发生在 SDK 注册阶段时,后续登录、分享、支付或打开小程序都不会执行。

常见问题

返回 9014102 wechat sdk not registered

其他微信能力调用早于 register 成功回调。请把业务调用放到注册成功后的状态流程中,不要仅在页面加载时并行调用。

返回 9014104 wechat not installed

当前设备未安装微信,或系统无法识别微信客户端。先使用 isInstall() 检查,并在安装了正式微信的真机复测。

iOS 返回 9014108,但 Android 正常

优先检查 Universal Link、AASA、URL Scheme、Bundle ID、Associated Domains 和描述文件。Android 不使用这些 iOS 配置,因此 Android 正常不能排除 iOS 宿主配置问题。

修改 Universal Link 后仍然报旧错误

Universal Link、entitlement、URL Scheme 和签名配置进入原生安装包,不能通过页面热更新或 WGT/appResource 更新。请重新云打包或制作 iOS 自定义基座,卸载旧应用后再安装测试。

回调日志出现 ReferenceError: Can't find variable

检查客户页面回调参数名是否一致。例如 fail(er) 内部必须读取 er,或统一写成 fail(err) 后读取 err。插件已经触发失败回调时,客户回调函数内部的变量错误会覆盖真正的 SDK 错误日志。

success 是否代表支付或分享业务最终成功

不同能力的成功语义不同。支付结果必须由服务端查询订单或接收微信通知确认;拉起小程序、客服或微信客户端的成功回调表示请求已成功提交,不代表用户完成了后续业务。

作者系列 UTS 插件

以下为作者已上架的 UTS 插件,详情见各市场页面或作者主页。

插件 能力方向 插件市场
lizhao-app-keepalive 应用保活、唤醒、自愈与报告 查看插件
lizhao-bg-audio 背景音频播放、队列、倍速与事件 查看插件
lizhao-ble BLE 扫描、连接、读写、通知与自动重连 查看插件
lizhao-call-kit 电话、短信、通讯录原生能力 查看插件
lizhao-camera-pro 原生相机、拍照录像、水印与媒体保存 查看插件
lizhao-cast-screen DLNA 投屏、AirPlay 路由入口 查看插件
lizhao-choose-file 原生文件选择、上传、进度与取消 查看插件
lizhao-device-id 设备标识、隐私策略与诊断 查看插件
lizhao-doc-corrector 文档扫描、矫正、增强与识别 查看插件
lizhao-emu-detect 模拟器环境检测、风险评分与证据 查看插件
lizhao-float-window 悬浮窗、画中画、权限与诊断 查看插件
lizhao-gallery-pro 相册媒体分页、筛选、缩略图与导出 查看插件
lizhao-hce-card NFC 虚拟卡、APDU 交互与 NDEF 标签模拟 查看插件
lizhao-health 健康数据授权、查询、统计与写入 查看插件
lizhao-http-server 本地 HTTP 服务、文件传输与实时通信 查看插件
lizhao-icon-pro SVG 图标组件、多主题与缓存 查看插件
lizhao-id-photo 证件照制作、尺寸换算、换底色与模板换装 查看插件
lizhao-img-eraser 图片去水印、局部修复与原生编辑器 查看插件
lizhao-live-activity 实时活动、系统胶囊与普通通知降级 查看插件
lizhao-nfc-pro NFC 标签读写、NDEF、IsoDep 与诊断 查看插件
lizhao-notify-pro 本地通知、点击动作、进度与定时提醒 查看插件
lizhao-novel-reader 原生小说阅读、仿真翻页与段落评论 查看插件
lizhao-office-view Office 与 PDF 文件预览、进度与缓存管理 查看插件
lizhao-pdf-pro PDF 阅读、签批、真实写回与页面处理 查看插件
lizhao-scan-pro 原生扫码、连续扫码、相册识别 查看插件
lizhao-serial-port 路径串口、USB 串口、多会话收发与诊断 查看插件
lizhao-share-plus 系统分享、远程文件下载后分享 查看插件
lizhao-smart-tts 系统 TTS、云端合成、听书方案 查看插件
lizhao-sqlite-pro 原生 SQLite、迁移、备份与诊断 查看插件
lizhao-sse-pro SSE、Line、JSONL 与 Raw 流式请求 查看插件
lizhao-tcp-pro TCP 客户端、服务端、多连接与诊断 查看插件
lizhao-usb-storage U 盘、移动硬盘文件浏览、读写与批量复制 查看插件
lizhao-video-editor 视频裁剪、压缩、取帧与 FFmpeg/FFprobe 查看插件
lizhao-video-feed 短视频上下滑、短剧选集与分页加载 查看插件
lizhao-video-player 原生视频播放器、清晰度与播放交互 查看插件
lizhao-video-thumb 视频封面、批量取帧与 Base64 返回 查看插件
lizhao-vpn-pro 企业 VPN、IKEv2、安全接入与脱敏诊断 查看插件
lizhao-wechat-kit 微信登录、分享、支付、小程序与客服 查看插件

隐私、权限声明

1. 本插件需要申请的系统权限列表:

微信开放能力按平台能力要求

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

无

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无