更新记录

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
        })
    }
)

隐私、权限声明

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

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

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

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问