微信支付V3-SDK(已发布npm)

这篇具有很好参考价值的文章主要介绍了微信支付V3-SDK(已发布npm)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

wx_pay_v3说明文档

前言

暂时对接了部分使用频率比较高的接口,如果在使用中发现问题,可📮wx.open@qq.com邮箱联系我


安装

npm install @chenbz/wx_pay_v3

实例化

const { WxPayV3 } = require('@chenbz/wx_pay_v3');

const payConfig = {
    appId: '', // 应用ID
    mchId: '', // 商户ID
    apiKeyV3: '', // API_v3密钥
    serialNo: '', // API证书序列号
    privateKey: '', // API证书私钥
    publicKey: '', // API证书公钥
    payNotifyUrl: '', // 支付回调地址
    refundNotifyUrl: '', // 退款回调地址
  };

const pay = new WxPayV3(payConfig);

必填参数说明

属性 描述 指引
appId 应用ID 🌈 直达链接
mchId 商户号ID 🌈 直达链接
apiKeyV3 API_v3密钥 🌈 直达链接
serialNo API证书序列号 🌈 官方教程
privateKey API证书私钥 🌈 官方教程
publicKey API证书公钥 🌈 官方教程
payNotifyUrl 支付回调地址 开发者自行开发
refundNotifyUrl 退款回调地址 开发者自行开发

函数列表

函数名称 描述
createSignature 生成签名
getAuthorization 请求头token
verifySignature 验证签名(用于验证回调消息签名)
decryptAES 解密AES(用于解密回调消息主体)
createOrderNo 生成订单号(使用uuid确保唯一性)
jsApi jsApi
jsApiPay jsApi支付
wmpPay 微信小程序支付
h5Pay h5支付
nativePay native支付
appPay app支付
getOrderByTransactionId 根据微信支付订单号查询
getOrderByOutTradeNo 根据商户订单号查询
closeOrderByOutTradeNo 关闭订单
refundDomesticByTransactionId 根据"微信支付订单号"退款
refundDomesticByOutTradeNo 根据"商户订单号"退款
getRefundDomesticByOutRefundNo 查询单笔退款
getTradeBill 获取申请交易账单
getFundFlowBill 获取申请资金账单
downloadTradeBill 下载申请交易账单
downloadFundFlowBill 下载申请资金账单
transferBatches 发起商户转账
getCertificates 获取平台证书列表

感谢

如果可以,来瓶快乐水


函数说明

verifySignature(验证签名)

使用场景

用于验证支付回调退款回调是否来自官方,强烈建议!!回调均验证

参数
参数 描述 说明
signature 签名 http请求头[‘wechatpay-signature’]
timestamp 时间戳 http请求头[‘wechatpay-timestamp’]
nonce 随机字符串 http请求头[‘wechatpay-nonce’]
data 回调数据 应答主体
使用示例
// 不同框架获取请求头的方式不同,示例使用的框架是egg

const signature = ctx.request.header['wechatpay-signature'];
const timestamp = ctx.request.header['wechatpay-timestamp'];
const nonce = ctx.request.header['wechatpay-nonce'];
const data = ctx.request.body;

pay.verifySignature(signature, timestamp, nonce, data);  // true

decryptAES(解密AES)

使用场景

用于解密支付回调退款回调

示例:支付成功结果通知
{
    "id": "EV-2018022511223320873",
    "create_time": "2015-05-20T13:29:35+08:00",
    "resource_type": "encrypt-resource",
    "event_type": "TRANSACTION.SUCCESS",
    "summary": "支付成功",
    "resource": {
        "original_type": "transaction",
        "algorithm": "AEAD_AES_256_GCM",
        "ciphertext": "",
        "associated_data": "",
        "nonce": ""
    }
}
参数
参数 描述 说明
cipherText 密文 resource.ciphertext
add associated_data字符串 resource.associated_data
iv nonce字符串 resource.nonce
使用示例
// 示例使用的框架是egg

const data = ctx.request.body;

const { ciphertext: cipherText, associated_data: add, nonce: iv } = data.resource;

pay.decryptAES(cipherText, add, iv);

createOrderNo(生成订单号[使用uuid确保唯一性])

使用场景

生成订单号

参数

null文章来源地址https://www.toymoban.com/news/detail-500849.html

使用示例
pay.createOrderNo();  // s3r6a23m8d124dcaa12f2c862c82117e

jsApiPay(jsApi支付)

使用场景

JsSDk支付

参数
参数 描述 说明
outTradeNo 商户订单号 可调用"createOrderNo()"方法生成
payerOpenId 用户在直连商户appId下的唯一标识 openid
amountTotal 订单总金额(单位:分)
description 商品描述
options 可覆盖已有参数 🔍可选
使用示例
const outTradeNo = pay.createOrderNo();
const payerOpenId = '';
const amountTotal = 1;
const description = '测试商品';

pay.jsApiPay(outTradeNo, payerOpenId, amountTotal, description)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

wmpPay(微信小程序支付)

使用场景

微信小程序支付

参数
参数 描述 说明
outTradeNo 商户订单号 可调用"createOrderNo()"方法生成
payerOpenId 用户在直连商户appId下的唯一标识 openid
amountTotal 订单总金额(单位:分)
description 商品描述
options 可覆盖已有参数 🔍可选
使用示例
const outTradeNo = pay.createOrderNo();
const payerOpenId = '';
const amountTotal = 1;
const description = '测试商品';

pay.wmpPay(outTradeNo, payerOpenId, amountTotal, description)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

h5Pay(h5支付)

使用场景

h5支付

参数
参数 描述 说明
outTradeNo 商户订单号 可调用"createOrderNo()"方法生成
amountTotal 订单总金额(单位:分)
description 商品描述
payerClientIp 用户的客户端IP,支持IPv4和IPv6两种格式的IP地址
options 可覆盖已有参数 🔍可选
使用示例
const outTradeNo = pay.createOrderNo();
const amountTotal = 1;
const description = '测试商品';
const payerClientIp = '127.0.0.1';

pay.h5Pay(outTradeNo, amountTotal, description, payerClientIp)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

nativePay(native支付)

使用场景

native支付

参数
参数 描述 说明
outTradeNo 商户订单号 可调用"createOrderNo()"方法生成
amountTotal 订单总金额(单位:分)
description 商品描述
options 可覆盖已有参数 🔍可选
使用示例
const outTradeNo = pay.createOrderNo();
const amountTotal = 1;
const description = '测试商品';

pay.nativePay(outTradeNo, amountTotal, description)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

appPay(app支付)

使用场景

appPay

参数
参数 描述 说明
outTradeNo 商户订单号 可调用"createOrderNo()"方法生成
amountTotal 订单总金额(单位:分)
description 商品描述
options 可覆盖已有参数 🔍可选
使用示例
const outTradeNo = pay.createOrderNo();
const amountTotal = 1;
const description = '测试商品';

pay.appPay(outTradeNo, amountTotal, description)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

getOrderByTransactionId(根据微信支付订单号查询)

使用场景

订单查询

参数
参数 描述 说明
transactionId 微信支付订单号 支付成功后由微信支付生成返回
使用示例
const transactionId = '';

pay.getOrderByTransactionId(transactionId)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

getOrderByOutTradeNo(根据商户订单号查询)

使用场景

订单查询

参数
参数 描述 说明
outTradeNo 下单的时候由商户号生成 前面使用pay.createOrderNo()生成的订单号
使用示例
const outTradeNo = '';

pay.getOrderByOutTradeNo(outTradeNo)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

closeOrderByOutTradeNo(关闭订单)

使用场景

关闭订单

参数
参数 描述 说明
outTradeNo 下单的时候由商户号生成 前面使用pay.createOrderNo()生成的订单号
使用示例
const outTradeNo = '';

pay.closeOrderByOutTradeNo(outTradeNo)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

refundDomesticByTransactionId(根据"微信支付订单号"退款)

使用场景

退款

参数
参数 描述 说明
transactionId 微信支付订单号 支付成功后由微信支付生成返回
outRefundNo 商户退款单号 可调用"createOrderNo()"方法生成
amountTotal 原订单金额 原支付交易的订单总金额
amountRefund 退款金额 不能超过原订单支付金额
options 可覆盖已有参数 🔍可选
使用示例
const transactionId = '';
const outRefundNo = pay.createOrderNo();
const amountTotal = 1;
const amountRefund = 1;

pay.refundDomesticByTransactionId(transactionId, outRefundNo, amountTotal, amountRefund)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

refundDomesticByOutTradeNo(根据"商户订单号"退款)

使用场景

退款

参数
参数 描述 说明
outTradeNo 商户订单号 前面使用pay.createOrderNo()生成的订单号
outRefundNo 商户退款单号 可调用"createOrderNo()"方法生成
amountTotal 原订单金额 原支付交易的订单总金额
amountRefund 退款金额 不能超过原订单支付金额
options 可覆盖已有参数 🔍可选
使用示例
const outTradeNo = '';
const outRefundNo = pay.createOrderNo();
const amountTotal = 1;
const amountRefund = 1;

pay.refundDomesticByOutTradeNo(outTradeNo, outRefundNo, amountTotal, amountRefund)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

getRefundDomesticByOutRefundNo(查询单笔退款)

使用场景

查询单笔退款

参数
参数 描述 说明
outRefundNo 商户退款单号
使用示例
const outRefundNo = '';

pay.getRefundDomesticByOutRefundNo(outRefundNo)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

getTradeBill(获取申请交易账单)

使用场景

获取申请交易账单

参数
参数 描述 说明
billDate 账单日期 示例:2022-09-29
billType 账单类型 ALL || SUCCESS || FUND
tarType 压缩类型 GZIP
使用示例
const billDate = '2022-09-29';
// [ALL:返回当日所有订单信息(不含充值退款订单)] [SUCCESS:返回当日成功支付的订单(不含充值退款订单)] [REFUND:返回当日退款订单(不含充值退款订单)]
const billType = 'ALL';
const tarType = 'GZIP';

pay.getTradeBill(billDate, billType, tarType)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

getTradeBill(获取申请资金账单)

使用场景

获取申请交易账单

参数
参数 描述 说明
billDate 账单日期 示例:2022-09-29
accountType 资金账户类型 BASIC || OPERATION || FEES
tarType 压缩类型 GZIP
使用示例
const billDate = '2022-09-29';
// [BASIC:基本账户] [OPERATION:运营账户] [FEES:手续费账户]
const accountType = 'BASIC';
const tarType = 'GZIP';

pay.getFundFlowBill(billDate, accountType, tarType)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

downloadTradeBill(下载申请交易账单)

使用场景

下载申请交易账单

参数
参数 描述 说明
billDate 账单日期 示例:2022-09-29
billType 账单类型 ALL || SUCCESS || FUND
tarType 压缩类型 GZIP
使用示例
const billDate = '2022-09-29';
// [ALL:返回当日所有订单信息(不含充值退款订单)] [SUCCESS:返回当日成功支付的订单(不含充值退款订单)] [REFUND:返回当日退款订单(不含充值退款订单)]
const billType = 'ALL';
const tarType = 'GZIP';

pay.downloadTradeBill(billDate, billType, tarType)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

downloadFundFlowBill(下载申请资金账单)

使用场景

下载申请资金账单

参数
参数 描述 说明
billDate 账单日期 示例:2022-09-29
accountType 资金账户类型 BASIC || OPERATION || FEES
tarType 压缩类型 GZIP
使用示例
const billDate = '2022-09-29';
// [BASIC:基本账户] [OPERATION:运营账户] [FEES:手续费账户]
const accountType = 'BASIC';
const tarType = 'GZIP';

pay.downloadFundFlowBill(billDate, accountType, tarType)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

transferBatches(发起商户转账)

使用场景

发起商户转账

参数
参数 描述 说明
outBatchNo 商户批次单号 可调用"createOrderNo()"方法生成
batchName 批次名称 openid
batchRemark 批次备注
transferDetailList 转账明细列表 数组
options 可覆盖已有参数 🔍可选

transferDetailList属性说明

属性 描述 说明
out_detail_no 商家明细单号 可调用"createOrderNo()"方法生成
transfer_amount 转账金额(单位:分)
transfer_remark 转账备注
openid openid是微信用户在公众号appid下的唯一用户标识 openid
user_name 收款用户姓名 明细转账金额 >= 2,000元,收款用户姓名必填
使用示例
const outBatchNo = pay.createOrderNo();
const batchName = '活动1';
const batchRemark = '测试活动1转账';
const transferDetailList = [
  {
    out_detail_no: pay.createOrderNo(),
    transfer_amount: 1,
    transfer_remark: '中奖用户1',
    openid: ''
  }
]

pay.transferBatches(outBatchNo, batchName, batchRemark, transferDetailList)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

getCertificates(获取平台证书列表)

使用场景

定期检查证书 => 提前更换证书

参数

null

使用示例
pay.getCertificates()
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

到了这里,关于微信支付V3-SDK(已发布npm)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java实现微信支付v3的支付回调

    以前都是自己手搓api的, 现在有轮子了, 尝试记录一下如何使用 我的做法是首先打开v3的代码仓库, 直接进去看看他们的文档, 可以看到这么一坨东西 开发前准备 2. 先引入maven 初始化商户配置 先从请求头中获取构建RequestParam需要的参数 初始化解析器 进行验签, 解密并转换成

    2024年02月12日
    浏览(53)
  • java微信支付v3系列——6.微信支付查询订单API

    java微信支付v3系列——1.微信支付准备工作 java微信支付v3系列——2.微信支付基本配置 java微信支付v3系列——3.订单创建准备操作 java微信支付v3系列——4.创建订单的封装及使用 java微信支付v3系列——5.微信支付成功回调 java微信支付v3系列——6.微信支付查询订单API java微信支

    2023年04月08日
    浏览(41)
  • SpringBoot整合微信小程序支付V3(支付、退款)

    微信支付开发前,需要先获取商家信息,包括商户号、AppId、证书和密钥。 获取商户号 微信商户平台 申请成为商户 = 提交资料 = 签署协议 = 获取商户号 获取AppID 微信公众平台 注册服务号 = 服务号认证 = 获取APPID = 绑定商户号 申请商户证书 登录商户平台 = 选择 账户中心 = 安

    2024年02月08日
    浏览(44)
  • SpringBoot 整合微信小程序微信支付V3 jsapi (支付、退款)

    最近的一个微信小程序项目里有用到微信支付,网上找的资料都是特别乱,看起来特别懵,结合了好多文章的内容,终于做了出来,可能我的这个博文看起来也是特别乱,但是是可以直接C走简单改一改就可以用的。(支付成功回调,和退款回调因为昨天刚在阿里申请的域名还

    2024年04月25日
    浏览(50)
  • 微信小程序支付V3版本接口实现

    特别说明:遇到 java.security.InvalidKeyException: Illegal key size ******* getValidator的错误 参考添加链接描述 JDK7的下载地址 JDK8的下载地址: 下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt 如果安装了JRE,将两个jar文件放到%JRE_HOME%libsecurity目录下覆盖原来的文件 如果安

    2024年02月09日
    浏览(52)
  • 【Java】微信小程序V3支付(后台)

    目录         相关官网文档         1.需要的参数         2.引入库         3.用到的工具类         4.支付下单实现         5.支付回调 接入前准备-小程序支付 | 微信支付商户平台文档中心 微信支付-JSAPI下单 获取平台证书列表-文档中心-微信支付商户平

    2024年02月12日
    浏览(49)
  • 微信支付V2和V3的区别

    微信支付现在分为v2版和v3版 2014年9月10号之前申请的为v2版(旧版本),之后申请的为v3版。 V2版中的参数有 AppID AppSecret 支付专用签名串PaySignKey 商户号PartnerID 初始密钥PartnerKey 并且包含一个证书文件: 安全证书 V3版中的参数有 AppID AppSecret 商户号PartnerID 初始密钥PartnerKey 商户

    2024年02月09日
    浏览(38)
  • springboot实现微信小程序V3微信支付功能

    appId:小程序appid appSecret:小程序的secret mchId:商户号 keyPath:商户私钥路径(apiclient_key.pem) certPath:证书路径(apiclient_cert.pem) platFormPath:平台证书(cert.pem) 注 : 需要通过写程序生成平台证书(见v3Get()方法) apiKey3:apiv3密钥 serialnumber:商户证书序列号 notifyUrl:回调地

    2024年02月12日
    浏览(61)
  • Java实现微信小程序V3支付

    2024年02月12日
    浏览(61)
  • 小程序微信支付V3版本Java集成

    相较于之前的微信支付API,主要区别是: 遵循统一的REST的设计风格 使用JSON作为数据交互的格式,不再使用XML 使用基于非对称密钥的SHA256-RSA的数字签名算法,不再使用MD5或HMAC-SHA256 不再要求携带HTTPS客户端证书(仅需携带证书序列号) 使用AES-256-GCM,对回调中的关键信息进

    2024年02月11日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包