0.0.1 • Published 2 years ago
wechat-backend-pay v0.0.1
wechat-backend-pay
针对普通商户的微信支付接口封装。
通常接口也适用于服务商版和银行服务商版。
Usage
const API = require('./lib')
const api = new API({
appId: '...',
mchId: '...',
mchKey: '...'
})
api[method](...)初始化 API 的 options 参数说明:
appId,必需,公众号标识,即 AppID,可在「微信公众平台 - 设置 - 开发设置」页中获得。(需要已经成为开发者,且帐号没有异常状态)。mchId,必需,商户号。mchKey,必需,商户密钥。signType,签名类型,目前支持 HMAC-SHA256 和 MD5,默认为 MD5。pfx,商户证书。pfxPath,商户证书路径,在 pfx 不存在时进行读取。publicKey,RSA 公钥。notifyUrl,支付结果通知的回调地址。refundUrl,退款结果通知的回调地址。baseURL,请求的基地址,通常这个值为https://api.mch.weixin.qq.com,不需要进行更改。timeout,请求的超时时间,默认为 40 秒。debug,供内部开发调试使用。
初始化参数的属性名采用驼峰形式,微信支付大部分接口的参数是下划线风格,请注意进行区分。
沙箱模式
微信提供了微信支付仿真测试系统,本工具也支持了沙箱模式的调用,调用方式如下:
- 如果已经明确知道沙箱密钥
sandbox_signkey
const api = new API({
appId: '...',
mchId: '...',
mchKey: sandbox_signkey
})
...- 如果没有沙箱密钥,则采用商户密钥进行异步获取之后再进行后续操作。
;(async () => {
const api = await API.sandbox({
appId: '...',
mchId: '...',
mchKey: '...'
})
...
})()沙箱密钥的获取逻辑通过
getSandboxSignkey进行暴露。
API Methods List
- 随机字符串参数
nonce_str会统一进行处理,不需要传入。 appid和mch_id参数会自动进行处理,不需要传入。- 通常情况下,签名类型参数
sign_type不需要传入,接口有特别要求时会显式的指定。 - 使用默认签名类型,即
MD5的方式,在进行签名计算的时候会删除sign_type参数。 - 签名类型目前只支持
MD5和HMAC-SHA256,传入其他值会直接报错。 - 签名
sign会自动进行计算,不需要传入。 - 传递给微信接口的对象使用 JS 对象即可,会自动进行 XML 封装。
- 微信接口请求成功后给回的是 XML 字符串,会自动进行解析,不需要重复解析。
| 方法 | 功能 |
|---|---|
| unifiedOrder | 统一下单 |
| getPayParams | 直接获取 JSSDK 支付参数,兼容小程序 |
| getAppParams | 直接获取 APP 支付参数 |
| getH5Link | 直接获取 H5 支付的跳转链接 |
| orderQuery | 查询订单 |
| closeOrder | 关闭订单 |
| refund | 退款申请 |
| refundQuery | 查询退款 |
| downloadBill | 下载对账单 |
| downloadFundFlow | 下载资金账单 |
| payitilReport | 交易保障 |
| getBillComment | 拉取订单评价数据 |
| micropay | 提交付款码支付 |
| reverse | 撤销订单 |
| getOpenIdByAuthCode | 授权码查询openid |
| getNativeUrl | 获取扫码支付的 URL |
| getShortUrl | 扫码支付的链接转为短链接 |
| sendCoupon | 发放代金券 |
| queryCouponStock | 查询代金券批次 |
| queryCouponsInfo | 查询代金券信息 |
| sendRedpack | 发放普通红包 |
| sendGroupRedpack | 发放裂变红包 |
| queryRedpack | 查询红包记录 |
| transfers | 企业付款 |
| getTransferInfo | 查询企业付款 |
| payBank | 企业付款到银行卡 |
| queryBank | 查询企业付款到银行卡 |
0.0.1
2 years ago