当前位置: 首页 > news >正文

鸿蒙Next如何接入微信支付

大家好,这是我工作中接触到的鸿蒙Next接入微信支付,有使用到,分享给大家,轻松便捷

前提:你已有鸿蒙版本的微信,并且微信余额或绑定银行卡有钱,因为内测的微信暂不支持收红包和转账,2.你的应用已有安卓或IOS端的微信支付,否则的话,工作量将不止如此

正文:首先需要你公司这边去申请开通鸿蒙版本的微信商户

注意细节请看链接:接入指南 / 鸿蒙接入指南,申请需要用到两个参数:Bundle ID,Bundle ID 指的是鸿蒙应用的包名,详细请看:https://developer.huawei.com/consumer/cn/doc/app/agc-help-createharmonyapp-0000001945392297

 Identifier 指的是鸿蒙应用的 appIdentifier,详情请看:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-bundlemanager-bundleinfo-V5

申请通过后,即可进入微信支付调试步骤

1.在你的鸿蒙项目中,修改项目中的oh-package.json5文件,在dependencies中加入微信 opensdk 的依赖项:

{"name": "demo","version": "1.0.0","description": "Please describe the basic information.","main": "","author": "","license": "","dependencies": {"@tencent/wechat_open_sdk": "1.0.0"}
}

然后右上角重新Sync Now一下,等下加载完成,你就成功引入了鸿蒙版本的微信SDK

2.新建.ets文件,文件名为:Constants,然后复制以下代码:APP_ID是你公司申请过后的鸿蒙微信支付商户Id

export const APP_ID = "wxd5a474c635b8fd17"
export const APP_SECRET = ""

3. 新建.ets文件 文件名为:WXApiWrap,然后复制以下代码:

import * as wxopensdk from '@tencent/wechat_open_sdk';
import { APP_ID } from '../Constants';export type OnWXReq = (req: wxopensdk.BaseReq) => void
export type OnWXResp = (resp: wxopensdk.BaseResp) => voidconst kTag = "WXApiEventHandlerImpl"class WXApiEventHandlerImpl implements wxopensdk.WXApiEventHandler {private onReqCallbacks: Map<OnWXReq, OnWXReq> = new Mapprivate onRespCallbacks: Map<OnWXResp, OnWXResp> = new MapregisterOnWXReqCallback(on: OnWXReq) {this.onReqCallbacks.set(on, on)}unregisterOnWXReqCallback(on: OnWXReq) {this.onReqCallbacks.delete(on)}registerOnWXRespCallback(on: OnWXResp) {this.onRespCallbacks.set(on, on)}unregisterOnWXRespCallback(on: OnWXResp) {this.onRespCallbacks.delete(on)}onReq(req: wxopensdk.BaseReq): void {wxopensdk.Log.i(kTag, "onReq:%s", JSON.stringify(req))this.onReqCallbacks.forEach((on) => {on(req)})}onResp(resp: wxopensdk.BaseResp): void {wxopensdk.Log.i(kTag, "onResp:%s", JSON.stringify(resp))this.onRespCallbacks.forEach((on) => {on(resp)})}
}export const WXApi = wxopensdk.WXAPIFactory.createWXAPI(APP_ID)
export const WXEventHandler = new WXApiEventHandlerImpl

注意事项:请注意相关文件引入的路径

3.重点!!一定要在EntryAbility里初始化和注册回调微信SDK,具体代码如下:

import { WXApi, WXEventHandler } from '../model/WXApiWrap';onCreate(want: Want, _launchParam: AbilityConstant.LaunchParam): void {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');this.handleWeChatCallIfNeed(want)}onNewWant(want: Want, _launchParam: AbilityConstant.LaunchParam): void {this.handleWeChatCallIfNeed(want)}private handleWeChatCallIfNeed(want: Want) {WXApi.handleWant(want, WXEventHandler)}

注意事项:注意相应文件的引入路径

4.使用 也是重点 

1.在你需要调用微信支付的文件 引入如下代码:

import { WXApi, WXEventHandler } from '../model/WXApiWrap';
import * as wxopensdk from '@tencent/wechat_open_sdk';
import { common } from '@kit.AbilityKit';Button("跳转支付").onClick(async () => {let req = new wxopensdk.PayReqreq.partnerId = '2480306091'req.appId = 'wx05b3e2e9fc730840'req.packageValue = 'Sign=WXPay'req.prepayId = 'wx26161523845794ecced251acf2b6860000'req.nonceStr = 'vmall_240926161523_993_2774'req.timeStamp = '1727338524'req.sign = 'rAqsrx5yLfRNBGvlHYuLhUsNK0OPeOLQ5xlvhxFo9guPU4HeNtzRdPaGAXAzXvn7V5chVe8sj3BfvDgwXlCKctCcFIllOgheyZbZ7btFC++9bW0QTijhWo1hZ6LhvjcKQ1zf53RGX7zf7GBu9sheqWPKlWqJJzynBZo8UH5Wow9t/WK5fanNj6ST2U2zPQGxuCH+DBMOKJAhhaalrOXlqj+feEiz1bLAzEmhLzIREgcWJQyZmdI5VO0B8r11ND+o1iBYgoohDUuJc+bd9r6RvmZBSE+HqggWE4p3D0/NzY7mQH+51u0osfOfaTHVLqlUM3IMoXi1vH4a0Qrg1P6c0g=='req.extData = 'extData'let finished = await this.wxApi.sendReq(getContext(this) as common.UIAbilityContext, req)console.log("微信支付", finished)}).width('80%')

注意事项:请注意相关文件的引入路径,相关参数请替换后端返回的参数

相关参数备注:注释不一定准确,详细字段和内容请参考后端返回的数据,每个人的书写习惯不一样

partnerId // 商户号
appId // 应用ID
packageValue //固定名称 Sign=WXPay 
prepayId// 微信预支付交易会话ID
nonceStr// 随机字符串
timeStamp// 时间戳
sign// 签名
extData//可选 如需写: extData

支付结果会在这个函数里回调:

  onResp(resp: wxopensdk.BaseResp): void {console.log('微信支付',JSON.stringify(resp))wxopensdk.Log.i(kTag, "onResp:%s", JSON.stringify(resp))this.onRespCallbacks.forEach((on) => {console.log('微信支付1',JSON.stringify(resp))on(resp)})}

相关回调码:

描述

解决方案

0

成功

展示成功页面

-1

错误

可能的原因:签名错误、未注册AppID、项目设置AppID不正确、注册的AppID与设置的不匹配、其他异常等

-2

用户取消

无需处理。发生场景:用户不支付了,点击取消,返回App

大家可在支付回调里处理相关操作

相关文档链接:

微信sdk库:OpenHarmony三方库中心仓

微信demo下载:包含微信支付,微信登录,微信分享:https://dldir1.qq.com/WechatWebDev/opensdk/ohos/OpenSDK-1.0.0.zip

以上就是微信支付的流程了。对大家有帮助的话,可以点赞收藏哦

相关文章:

鸿蒙Next如何接入微信支付

大家好&#xff0c;这是我工作中接触到的鸿蒙Next接入微信支付&#xff0c;有使用到&#xff0c;分享给大家&#xff0c;轻松便捷 前提:你已有鸿蒙版本的微信&#xff0c;并且微信余额或绑定银行卡有钱&#xff0c;因为内测的微信暂不支持收红包和转账&#xff0c;2.你的应用已…...

nginx(五):关于location匹配规则那些事

关于location匹配规则那些事 1 概述2 语法3 匹配规则说明3.1 精确匹配3.2 前缀匹配&#xff08;^~&#xff09;3.3 正则表达式匹配&#xff08;\~和\~*&#xff09;3.4 普通前缀匹配 4 匹配优先级5 注意事项6 总结 大家好&#xff0c;我是欧阳方超&#xff0c;可以我的公众号“…...

【论文阅读】Associative Alignment for Few-shot Image Classification

用于小样本图像分类的关联对齐 引用&#xff1a;Afrasiyabi A, Lalonde J F, Gagn C. Associative alignment for few-shot image classification[C]//Computer Vision–ECCV 2020: 16th European Conference, Glasgow, UK, August 23–28, 2020, Proceedings, Part V 16. Spri…...

acmessl.cn提供接口API方式申请免费ssl证书

目录 一、前沿 二、API接口文档 1、证书可申请列表 简要描述 请求URL 请求方式 返回参数说明 备注 2、证书申请 简要描述 请求URL 请求方式 业务参数 返回示例 返回参数说明 备注 3、证书查询 简要描述 请求URL 请求方式 业务参数 返回参数说明 备注 4、证…...

DBeaver如何快速格式化sql语句,真简单!

前言 我之前在使用DBeaver的时候&#xff0c;一直不知道其可以格式化sql语句&#xff0c;导致sql语句看起来比较杂乱&#xff0c;今天就来介绍下DBeaver如何格式化sql语句。 如何格式化sql语句 首先&#xff0c;我们打开一个sql窗口&#xff0c;在里面输入我们要查询的sql语…...

OpenCV C++ 计算两幅图像之间的多尺度结构相似性(MSSIM)

目录 一、定义与背景 二、计算流程 三、性质与特点 四、应用场景 五、代码实现 多尺度结构相似性(MSSIM)是一种用于衡量两幅图像之间相似度的指标,它基于结构相似性(SSIM)指数进行扩展,通过在不同尺度上计算SSIM来评估图像的整体质量。以下是对MSSIM的详细介…...

代码随想录第二十二天

回溯算法理论介绍 回溯算法是一种基于递归思想的算法设计技术&#xff0c;适用于解决需要构造所有解或找到特定解的组合问题。回溯的基本思路是通过系统地搜索所有可能的解决方案&#xff0c;然后逐步撤销不符合要求的选择&#xff0c;回到上一步继续尝试。这种算法最适合应用…...

【k8s】ClusterIP能http访问,但是不能ping 的原因

ClusterIP 服务在 Kubernetes 中是可以访问的&#xff0c;但通常无法通过 ping 命令来测试连通性。这主要是因为 ClusterIP 是一个虚拟 IP 地址&#xff0c;而不是实际分配给某个网络接口的 IP 地址。以下是一些原因和解释&#xff1a; 1. 虚拟 IP 地址 ClusterIP 是一个虚拟…...

【力扣打卡系列】单调栈

坚持按题型打卡&刷&梳理力扣算法题系列&#xff0c;语言为go&#xff0c;Day20 单调栈 题目描述 解题思路 单调栈 后进先出 记录的数据加在最上面丢掉数据也先从最上面开始 单调性 记录t[i]之前会先把所有小于等于t[i]的数据丢掉&#xff0c;不可能出现上面大下面小的…...

使用docker安装zlmediakit服务(zlm)

zlmediakit安装 zlmediakit安装需要依赖环境和系统配置&#xff0c;所以采用docker的方式来安装不容易出错。 docker pull拉取镜像(最新) docker pull zlmediakit/zlmediakit:master然后先运行起来 sudo docker run -d -p 1935:1935 -p 80:80 -p 8554:554 -p 10000:10000 -p …...

SOLID原则-单一职责原则

转载请注明出处:https://blog.csdn.net/dmk877/article/details/143447010 作为一名资深程序员越来越感觉到基础知识的重要性&#xff0c;比如设计原则、设计模式、算法等&#xff0c;这些知识的长期积累会让你突破瓶颈实现质的飞跃。鉴于此我决定写一系列与此相关的博客&…...

Transformer究竟是什么?预训练又指什么?BERT

目录 Transformer究竟是什么? 预训练又指什么? BERT的影响力 Transformer究竟是什么? Transformer是一种基于自注意力机制(Self-Attention Mechanism)的神经网络架构,它最初是为解决机器翻译等序列到序列(Seq2Seq)任务而设计的。与传统的循环神经网络(RNN)或卷…...

Jdbc批处理功能和MybatisPlus

文章目录 1. 序言2. JDBC批处理功能和rewriteBatchedStatements3. JDBC批量插入的测试4. MybatisPlus#ServiceImpl.saveBatch()5. 结语&#xff1a;如果对大家有帮助&#xff0c;请点赞支持。如果有问题随时在评论中指出&#xff0c;感谢。 1. 序言 MybatisPlus的ServiceImpl类…...

对于相对速度的重新理解

狭义相对论速度合成公式如下&#xff0c; 现在让我们尝试用另一种方式把它推导出来。 我们先看速度的定义&#xff0c; 常规的速度合成方式如下&#xff0c; 如果我们用速度的倒数来理解速度&#xff0c; 原来的两个相对速度合成&#xff0c; 是因为假定了时间单位是一样的&am…...

Scala的属性访问权限(一)默认访问权限

//eg:银行账户存钱取钱 // 账户类&#xff1a; // -balance() 余额 // -deposit() 存钱 // -withdraw() 取钱 // -transfer(to:账户,amount:Dobule)转账 package Test1104 //银行账户class BankAccount(private var balance:Int){def showMoney():Unit {println(s"…...

【算法】(Python)贪心算法

贪心算法&#xff1a; 又称贪婪算法&#xff0c;greedy algorithm。贪心地追求局部最优解&#xff0c;即每一步当前状态下最优选择。试图通过各局部最优解达到最终全局最优解。但不从整体最优上考虑&#xff0c;不一定全局最优解。步骤&#xff1a;从初始状态拆分成一步一步的…...

条件logistic回归原理及案例分析

前面介绍的二元、多分类、有序Logistic回归都属于非条件Logistic回归&#xff0c;每个个案均是相互独立关系。在实际研究中&#xff0c;还有另外一种情况&#xff0c;即个案间存在配对关系&#xff0c;比如医学研究中配对设计的病例对照研究&#xff0c;此时违反了个案相互独立…...

redis7学习笔记

文章目录 1. 简介1.1 功能介绍1.1.1 分布式缓存1.1.2 内存存储和持久化(RDBAOF)1.1.3 高可用架构搭配1.1.4 缓存穿透、击穿、雪崩1.1.5 分布式锁1.1.6 队列 1.2 数据类型StringListHashSetZSetGEOHyperLogLogBitmapBitfieldStream 2. 命令2.1 通用命令copydeldumpexistsexpire …...

重学Android:自定义View基础(一)

前言 作为一名安卓开发&#xff0c;也被称为大前端&#xff0c;做一个美观的界面&#xff0c;是我们必备的基础技能&#xff0c;可能在开发中我们最常用的是系统自带的View&#xff0c;因为他能满足绝大部分需求&#xff0c;难一点的我们也可以上Github上找个三方库使用&#…...

前端好用的网站分享——CSS(持续更新中)

1.CSS Scan 点击进入CSS Scan CSS盒子阴影大全 2.渐变背景 点击进入color.oulu 3.CSS简化压缩 点击进入toptal 4.CSS可视化 点击进入CSS可视化 这个强推&#xff0c;话不多说&#xff0c;看图! 5.Marko 点击进入Marko 有很多按钮样式 6.getwaves 点击进入getwaves 生…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...