nodejs开发微信支付之接收退款申请通知

2024-04-11 10:48

本文主要是介绍nodejs开发微信支付之接收退款申请通知,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

nodejs开发微信支付之退款结果通知url

  • 前言
  • 步骤
    • 1.先对加密串A进行base64解密
    • 2.对商户key做md5,得到32位小写key
    • 3.用key*对加密串B做AES-256-ECB解密

前言

退款成功后返回的xml格式示例
在这里插入图片描述

步骤

加密字符串是req_info
解密之前,我们需要把xml格式转换为json格式:

const notificationXML = ctx.request.body.xmlconst notificationJSON = {}for (let [key, value] of Object.entries(notificationXML)) {notificationJSON[key] = value[0]}let notionResult = notificationJSON['req_info']

1.先对加密串A进行base64解密

  let resultInfo = Buffer.from(notionResult, 'base64')

2.对商户key做md5,得到32位小写key

 const key = 'KmfuRzZM9lfxHJL'const md5Key = await crypto.createHash('md5').update(key).digest('hex')

3.用key*对加密串B做AES-256-ECB解密

我们将解密过程封装成一个方法,这样调用起来比较方便

/*** aes解密微信回调通知* @param data 待解密内容* @param key 必须为32位私钥* @returns {string}*/
exports.decryption = function (data, key, iv) {if (!data) {return ''}iv = iv || ''var clearEncoding = 'utf8'var cipherEncoding = 'base64'var cipherChunks = []var decipher = crypto.createDecipheriv('aes-256-ecb', key, iv)decipher.setAutoPadding(true)cipherChunks.push(decipher.update(data, cipherEncoding, clearEncoding))cipherChunks.push(decipher.final(clearEncoding))return cipherChunks.join('')
}

解密方法封装好了,那就开始调用

const fxp = require('fast-xml-parser')let iv = Buffer.alloc(0) // 设置偏移量let decxml = exports.decryption(resultInfo, md5Key, iv) // 解码console.log(decxml)let reg = new RegExp('root>', 'g')decxml = decxml.replace(reg, 'xml>') // 转化为xml格式console.log(decxml)const xml2json = fxp.parse(decxml) // xml转对象console.log(xml2json)

剩下的就看自己的业务需求了,值都取出来了想干嘛干嘛,服务号的通知什么的也很容易,退款通知这种,下一个博客见。
来自小仙女的代码之路.
附带大神的链接 https://www.oecom.cn/nodejs-wechat-pay-4/

这篇关于nodejs开发微信支付之接收退款申请通知的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/893868

相关文章

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac