{"_id":"@cordova-ohos/cordova-plugin-wechat","_rev":"3-168c6e0bdf785b73154e4d9463b2cf76","name":"@cordova-ohos/cordova-plugin-wechat","dist-tags":{"latest":"3.1.1"},"versions":{"3.1.0":{"name":"@cordova-ohos/cordova-plugin-wechat","version":"3.1.0","keywords":["cordova","wechat","ecosystem:cordova","cordova-openharmony"],"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-wechat@3.1.0","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"}],"bugs":{"url":"https://gitcode.com/OpenHarmony-Cordova/cordova-plugin-wechat/issues"},"dist":{"shasum":"487b2adf5c0120e8548fea00c84f40032936ea4f","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-wechat/-/cordova-plugin-wechat-3.1.0.tgz","fileCount":9,"integrity":"sha512-95BvCpzFu65b/b7pC7Sc2hQhZr+PcmhE0/aVyjmZb7clFzUJpXctGfHfDwv+KI4GIVoKyZSqk25wlygwQCsuBg==","signatures":[{"sig":"MEUCIEOUpTvTULhk7IWZj6VxguIuzjF53Li5BEmjPko7jQiOAiEA2glpaAdrXWNBHfKuN+sX48qk6dWryqS4rtdEq80ztJk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87976},"cordova":{"id":"cordova-plugin-wechat","platforms":["ohos"]},"engines":{"cordovaDependencies":{"3.1.0":{"hcordova":">=1.0.0","@cordova-ohos/ohos":">=2.0.0"}}},"gitHead":"fc7ea7475a45bb458dd93d227d9b385a734edfd6","_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"repository":{"url":"gitcode:OpenHarmony-Cordova/cordova-plugin-wechat","type":"git"},"_npmVersion":"10.5.1","description":"Cordova Wechat Plugin","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cordova-plugin-wechat_3.1.0_1774228126297_0.3503779637578732","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"@cordova-ohos/cordova-plugin-wechat","version":"3.1.1","description":"Cordova Wechat Plugin","cordova":{"id":"cordova-plugin-wechat","platforms":["ohos"]},"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-wechat"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-wechat/issues"},"keywords":["cordova","wechat","ecosystem:cordova","cordova-openharmony"],"engines":{"cordovaDependencies":{"3.1.1":{"@cordova-ohos/ohos":">=2.0.0","hcordova":">=1.0.0"}}},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-wechat@3.1.1","gitHead":"2ee793508abfe218f9b2cc83e41bdc53f66cfe49","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-LZXTzr5tvWxh3sQYT9YUqo82Nn8/MDc7XQaH3QXIfIR0e43b9JQ++bdBxXqH16bA+WdVhlPw9ovkDdAMLecu2g==","shasum":"90f289f58065d3d49c4e995a38b0e343063b30c0","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-wechat/-/cordova-plugin-wechat-3.1.1.tgz","fileCount":10,"unpackedSize":145539,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDYzmFoAmvnIDMYTCpv6r4iJ/N+55NEjVe4B1mtXOh/eAiBYjJxme8fkWieFYcaSlwMEbyhH4/Ca5NBjbtgGCz9ofQ=="}]},"_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"directories":{},"maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cordova-plugin-wechat_3.1.1_1785146193690_0.003404752995999516"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T01:08:46.199Z","modified":"2026-07-27T09:56:34.100Z","3.1.0":"2026-03-23T01:08:46.449Z","3.1.1":"2026-07-27T09:56:33.851Z"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-wechat/issues"},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","keywords":["cordova","wechat","ecosystem:cordova","cordova-openharmony"],"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-wechat"},"description":"Cordova Wechat Plugin","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"readme":"# <center>cordova-plugin-wechat</center>\r\n\r\n[![zh-CN](https://img.shields.io/badge/lang-中文-blue.svg)](README.md)\r\n[![en](https://img.shields.io/badge/lang-English-blue.svg)](README.en.md)\r\n\r\n本项目基于 [cordova-plugin-wechat@3.1.0](https://www.npmjs.com/package/cordova-plugin-wechat/v/3.1.0) 开发，本文档重点阐述其在 OpenHarmony（OHOS）系统中的具体应用。\r\n\r\n- [cordova-plugin-wechat](#cordova-plugin-wechat)\r\n  - [简介](#简介)\r\n  - [功能特性](#功能特性)\r\n  - [OHOS 平台功能限制](#ohos-平台功能限制)\r\n  - [支持平台](#支持平台)\r\n  - [前置准备](#前置准备)\r\n  - [下载安装](#下载安装)\r\n    - [前提条件](#前提条件)\r\n    - [从 npm 安装（推荐）](#从-npm-安装推荐)\r\n    - [从 GitCode 仓库安装](#从-gitcode-仓库安装)\r\n    - [离线安装（本地包）](#离线安装本地包)\r\n    - [安装后验证](#安装后验证)\r\n    - [卸载](#卸载)\r\n  - [OHOS 配置](#ohos-配置)\r\n    - [1. scheme 声明](#1-scheme-声明)\r\n    - [2. action 配置](#2-action-配置)\r\n    - [3. 依赖导入](#3-依赖导入)\r\n    - [4. ArkTS 侧初始化与监听](#4-arkts-侧初始化与监听)\r\n  - [约束与限制](#约束与限制)\r\n    - [兼容性](#兼容性)\r\n  - [使用示例](#使用示例)\r\n    - [1. 检查微信是否安装](#1-检查微信是否安装)\r\n    - [2. 微信登录](#2-微信登录)\r\n    - [3. 分享文本到聊天界面](#3-分享文本到聊天界面)\r\n    - [4. 分享在线图片到聊天界面](#4-分享在线图片到聊天界面)\r\n    - [5. 分享 base64 图片到聊天界面](#5-分享-base64-图片到聊天界面)\r\n    - [6. 分享小程序](#6-分享小程序)\r\n    - [7. 打开小程序](#7-打开小程序)\r\n    - [8. 调起微信支付](#8-调起微信支付)\r\n  - [使用说明](#使用说明)\r\n    - [1. 核心 API 说明](#1-核心-api-说明)\r\n      - [1.1 检查微信安装状态](#11-检查微信安装状态)\r\n      - [1.2 微信授权登录](#12-微信授权登录)\r\n      - [1.3 分享功能](#13-分享功能)\r\n      - [1.4 打开小程序](#14-打开小程序)\r\n      - [1.5 微信支付](#15-微信支付)\r\n    - [2. 常见问题（FAQ）](#2-常见问题faq)\r\n      - [Q1: 调用插件 API 后无反应怎么办？](#q1-调用插件-api-后无反应怎么办)\r\n      - [Q2: OHOS 平台分享后无法判断是否成功怎么办？](#q2-ohos-平台分享后无法判断是否成功怎么办)\r\n      - [Q3: 微信支付失败怎么办？](#q3-微信支付失败怎么办)\r\n      - [Q4: OHOS 平台无法分享到朋友圈怎么办？](#q4-ohos-平台无法分享到朋友圈怎么办)\r\n    - [3. 注意事项](#3-注意事项)\r\n  - [目录结构](#目录结构)\r\n  - [贡献代码](#贡献代码)\r\n  - [许可证](#许可证)\r\n  - [官方资源](#官方资源)\r\n\r\n\r\n## 简介\r\n\r\n`cordova-plugin-wechat` 是一款专为 Cordova/PhoneGap 混合应用（Hybrid App）设计的微信集成插件，核心功能是集成微信 SDK，帮助开发者快速实现微信登录、多类型分享、微信支付等核心交互功能。该插件严格遵循 Cordova 插件开发规范，重点适配 OHOS 平台，无需关注微信 SDK 在 OHOS 系统的底层适配细节，通过简洁的 JavaScript API 即可完成各类微信相关操作，适用于社交分享、用户登录、移动支付等多种应用场景，为应用提供更便捷的微信生态集成方案。本文档主要介绍该插件在 OHOS 系统中的应用、配置、使用方法及注意事项。\r\n\r\n## 功能特性\r\n\r\n- **微信安装检查**：快速检测设备是否安装微信客户端，返回明确的安装状态，便于后续功能引导\r\n\r\n- **微信授权登录**：支持微信 OAuth2.0 授权登录，获取用户基础信息，实现快速注册/登录功能\r\n\r\n- **多类型分享**：支持文本、图片（在线图片、base64 图片）、小程序等多种类型分享，适配 OHOS 平台微信 SDK 特性\r\n\r\n- **微信支付集成**：对接微信商户平台，支持调起微信支付界面，完成订单支付流程，提供完整的支付回调\r\n\r\n- **微信客户端操作**：支持直接打开微信客户端，或跳转到微信指定页面（如小程序），提升用户交互体验\r\n\r\n- **完善的错误回调**：针对各类操作（登录、分享、支付）提供详细的错误提示与状态回调，便于问题排查\r\n\r\n- **OHOS 专属适配**：针对 OHOS 5.0+ 版本做专项优化，适配微信 Harmony SDK 特性，明确功能支持范围与限制\r\n\r\n## OHOS 平台功能限制\r\n\r\n由于微信 Harmony SDK 本身的限制，OHOS 平台使用本插件时，部分功能暂不支持，具体限制如下：\r\n\r\n1. 微信 Harmony SDK 仅支持分享到聊天界面，不支持分享到朋友圈、收藏，`scene` 字段设置无效；\r\n\r\n2. 微信 Harmony SDK 不支持分享 APP 类型内容；\r\n\r\n3. 微信 Harmony SDK 不支持分享表情，表情可作为图片类型进行分享；\r\n\r\n4. 微信 Harmony SDK 不支持分享视频、音乐类型内容。\r\n\r\n## 支持平台\r\n\r\n- **OHOS**（5.0 及以上，适配微信 Harmony SDK 相关特性）\r\n\r\n- **Android/iOS**（兼容原生 cordova-plugin-wechat 功能，详情参考官方指南）\r\n\r\n## 前置准备\r\n\r\n在集成插件前，需完成微信开放平台、微信商户平台的账号注册与应用配置，确保开发环境满足基础要求，具体步骤如下：\r\n\r\n- 注册 [微信开放平台](https://open.weixin.qq.com/) 账号，创建移动应用，完善应用基本信息；\r\n\r\n- OHOS 平台需填写应用包名，上传签名文件等信息，确保应用信息与实际项目一致；\r\n\r\n- 根据业务需求，申请所需接口权限（微信登录、分享、支付等），等待微信开放平台审核通过；\r\n\r\n- 若需使用微信支付功能：注册 [微信商户平台](https://pay.weixin.qq.com/) 账号，绑定微信开放平台对应 AppID，完成商户信息配置；\r\n\r\n- 已安装 Node.js（v14.0.0 及以上）和 npm（v6.0.0 及以上），可通过 `node -v` 和 `npm -v` 命令验证版本；\r\n\r\n- 已全局安装 HCordova CLI（v10.0.0 及以上），用于插件的安装、卸载和管理，hcordova 命令化工具仓库：[CPF-Cordova/hcordova-cli](https://gitcode.com/CPF-Cordova/hcordova-cli)；\r\n\r\n- 已创建 Cordova 项目（若尚未创建，可通过 `hcordova create MyWechatApp com.example.wechatapp 微信集成示例应用` 命令快速创建）。\r\n\r\n## 下载安装\r\n\r\n通过 HCordova CLI 即可快速安装插件，支持指定 OHOS 平台安装，安装时需配置微信 AppID，安装流程简洁高效，安装后可通过命令验证安装结果。\r\n\r\n### 前提条件\r\n\r\n安装插件前，需先安装 HCordova CLI，执行以下命令安装：\r\n\r\n```bash\r\nnpm install -g hcordova\r\n```\r\n\r\n### 从 npm 安装（推荐）\r\n\r\n通过 npm 仓库安装稳定版本，适合大多数开发场景，仅安装到 OHOS 平台，安装时需传入微信 AppID：\r\n\r\n```bash\r\n# 全平台安装\r\nhcordova plugin add cordova-plugin-wechat --variable WECHATAPPID=YOUR_WECHAT_APPID\r\n\r\n# 指定平台安装\r\nhcordova plugin add cordova-plugin-wechat --variable WECHATAPPID=YOUR_WECHAT_APPID --platform ohos\r\n\r\n# 指定版本安装\r\nhcordova plugin add cordova-plugin-wechat@1.0.0 --variable WECHATAPPID=YOUR_WECHAT_APPID --platform ohos\r\n```\r\n\r\n### 从 GitCode 仓库安装\r\n\r\n仅为 OHOS 平台安装插件：\r\n\r\n```bash\r\n# 仅安装到 OHOS 平台\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-wechat.git --variable WECHATAPPID=YOUR_WECHAT_APPID --platform ohos\r\n\r\n# 指定标签/分支安装\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-wechat.git@develop --variable WECHATAPPID=YOUR_WECHAT_APPID --platform ohos\r\n```\r\n\r\n说明：将 `YOUR_WECHAT_APPID` 替换为实际在微信开放平台申请的应用 AppID，确保 AppID 与应用包名、签名信息匹配。\r\n\r\n### 离线安装（本地包）\r\n\r\n适用于无网络环境，先下载插件包到本地，再执行离线安装：\r\n\r\n```bash\r\n# 下载插件包到本地（示例路径：~/Downloads/cordova-plugin-wechat）\r\n# 执行离线安装\r\nhcordova plugin add ~/Downloads/cordova-plugin-wechat --variable WECHATAPPID=YOUR_WECHAT_APPID --platform ohos\r\n```\r\n\r\n### 安装后验证\r\n\r\n安装完成后，可通过以下命令验证插件是否成功添加到项目中：\r\n\r\n```bash\r\n# 查看已安装的插件列表，若包含本插件 ID 则表示插件已成功安装\r\nhcordova plugin list\r\n```\r\n\r\n### 卸载\r\n\r\n如需移除插件，进入项目根目录执行以下命令，卸载时需传入对应微信 AppID，卸载后建议重新构建项目以清理残留文件：\r\n\r\n```bash\r\n# 全平台卸载\r\nhcordova plugin remove cordova-plugin-wechat --variable WECHATAPPID=YOUR_WECHAT_APPID\r\n\r\n# 指定 OHOS 平台卸载\r\nhcordova plugin remove cordova-plugin-wechat --variable WECHATAPPID=YOUR_WECHAT_APPID  --platform ohos\r\n```\r\n\r\n## OHOS 配置\r\n\r\nOHOS 平台集成插件后，需完成 scheme 声明、action 配置、依赖导入及 ArkTS 侧初始化，否则插件功能无法正常使用，具体配置步骤如下：\r\n\r\n### 1. scheme 声明\r\n\r\n在开发者的 App module 的 module.json5 里加入以下 scheme 声明，用于微信回调跳转：\r\n\r\n```json\r\n\"querySchemes\": [\r\n   \"weixin\",\r\n   \"wxopensdk\"\r\n]\r\n```\r\n\r\n### 2. action 配置\r\n\r\n开发者需要在 module.json5 的 skills 中配置和微信约定的 action `wxentity.action.open`，确保微信能正常唤起应用：\r\n\r\n```json\r\n\"skills\": [\r\n   {\r\n   \"entities\": [\r\n      \"entity.system.home\"\r\n   ],\r\n   \"actions\": [\r\n      \"action.system.home\",\r\n      \"ohos.want.action.home\",\r\n      \"wxentity.action.open\"\r\n   ]\r\n   }\r\n]\r\n```\r\n\r\n### 3. 依赖导入\r\n\r\n修改项目中的 oh-package.json5 文件，在 dependencies 中加入微信 opensdk 的依赖项，确保插件能正常调用微信 SDK：\r\n\r\n```json\r\n{\r\n  \"name\": \"entry\",\r\n  \"version\": \"1.0.0\",\r\n  \"description\": \"Please describe the basic information.\",\r\n  \"main\": \"\",\r\n  \"author\": \"\",\r\n  \"license\": \"\",\r\n  \"dependencies\": {\r\n    \"@tencent/wechat_open_sdk\": \"^1.0.0\"\r\n  }\r\n}\r\n```\r\n\r\n### 4. ArkTS 侧初始化与监听\r\n\r\n修改项目中的 EntryAbility 的代码，添加微信插件在 ArkTS 侧的监听和初始化，确保微信回调能被正常捕获：\r\n\r\n```js\r\nexport default class EntryAbility extends UIAbility {\r\n   onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {\r\n      // 添加如下代码，注册 Wechat 监听插件\r\n      // WeChatAction/WeChatAction，动态导入微信插件\r\n      // EntryAbility 微信插件的入口函数\r\n      // wx9dab96bdfa8f16ec 为 app 的 appId，在微信的开放平台获取\r\n      PluginRegisterHandle(this,\r\n         want,\r\n         \"WeChatAction/WeChatAction\",\r\n         \"EntryAbility\", \r\n         \"wx9dab96bdfa8f16ec\" \r\n      );\r\n   }\r\n\r\n   onNewWant(want: Want): void {\r\n      // 添加如下代码，注册 Wechat 监听插件\r\n      // WeChatAction/WeChatAction，动态导入微信插件\r\n      // EntryAbility 微信插件的入口函数\r\n      // wx9dab96bdfa8f16ec 为 app 的 appId，在微信的开放平台获取\r\n      PluginRegisterHandle(this,\r\n         want,\r\n         \"WeChatAction/WeChatAction\",\r\n         \"EntryAbility\", \r\n         \"wx9dab96bdfa8f16ec\" \r\n      );\r\n   }\r\n}\r\n```\r\n\r\n说明：将代码中的 `wx9dab96bdfa8f16ec` 替换为实际在微信开放平台申请的应用 AppID，确保与安装插件时传入的 AppID 一致。\r\n\r\n## 约束与限制\r\n\r\n- 依赖插件：无强制依赖，@cordova-ohos/ohos 版本为 2.0.0 及以上；\r\n\r\n- 平台限制：仅支持 OHOS 5.0 及以上版本，Android/iOS 平台兼容原生功能，具体参考官方指南；\r\n\r\n- 微信 SDK 限制：受微信 Harmony SDK 限制，OHOS 平台不支持朋友圈分享、收藏、APP 分享、表情分享、视频/音乐分享，详情见“OHOS 平台功能限制”；\r\n\r\n- 配置限制：OHOS 平台必须完成 scheme 声明、action 配置、依赖导入及 ArkTS 侧初始化，否则插件功能无法正常触发；\r\n\r\n- AppID 限制：安装插件、初始化插件时使用的 AppID 必须与微信开放平台注册的 AppID 一致，否则会出现授权失败、分享失败等异常；\r\n\r\n- 分享回调限制：OHOS 平台分享操作的回调受微信 SDK 限制，部分场景下无法准确判断分享是否成功，具体注意事项见使用示例；\r\n\r\n- 支付限制：微信支付功能需提前在微信商户平台绑定 AppID，且支付参数（partnerid、prepayid 等）需由服务端生成，前端仅负责调起支付界面。\r\n\r\n### 兼容性\r\n\r\n支持：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| SDK | API12+ |\r\n| IDE | DevEco Studio: 5.0+ |\r\n| ROM | 5.1+ |\r\n| Emulator | OpenHarmony 6.0+ |\r\n\r\n在以下版本中已测试通过：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| @cordova-ohos/ohos | 14.0.1-ohos-14.0.1 |\r\n| SDK | 5.0.0(12) |\r\n| IDE | DevEco Studio: 6.0.13.200 |\r\n| ROM | 5.1.0.120 SP3 |\r\n| Emulator | OpenHarmony 6.0.1(21) |\r\n\r\n## 使用示例\r\n\r\n插件通过全局对象 `Wechat` 暴露所有核心 API，支持微信安装检查、登录、分享、支付、打开小程序等操作。所有 API 需在 `deviceready` 事件触发后调用，以下为各核心功能的完整使用示例，可直接复制到项目中使用，重点注意 OHOS 平台的功能限制与回调特性。\r\n\r\n### 1. 检查微信是否安装\r\n\r\n检测设备是否安装微信客户端，返回布尔值，可用于引导用户安装微信（若未安装）：\r\n\r\n```js\r\n// 等待 Cordova 环境就绪\r\ndocument.addEventListener('deviceready', function() {\r\n    // 判断微信是否已经安装\r\n    Wechat.isInstalled(function (installed) {\r\n        alert(\"Wechat installed: \" + (installed ? \"Yes\" : \"No\"));\r\n    }, function (reason) {\r\n        alert(\"Failed: \" + reason);\r\n    });\r\n}, false);\r\n```\r\n\r\n### 2. 微信登录\r\n\r\n调用微信授权登录，获取授权凭证，后续可通过凭证从服务端获取用户信息，`scope` 为授权范围，`state` 为随机字符串用于防 CSRF 攻击：\r\n\r\n```js\r\n// 等待 Cordova 环境就绪\r\ndocument.addEventListener('deviceready', function() {\r\n    // 微信授权登录\r\n    var scope = \"snsapi_userinfo\",\r\n        state = \"_\" + (+new Date()); // 随机字符串，可自定义\r\n    Wechat.auth(scope, state, function (response) {\r\n        alert(\"授权成功:根据服务端回调获取数据\");\r\n        // 此处可将授权相关信息发送到服务端，获取用户详细信息\r\n    }, function (reason) {\r\n        alert(\"发送失败: \" + reason);\r\n    });\r\n}, false);\r\n```\r\n\r\n### 3. 分享文本到聊天界面\r\n\r\nOHOS 平台仅支持分享到聊天界面，`scene` 字段设置无效，分享回调受微信 SDK 限制，具体注意事项见代码注释：\r\n\r\n```js\r\n// 等待 Cordova 环境就绪\r\ndocument.addEventListener('deviceready', function() {\r\n    // 分享文本到聊天界面\r\n    /* 分享到微信后，无论是否分享成功，\r\n     * 如果没有返回应用，js 会回调分享成功，但不一定成功,\r\n     * 如果返回了应用，分享失败，会通知 js 侧，分享成功不再通知\r\n     * 这些都是 SDK 限制，插件无法更改\r\n     */\r\n    Wechat.share({\r\n        text: \"This is just a plain string\",\r\n        // scene 属性无效，OHOS 仅支持分享到聊天界面\r\n        scene: Wechat.Scene.TIMELINE  \r\n    }, function (response) {\r\n        // 此处并不能判断是否真的分享成功，如果没有调失败就是成功的\r\n        console.log(\"Success\");\r\n    }, function (reason) {\r\n        // 如果返回了失败，是真的分享失败，会先调用成功\r\n        alert(\"Failed: \" + reason);\r\n    });\r\n}, false);\r\n```\r\n\r\n### 4. 分享在线图片到聊天界面\r\n\r\n支持分享在线图片，OHOS 平台仅支持分享到聊天界面，分享回调受微信 SDK 限制，无法准确判断分享是否成功：\r\n\r\n```js\r\n// 等待 Cordova 环境就绪\r\ndocument.addEventListener('deviceready', function() {\r\n    // 分享在线图片到聊天界面\r\n    /* 通知 js 侧调用微信成功，分享是否成功无法判断，\r\n     * 即使返回了应用也不通知 js 侧，\r\n     * 这些都是 SDK 限制，插件无法更改\r\n     */\r\n    Wechat.share({\r\n        message: {\r\n            media: {\r\n                type: Wechat.Type.IMAGE,\r\n                image: \"https://www.chuzhitong.com/images/logo.png\" // 在线图片地址\r\n            }\r\n        },\r\n        // scene 属性无效，OHOS 仅支持分享到聊天界面\r\n        scene: Wechat.Scene.TIMELINE \r\n    }, function (response) {\r\n        console.log(\"Success\");\r\n    }, function (reason) {\r\n        console.log(\"Failed: \" + reason);\r\n    });\r\n}, false);\r\n```\r\n\r\n### 5. 分享 base64 图片到聊天界面\r\n\r\n支持分享 base64 格式图片，OHOS 平台仅支持分享到聊天界面，分享回调特性与在线图片一致：\r\n\r\n```js\r\n// 等待 Cordova 环境就绪\r\ndocument.addEventListener('deviceready', function() {\r\n    // 分享 base64 图片到聊天界面\r\n    /* 通知 js 侧调用微信成功，分享是否成功无法判断，\r\n     * 即使返回了应用也不通知 js 侧，\r\n     * 这些都是 SDK 限制，插件无法更改\r\n     */\r\n    Wechat.share({\r\n        message: {\r\n            media: {\r\n                type: Wechat.Type.IMAGE,\r\n                image: \"data:image/jpeg;base64,djfksjfdlsf....\" // base64 格式图片\r\n            }\r\n        },\r\n        // scene 属性无效，OHOS 仅支持分享到聊天界面\r\n        scene: Wechat.Scene.TIMELINE \r\n    }, function (response) {\r\n        console.log(\"Success\");\r\n    }, function (reason) {\r\n        console.log(\"Failed: \" + reason);\r\n    });\r\n}, false);\r\n```\r\n\r\n### 6. 分享小程序\r\n\r\n支持分享小程序到聊天界面，`scene` 建议设置为 `Wechat.Scene.SESSION`（小程序仅支持聊天界面分享），分享回调受微信 SDK 限制：\r\n\r\n```js\r\n// 等待 Cordova 环境就绪\r\ndocument.addEventListener('deviceready', function() {\r\n    // 分享小程序\r\n    /* 分享到微信后，无论是否分享成功，\r\n     * 如果没有返回应用，js 会回调分享成功，但不一定成功,\r\n     * 如果返回了应用，分享失败，会通知 js 侧，分享成功不再通知\r\n     * 这些都是 SDK 限制，插件无法更改\r\n     */\r\n    Wechat.share({\r\n        message: {\r\n            title: \"Hi, there\",\r\n            description: \"This is description.\",\r\n            thumb: \"https://www.chuzhitong.com/images/logo.png\", // 小程序缩略图\r\n            media: {\r\n                type: Wechat.Type.MINI,\r\n                userName: \"gh_946331c270fa\", // 小程序原始 id\r\n                path: \"pages/contact/contact\", // 小程序的页面路径\r\n                withShareTicket: true, // 是否使用带 shareTicket 的分享\r\n                miniprogramType: Wechat.Mini.RELEASE // 小程序类型（正式版）\r\n            }\r\n    },\r\n        scene: Wechat.Scene.SESSION   // 小程序仅支持聊天界面\r\n    }, function (response) {\r\n        console.log(response);\r\n    }, function (reason) {\r\n        console.log(reason);\r\n    });\r\n}, false);\r\n```\r\n\r\n### 7. 打开小程序\r\n\r\n直接调起微信并打开指定小程序，需传入小程序原始 id、页面路径等参数，支持指定小程序版本（正式版、开发版、体验版）：\r\n\r\n```js\r\n// 等待 Cordova 环境就绪\r\ndocument.addEventListener('deviceready', function() {\r\n    // 打开小程序\r\n    var params = {\r\n        userName: 'gh_946331c270fa', // 小程序原始 id\r\n        path: 'pages/contact/contact', // 小程序的页面路径\r\n        miniprogramType: Wechat.Mini.RELEASE // 小程序类型（正式版、开发版、体验版）\r\n    };\r\n    Wechat.openMiniProgram(params, function(response){\r\n        alert(JSON.stringify(response));\r\n    }, function(reason){\r\n      alert(\"Failed: \" + reason);  \r\n    });\r\n}, false);\r\n```\r\n\r\n### 8. 调起微信支付\r\n\r\n调起微信支付界面，支付参数（partnerid、prepayid 等）需由服务端生成并返回给前端，前端仅负责调用支付接口：\r\n\r\n```js\r\n// 等待 Cordova 环境就绪\r\ndocument.addEventListener('deviceready', function() {\r\n    // 调起微信支付，数据由 web 服务端生成返回给 APP 前端，然后前端调起支付界面\r\n    var params = {\r\n        partnerid: '1573080401', // 商户 id（从微信商户平台获取）\r\n        prepayid: 'wx08130020798076c61ca4d6b876b7490000', // 预支付 id（服务端生成）\r\n        noncestr: 'a8a7db499852484dac2a6fa350980a16', // 随机字符串（服务端生成）\r\n        timestamp: '1762578047', // 时间戳（服务端生成）\r\n        sign: 'ChzOmrXDyKJa6AFAZZ....', // 签名（服务端生成）\r\n    };\r\n\r\n    Wechat.sendPaymentRequest(params, function () {\r\n        alert(\"支付成功\");\r\n    }, function (reason) {\r\n        alert(\"支付失败: \" + reason);\r\n    });\r\n}, false);\r\n```\r\n\r\n## 使用说明\r\n\r\n以下为插件使用的核心说明，包括 API 详解、参数说明、常见问题及注意事项等，帮助开发者快速上手并避免异常，重点突出 OHOS 平台特性与限制。\r\n\r\n### 1. 核心 API 说明\r\n\r\n插件所有方法均挂载在全局对象 `Wechat` 下，无需额外引入，所有 API 均为异步执行，需在 Cordova 加载完成后（`deviceready` 事件触发后）调用，否则会出现 API 未定义、调用失败等异常。\r\n\r\n#### 1.1 检查微信安装状态\r\n\r\n功能：检测设备是否安装微信客户端，用于后续功能引导。\r\n\r\n语法：\r\n\r\n```javascript\r\nWechat.isInstalled(successCallback, errorCallback);\r\n```\r\n\r\n参数说明：\r\n\r\n- successCallback：成功回调，参数为布尔值（`installed`），`true` 表示已安装，`false` 表示未安装；\r\n\r\n- errorCallback：失败回调，参数为错误信息（`reason`），说明检测失败的原因。\r\n\r\n#### 1.2 微信授权登录\r\n\r\n功能：调用微信 OAuth2.0 授权，获取授权凭证，用于后续获取用户信息。\r\n\r\n语法：\r\n\r\n```javascript\r\nWechat.auth(scope, state, successCallback, errorCallback);\r\n```\r\n\r\n参数说明：\r\n\r\n- scope：授权范围，常用 `snsapi_userinfo`（获取用户基本信息）；\r\n\r\n- state：随机字符串，用于防 CSRF 攻击，建议使用时间戳生成；\r\n\r\n- successCallback：成功回调，参数为授权相关响应数据；\r\n\r\n- errorCallback：失败回调，参数为错误信息（`reason`）。\r\n\r\n#### 1.3 分享功能\r\n\r\n功能：支持文本、图片、小程序等类型分享，OHOS 平台仅支持分享到聊天界面。\r\n\r\n语法：\r\n\r\n```javascript\r\nWechat.share(shareParams, successCallback, errorCallback);\r\n```\r\n\r\n参数说明（shareParams）：\r\n\r\n- text：文本分享时必填，为分享的文本内容；\r\n\r\n- message：图片、小程序等类型分享时必填，包含 title（标题）、description（描述）、thumb（缩略图）、media（媒体信息）；\r\n\r\n- media：媒体信息，包含 type（媒体类型）、image（图片地址/base64）、userName（小程序原始 id）、path（小程序路径）等；\r\n\r\n- scene：分享场景，OHOS 平台无效，默认分享到聊天界面。\r\n\r\n#### 1.4 打开小程序\r\n\r\n功能：调起微信并打开指定小程序，支持指定小程序版本。\r\n\r\n语法：\r\n\r\n```javascript\r\nWechat.openMiniProgram(miniParams, successCallback, errorCallback);\r\n```\r\n\r\n参数说明（miniParams）：\r\n\r\n- userName：小程序原始 id（必填）；\r\n\r\n- path：小程序页面路径（可选）；\r\n\r\n- miniprogramType：小程序类型（必填），可选值：`Wechat.Mini.RELEASE`（正式版）、`Wechat.Mini.TEST`（开发版）、`Wechat.Mini.PREVIEW`（体验版）。\r\n\r\n#### 1.5 微信支付\r\n\r\n功能：调起微信支付界面，完成订单支付，支付参数需由服务端生成。\r\n\r\n语法：\r\n\r\n```javascript\r\nWechat.sendPaymentRequest(payParams, successCallback, errorCallback);\r\n```\r\n\r\n参数说明（payParams）：\r\n\r\n- partnerid：商户 id（必填，从微信商户平台获取）；\r\n\r\n- prepayid：预支付 id（必填，服务端生成）；\r\n\r\n- noncestr：随机字符串（必填，服务端生成）；\r\n\r\n- timestamp：时间戳（必填，服务端生成）；\r\n\r\n- sign：签名（必填，服务端生成，遵循微信支付签名规范）。\r\n\r\n### 2. 常见问题（FAQ）\r\n\r\n#### Q1: 调用插件 API 后无反应怎么办？\r\n\r\n1. 检查 API 调用时机：确保在 `deviceready` 事件触发后调用，否则 `Wechat` 对象可能未定义；\r\n\r\n2. 检查插件安装：执行 `hcordova plugin list` 确认插件已成功安装，且安装时传入了正确的 AppID；\r\n\r\n3. 检查 OHOS 配置：确认已完成 scheme 声明、action 配置、依赖导入及 ArkTS 侧初始化；\r\n\r\n4. 检查微信安装：通过 `Wechat.isInstalled` 检测设备是否安装微信，未安装则无法使用相关功能；\r\n\r\n5. 检查 AppID 一致性：确保安装插件、初始化插件时使用的 AppID 与微信开放平台注册的 AppID 一致；\r\n\r\n6. 重新构建项目：执行 `hcordova build ohos`，确保插件资源和配置正确加载。\r\n\r\n#### Q2: OHOS 平台分享后无法判断是否成功怎么办？\r\n\r\n该问题是微信 Harmony SDK 本身的限制，插件无法更改，具体特性如下：\r\n\r\n- 分享文本、小程序时：无论是否分享成功，若未返回应用，会回调成功；若返回应用且分享失败，会回调失败，分享成功则不回调；\r\n\r\n- 分享图片时：调用微信成功后，无论是否分享成功，均不会回调失败，仅回调成功，无法准确判断分享结果。\r\n\r\n#### Q3: 微信支付失败怎么办？\r\n\r\n1. 检查支付参数：确认 partnerid、prepayid、noncestr、timestamp、sign 等参数完整且正确，参数需由服务端生成；\r\n\r\n2. 检查商户配置：确认微信商户平台已绑定对应 AppID，且商户信息已审核通过；\r\n\r\n3. 检查网络状态：确保设备网络正常，微信客户端能正常联网；\r\n\r\n4. 检查微信版本：确保设备安装的微信客户端版本支持微信支付功能。\r\n\r\n#### Q4: OHOS 平台无法分享到朋友圈怎么办？\r\n\r\n受微信 Harmony SDK 限制，OHOS 平台暂不支持分享到朋友圈、收藏，仅支持分享到聊天界面，`scene` 字段设置无效，无需尝试修改该字段。\r\n\r\n### 3. 注意事项\r\n\r\n- API 调用时机：所有 JavaScript API 必须在 `deviceready` 事件触发后调用，否则会出现 `Wechat` 对象未定义、调用失败等异常。\r\n\r\n- AppID 配置：安装插件、初始化插件时使用的 AppID 必须与微信开放平台注册的 AppID 一致，否则会出现授权失败、分享失败、支付失败等异常。\r\n\r\n- OHOS 配置要求：OHOS 平台必须完成 scheme 声明、action 配置、依赖导入及 ArkTS 侧初始化，缺一不可，否则插件功能无法正常触发。\r\n\r\n- 微信 SDK 限制：需明确 OHOS 平台的功能限制，不支持朋友圈分享、APP 分享、表情分享、视频/音乐分享，避免无效开发。\r\n\r\n- 分享回调说明：OHOS 平台分享操作的回调受微信 SDK 限制，无法准确判断分享是否成功，需在应用中做好用户引导，避免误导用户。\r\n\r\n- 支付参数安全：微信支付的相关参数（如 sign）需由服务端生成，前端不可直接生成，避免参数泄露导致安全风险。\r\n\r\n- 兼容性提示：确保 OHOS 设备版本为 5.0 及以上，HCordova CLI 版本为 10.0.0 及以上，cordova-openharmony 版本为 2.0.0 及以上，否则可能出现功能异常。\r\n\r\n- 错误排查：若出现功能异常，可通过回调函数中的 error 信息排查问题，同时检查微信开放平台的接口权限是否已审核通过。\r\n\r\n## 目录结构\r\n\r\n```\r\ncordova-plugin-wechat                # [根目录] 微信 SDK 插件项目根目录\r\n├── src                              # [源码目录] 存放原生平台代码\r\n│   └── main                         # [主目录] 主代码目录\r\n│       ├── cpp                      # [C++ 目录] C++ 原生代码目录\r\n│       │   └── Wechat               # [C++ 模块] 微信功能 C++ 模块文件夹\r\n│       │       ├── Wechat.cpp       # [C++ 实现] C++ 源文件，插件的入口文件\r\n│       │       └── Wechat.h         # [C++ 声明] C++ 头文件，定义微信功能接口\r\n│       └── ets                      # [ArkTS 目录] ArkTS/ETS 代码目录\r\n│           └── components           # [组件目录] 存放 UI 组件\r\n│               └── WeChatAction     # [TS 模块] 微信相关操作 UI 组件文件夹\r\n│                   └── WeChatAction.ets # [ETS 文件] 实现微信登录/分享/支付等核心逻辑\r\n├── www                              # [前端目录] 存放供 Web 端调用的 JS 接口文件\r\n│   └── wechat.js                    # [JS 文件] 暴露给 Web 端的 JS 接口\r\n├── .gitignore                       # [配置] Git 版本控制忽略文件配置\r\n├── LICENSE                          # [文本] 开源许可证文件\r\n├── OAT.xml                          # [配置] 门禁配置文件\r\n├── package.json                     # [配置] 项目元数据及依赖配置文件\r\n├── plugin.xml                       # [配置] Cordova 插件核心配置文件，定义插件结构和映射关系\r\n└── README.md                        # [文本] 插件使用说明文档\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Cordova/cordova-plugin-wechat/issues) ，当然也非常欢迎发 [PR](https://gitcode.com/CPF-Cordova/cordova-plugin-wechat/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **Apache License 2.0** 开源，详见 [LICENSE](LICENSE) 文件。\r\n\r\n## 官方资源\r\n\r\n- Android 和 iOS：[cordova-plugin-wechat 官方指南](https://www.npmjs.com/package/cordova-plugin-wechat)\r\n\r\n- GitCode 仓库：[https://gitcode.com/CPF-Cordova/cordova-plugin-wechat](https://gitcode.com/CPF-Cordova/cordova-plugin-wechat)\r\n\r\n- 问题反馈：[提交 Issue](https://gitcode.com/CPF-Cordova/cordova-plugin-wechat/issues)\r\n\r\n- 微信开放平台：[https://open.weixin.qq.com/](https://open.weixin.qq.com/)\r\n\r\n- 微信商户平台：[https://pay.weixin.qq.com/](https://pay.weixin.qq.com/)\r\n\r\n","readmeFilename":"README.md"}