【微信支付】前端 JSAPI 时序图及代码实现 Hook,微信内置浏览器,公众号开发

主要参数都是从后端获取的,非常考验后端的签名,签名不对就要调试很久,切记官方的 java-sdk 可能是有问题的总是签名失败,当然也许是我们的后端使用方式不对

在这里插入图片描述

import { useState } from "react";const usePay = (success: () => void, failed?: () => void) => {const [payLoading, setPayLoading] = useState(false);// jsapi方法const onBridgeReady = (appId: any, timeStamp: any, nonceStr: any, pkg: any, paySign: any, signType: any) => {try {console.log("Pay log", {appId, timeStamp, nonceStr, pkg, signType, paySign });(window as any).WeixinJSBridge.invoke("getBrandWCPayRequest",{appId: appId, // 需要在微信绑定商户号,成功之后会生成有appidtimeStamp: timeStamp, // 时间戳,自1970年以来的秒数,前端需要从后台获取该数据nonceStr: nonceStr, // 随机串,前端需要从后台获取该数据package: pkg, // 前端需要从后台获取该数据signType: signType, // 微信签名方式,默认为"MD5",也可以从后台获取paySign: paySign, // 微信签名,前端需要从后台获取该数据},function (res) {console.log(res.err_msg);if (res.err_msg == "get_brand_wcpay_request:ok") {console.log("购买成功");success();} // 使用以上方式判断前端返回, 微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。else {console.log("购买失败");failed?.();}setPayLoading(false);});} catch (error) {console.log("usePay-onBridgeReady error:", error);setPayLoading(false);}};const payAction = async (payParams: {appId: string;timeStamp: string;nonceStr: string;pkg: string;paySign: string;signType: string;}) => {try {setPayLoading(true);const { appId, timeStamp, nonceStr, pkg, paySign, signType } = payParams;const pay = () => {onBridgeReady(appId, timeStamp, nonceStr, pkg, paySign, signType);}if (typeof (window as any).WeixinJSBridge == "undefined") {if (document.addEventListener) {(document.addEventListener as any)("WeixinJSBridgeReady", pay, false);} else if ((document as any).attachEvent) {(document as any).attachEvent("WeixinJSBridgeReady", pay);(document as any).attachEvent("onWeixinJSBridgeReady", pay);}} else {// 传入下面参数,这些参数需要从后台获取 (下单接口获取, 问后台要)pay()}} catch (error) {console.log("usePay-payAction error:", error);setPayLoading(false);}};return { payAction, payLoading };
};
export default usePay;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/650641.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

精酿啤酒:酿造工艺的自动化与智能化发展

随着科技的不断进步,自动化与智能化已成为啤酒酿造工艺的重要发展方向。Fendi Club啤酒紧跟时代潮流,积极推动酿造工艺的自动化与智能化发展,旨在提高生产效率、确保产品品质和满足市场需求。 Fendi Club啤酒引入自动化生产设备。他们采用自动…

如何解决IntelliJ IDEA 2024打开项目时频繁闪退问题

🐯 如何解决IntelliJ IDEA 2024打开项目时频繁闪退问题 🐾 文章目录 🐯 如何解决IntelliJ IDEA 2024打开项目时频繁闪退问题 🐾摘要引言正文📘 识别问题📙 内存配置调整步骤1: 定位vmoptions文件步骤2: 修改…

Springboot3集成Web、RedisTemplate、Test和knife4j

本例将展示&#xff0c;如何在Springboot3中完成&#xff1a; Redis功能的Web接口实现构建Redis功能的单元测试knife4j自动化生成文档 Redis功能 Pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

麦肯锡量子年报:技术日趋成熟,企业稳健前行;未来十年,市场价值约2万亿美元

引言&#xff1a;作为闻名遐迩的全球管理咨询公司&#xff0c;麦肯锡帮助私营、公共和社会部门等创造重要的组织变革。 关于量子计算&#xff0c;麦肯锡表示&#xff0c;它们将提供战略建议、确定量子应用的价值洼地&#xff0c;并为用例开发和伙伴关系创建战略路线图。 迄今为…

改善员工绩效管理的 8 种最佳方法

企业如何改进绩效管理体系&#xff0c;才能获得最好的结果&#xff1f;请仔细阅读&#xff0c;找出答案… 人力资源部门对组织的成功起着至关重要的作用&#xff0c;组织的员工也是如此。更好的组织管理会带来更高的利润。人力资源部门的工作很大一部分就是规范绩效管理体系&a…

【智能算法】回溯搜索算法(BSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2013年&#xff0c;P Civicioglu等人受到当前种群与历史种群之间的差分向量的引导启发&#xff0c;提出了回溯搜索算法&#xff08;Backtracking Search Algorithm, BSA&#xff09;。 2.算法原理…

【产品经理修炼之道】- 从需求到功能的转化过程

产品经理的最大作用是将需求转化为产品或者功能&#xff0c;从需求到功能&#xff0c;会经历哪些过程&#xff1f;本文总结了从需求到功能的转化过程&#xff0c;希望对你进一步了解有所帮助。 “大部分的产品经理特别是数字化产品经理其核心价值就是如何去解决如何把需求转化为…

UE Actor生命周期

目录 生命周期流程图Actor生成方式Actor生命周期终点垃圾回收高级垃圾回收小结 生命周期流程图 Actor生命周期如上图所示&#xff0c;主要包括以下&#xff1a; 在关卡中实例化或生成Actor&#xff0c;包括如何初始化Actor。 将Actor标识为PendingKill&#xff0c;然后通过垃圾…

淘宝图片搜索API接口:技术原理、使用方法与最佳实践指南

淘宝图片搜索API接口技术详解 在数字化时代&#xff0c;图片搜索已经成为一种高效、直观的信息检索方式。淘宝作为国内最大的电商平台&#xff0c;其图片搜索API接口对于提高购物体验和商家运营效率具有重要意义。本文将详细解析淘宝图片搜索API接口的技术原理、使用方法和注意…

ROS python实现乌龟跟随

产生两只乌龟&#xff0c;中间的乌龟(A) 和 左下乌龟(B), B 会自动运行至A的位置&#xff0c;并且键盘控制时&#xff0c;只是控制 A 的运动&#xff0c;但是 B 可以跟随 A 运行 乌龟跟随实现的核心&#xff0c;是乌龟A和B都要发布相对世界坐标系的坐标信息&#xff0c;然后&am…

低代码信创开发核心技术(四)动态元数据系统设计

一、概述 在当今快速发展的信息技术领域&#xff0c;动态元数据系统扮演着至关重要的角色。它不仅能够提供数据的描述信息&#xff0c;还能动态地适应业务需求的变化&#xff0c;从而提高系统的灵活性和可扩展性。构建一个动态元数据系统意味着我们可以在不重启系统的情况下&a…

janus模块介绍-SIP Gateway

模块启动 默认的SIP GateWay也是https协议&#xff0c;端口为8088或者8089 如果需要在自己搭建的测试服务上测试SIP GateWay模块&#xff0c;则也需要修改为wss 具体改动如下: 找到/opt/janus/share/janus/demos/siptest.js var server "wss://" window.location…