@cordova-ohos/cordova-plugin-wechat
v3.1.0
Published
Cordova Wechat Plugin
Downloads
117
Readme
cordova-plugin-wechat
Cordova/PhoneGap 插件,用于在混合应用(Hybrid App)中集成微信 SDK,支持微信登录、分享、支付等核心功能,适配OHOS平台。
功能特性
✅ 检查微信客户端安装状态
✅ 微信授权登录
✅ 多类型分享(文本、图片、链接、小程序)
✅ 微信支付(基于微信商户平台)
✅ 打开微信客户端 / 指定页面
✅ 完整的错误回调与状态提示
OHOS平台不支持以下功能
(1),微信Harmony SDK仅支持分享到聊天界面,不支持分享到朋友圈、收藏,scene字段无效;
(2),微信Harmony SDK不支持分享APP
(3),微信Harmony SDK不支持分享表情,表情可作为图片分享
(4),微信Harmony SDK不支持分享视频、音乐
支持平台
- OHOS 5.0+
前置准备
- OHOS:填写应用包名,上传签名文件等信息
安装
通过 HCordova CLI 安装(支持 cordova-openharmony 2.0.0+):
hcordova命令化工具 仓库:OpenHarmony-Cordova/hcordova-cli
通过 npm 安装(推荐)
hcordova plugin add cordova-plugin-wechat --variable WECHATAPPID=YOUR_WECHAT_APPID --platform ohos卸载
hcordova plugin remove cordova-plugin-wechat --variable WECHATAPPID=YOUR_WECHAT_APPID --platform ohos配置说明
OHOS 额外配置
- 在开发者的 App module 的 module.json5 里加入下方scheme声明:
"querySchemes": [
"weixin",
"wxopensdk"
]- 开发者需要先配置和微信约定的action wxentity.action.open:
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home",
"ohos.want.action.home",
"wxentity.action.open"
]
}
]- 修改项目中的oh-package.json5文件,在dependencies中加入微信 opensdk 的依赖项:
{
"name": "entry",
"version": "1.0.0",
"description": "Please describe the basic information.",
"main": "",
"author": "",
"license": "",
"dependencies": {
"@tencent/wechat_open_sdk": "^1.0.0",
"@magongshou/harmony-cordova": "file:../cordova"
}
}- 修改项目中的EntryAbility的代码,添加微信插件在ArkTS侧监听和初始化:
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
//添加如下代码,注册Wechat监听插件
//WeChatAction/WeChatAction,动态导入微信插件
//EntryAbility 微信插件的入口函数
//wx9dab96bdfa8f16ec为app的appId,在微信的开放平台获取
PluginRegisterHandle(this,
want,
"WeChatAction/WeChatAction",
"EntryAbility",
"wx9dab96bdfa8f16ec"
);
}
onNewWant(want: Want): void {
//添加如下代码,注册Wechat监听插件
//WeChatAction/WeChatAction,动态导入微信插件
//EntryAbility 微信插件的入口函数
//wx9dab96bdfa8f16ec为app的appId,在微信的开放平台获取
PluginRegisterHandle(this,
want,
"WeChatAction/WeChatAction",
"EntryAbility",
"wx9dab96bdfa8f16ec"
);
}
}使用示例
1. 检查微信是否安装
//判断微信是否已经安装
Wechat.isInstalled(function (installed) {
alert("Wechat installed: " + (installed ? "Yes" : "No"));
}, function (reason) {
alert("Failed: " + reason);
});2. 微信登录
//微信授权登录
var scope = "snsapi_userinfo",
state = "_" + (+new Date());
Wechat.auth(scope, state, function (response) {
alert("授权成功:根据服务端回调获取数据");
}, function (reason) {
alert("发送失败");
});3. 分享文本到聊天界面
//分享文本到聊天界面
/*分享到微信后,无论是否分享成功,
*如果没有返回应用,js会回调分享成功,但不一定成功,
*如果返回了应用,分享失败,会通知js侧,分享成功不再通知
*这些都是SDK限制,插件无法更改
*/
Wechat.share({
text: "This is just a plain string",
//scene属性无效
scene: Wechat.Scene.TIMELINE
}, function (response) {
//此处并不能判断是否真的分享成功,如果没有调失败就是成功的
console.log("Success");
}, function (reason) {
//如果返回了失败,是真的分享失败,会先调用成功
alert("Failed: " + reason);
});4. 分享在线图片到聊天界面
//分享在线图片到聊天界面
/*通知js侧调用微信成功,分享是否成功无法判断,
*即使返回了应用也不通知js侧,
*这些都是SDK限制,插件无法更改
*/
Wechat.share({
message: {
media: {
type:Wechat.Type.IMAGE,
image:"https://www.chuzhitong.com/images/logo.png"
}
},
//scene属性无效
scene: Wechat.Scene.TIMELINE
}, function (response) {
console.log("Success");
}, function (reason) {
console.log("Failed: " + reason);
});5. 分享base64图片到聊天界面
//分享base64图片到聊天界面
/*通知js侧调用微信成功,分享是否成功无法判断,
*即使返回了应用也不通知js侧,
*这些都是SDK限制,插件无法更改
*/
Wechat.share({
message: {
media: {
type:Wechat.Type.IMAGE,
image:"data:image/jpeg;base64,djfksjfdlsf...."
}
},
//scene属性无效
scene: Wechat.Scene.TIMELINE
}, function (response) {
console.log("Success");
}, function (reason) {
console.log("Failed: " + reason);
});6. 分享小程序
//分享小程序
/*分享到微信后,无论是否分享成功,
*如果没有返回应用,js会回调分享成功,但不一定成功,
*如果返回了应用,分享失败,会通知js侧,分享成功不再通知
*这些都是SDK限制,插件无法更改
*/
Wechat.share({
message: {
title: "Hi, there",
description: "This is description.",
thumb: "https://www.chuzhitong.com/images/logo.png",
media: {
type: Wechat.Type.MINI,
userName: "gh_946331c270fa", // 小程序原始id
path: "pages/contact/contact", // 小程序的页面路径
withShareTicket: true, // 是否使用带shareTicket的分享
miniprogramType: Wechat.Mini.RELEASE
}
},
scene: Wechat.Scene.SESSION // 小程序仅支持聊天界面
}, function (response) {
console.log(response);
}, function (reason) {
console.log(reason);
});7. 打开小程序
//打开小程序
var params = {
userName: 'gh_946331c270fa', // userName
path: 'pages/contact/contact', // open mini program page
// Developer, trial, and official version
miniprogramType: Wechat.Mini.RELEASE
};
Wechat.openMiniProgram(params,function(response){
alert(response);
},function(reason){
alert(reason);
})8. 调起微信支付
//调起微信支付,数据由web服务端生成返回给APP前端,然后前端调起支付界面
var params = {
partnerid: '1573080401', // merchant id
prepayid: 'wx08130020798076c61ca4d6b876b7490000', // prepay id
noncestr: 'a8a7db499852484dac2a6fa350980a16', // nonce
timestamp: '1762578047', // timestamp
sign: 'ChzOmrXDyKJa6AFAZZ....', // signed string
};
Wechat.sendPaymentRequest(params, function () {
alert("Success");
}, function (reason) {
alert("Failed: " + reason);
});许可证
本插件基于 Apache License 2.0 开源,详情见 LICENSE 文件。
官方资源
Android和iOS:cordova-plugin-wechat 官方指南
GitCode 仓库:OpenHarmony-Cordova/cordova-plugin-wechat
问题反馈:提交 Issue
