一、引言
随着电子支付的快速发展,微信支付已成为线上线下交易的重要支付手段。为了提供更加安全、高效、便捷的支付体验,微信官方在2020年12月25日正式推出了微信支付v3版本。相较于旧版本v2,v3在接口设计、数据交互格式、加密算法等方面均进行了全面升级。由于官方文档主要支持Java和PHP,本文将介绍如何在Node.js和TypeScript中封装微信支付v3的API,并分享一些实践中的经验和心得。

二、微信支付v3版本概述
前言
微信官方在2020-12-25正式开放了v3版本的接口,相比较旧版本v2有了不少改变,例如:
-
遵循统一的Restful的设计风格
-
使用JSON作为数据交互的格式,不再使用XML
-
使用基于非对称密钥的SHA256-RSA的数字签名算法,不再使用MD5或HMAC-SHA256
-
不再要求HTTPS客户端证书
-
使用AES-256-GCM,对回调中的关键信息进行加密保护
由于官方文档只支持java和php,所以我在这里使用ts简单的封装了一个版本,支持在js或者ts中使用,后续会更加完善这个npm包,谢谢。
使用
yarn add wechatpay-node-v3@2.1.8(也可以用npm,请加上版本号,使用正式版本)
import WxPay from 'wechatpay-node-v3'; // 支持使用requireimport fs from 'fs';import request from 'superagent';const pay = new WxPay({appid: '直连商户申请的公众号或移动应用appid',mchid: '商户号',publicKey: fs.readFileSync('./apiclient_cert.pem'), // 公钥privateKey: fs.readFileSync('./apiclient_key.pem'), // 秘钥});# 这里以h5支付为例try {# 参数介绍请看h5支付文档 https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_1.shtmlconst params = {appid: '直连商户申请的公众号或移动应用appid',mchid: '商户号',description: '测试',<

最低0.47元/天 解锁文章
249

被折叠的 条评论
为什么被折叠?



