更新记录
1.0.12(2025-01-14) 下载此版本
优化使用文档
1.0.11(2025-01-14) 下载此版本
优化使用文档
1.0.10(2025-01-14) 下载此版本
优化华为登录文档
查看更多平台兼容性
Vue2 | Vue3 |
---|---|
× | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 4.36,Android:不支持,iOS:不支持,HarmonyNext:支持 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 | 鸿蒙元服务 |
---|---|---|---|---|
× | × | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
harmony-wechat
开发文档
UTS 语法 UTS API插件 UTS uni-app兼容模式组件 UTS 标准模式组件 Hello UTS
配置微信KEY
在目录 harmony-configs/entry/src/main/module.json5 中 找到或添加metadata
"metadata":[
{
"name":"wx_appid",
"value":"你的微信appid"
}
],
使用
在需要使用的地方使用以下代码劫持掉uni原先的命令
// #ifdef APP-HARMONY
import {
wxpay,
wxlogin,
wxMiniApp,
wxShareMiniApp,
wxShareText,
hwPreLogin,
wxShareImg,
wxShareHtml
} from '@/uni_modules/harmony-wechat'
plus.runtime.launchMiniProgram = async (ops) => {
await wxMiniApp(ops.id, ops.path, ops.type)
}
const requestPayment_ = uni.requestPayment
uni.requestPayment = async (ops) => {
if (ops?.provider != 'wxpay') return requestPayment_(ops);
let o = ops.orderInfo;
let res = await wxpay(o.appid, o.partnerid, o.package, o.prepayid, o.noncestr, o.timestamp, o.sign)
if (res.errCode == 0) {
if (ops?.success) ops?.success()
} else {
if (ops?.fail)
ops?.fail({
"errMsg": `requestPayment:fail [Payment微信:${res.errCode}]请参考url地址,https://pay.weixin.qq.com/doc/v3/merchant/4012073588`,
"code": -100
})
}
if (ops?.complete) ops?.complete()
}
const login_ = uni.login
uni.login = async (ops) => {
if (ops?.provider != 'weixin') return login_(ops);
let res = await wxlogin()
if (ops?.success) ops?.success(res)
if (ops?.complete) ops?.complete()
}
const share_ = uni.share
uni.share = async (ops) => {
if (ops?.provider != 'weixin') return share_(ops);
let checkres = (res) => {
if (res) {
if (ops?.success) ops.success();
} else {
if (ops?.fail) ops.fail();
}
if (ops?.complete) ops.complete();
}
if (ops?.type == 0) {
checkres(await wxShareHtml(ops?.href || '', ops?.title || '', ops?.summary || '', ops?.imageUrl || ''))
return;
}
if (ops?.type == 1) {
checkres(await wxShareText(ops?.title, ops?.summary || ''))
return;
}
if (ops?.type == 2) {
checkres(await wxShareImg(ops?.imageUrl || ''))
return;
}
if (ops?.type == 5) {
checkres(await wxShareMiniApp(ops?.miniProgram, ops?.title, ops?.summary || '', ops?.imageUrl || ''))
return;
}
uni.showToast({
icon: 'none',
title: '该系统暂不支持该分享'
})
}
// #endif
hwPreLogin(
async data => {
console.log('华为登录', JSON.stringify(data))
this.huaweiData = data.data
let huaweCode = data.data.authorizationCode
// 一下代码让后端进行书写
// 第一步,用authorizationCode换取用户级凭证的access_token
// https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/account-api-obtain-user-token-V5
// 第二步,用access_token换取用户信息,如openid,unionID,处理后返回用户在您应用中的token
// https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/account-api-get-user-info-quicklogin-getid-V5
return;
},
error => {
let title = `Failed to login. Code: ${error.code}, message: ${error.message}`
if (error?.code == 1001502001) {
title = '当尚未登录华为账号,请前往设置中登录'
}
if (error?.code == 1001500003) {
title = '该账号不支持一键登录,如海外账号'
}
if (error?.code == 1001502005) {
title = '网络错误,请检查您的网络情况'
}
if (error?.code == 1005300001) {
title = '用户未同意用户协议'
}
if (error?.code == 401) {
title = '参数错误'
}
if (error?.code == 1001502014) {
title = '华为登录能力审核中'
}
uni.showToast({
icon: 'none',
title: title
})
}
)