(支付文档v2) 普通商户接入文档
本模块集成了大部分微信支付、提现等模块的接口,采用async、await的方式调用,使用者不用在考虑参数加密发送,秘钥发送方式、xml怎么解析、json怎么转成xml等一系列麻烦事。
npm i node-wxpay3 --save
本版本是2.*.*
相对于旧版本1.*.*
做了大的变更,本插件改用typescript重写,合并了旧的接口方法。支持require
和 import
两种方法导入。
const WxPay = require('node-wxpay3');
或者 import WxPay from 'node-wxpay3'
// https://api.mch.weixin.qq.com/pay/unifiedorder
const wxpay = new Wxpay({
appid: '',
mch_id: '',
key: '',
pfx: fs.readFileSync('./apiclient_cert.p12'),
});
const options = {
body: '测试',
out_trade_no: '23214234,
total_fee: 1,
spbill_create_ip: 'ip',
notify_url: 'https://域名/gateway/boboteacher/student/order/_payReturnss', //自己的接口
trade_type: 'MWEB',
scene_info: JSON.stringify({
h5_info: {
type: 'Wap',
wap_url: 'https://域名',
wap_name: 'bobo',
},
}),
redirect_url: 'https://域名/webpage/api/index.html#/', // 支付成功 返回页面 h5支付需要
};
const result = await wxpay.unifiedorder(options);
其他接口如下: 如何使用对照微信支付文档和旧版
接口名称 | 介绍 |
---|---|
unifiedorder | 统一下单 |
callback_check | 支付回调验证 |
orderquery | 订单查询 |
closeorder | 关闭订单 |
refund | 申请退款 |
refundquery | 查询退款 |
downloadbill | 下载交易账单 |
downloadfundflow | 下载资金账单 |
report | 交易保障 |
batchquerycomment | 拉取订单评价数据 |
micropay | 付款码支付 |
reverse | 撤销订单(只支持付款码支付的订单才可以撤销,统一下单生成的订单不能撤销) |
authcodetoopenid | 付款码查询openid |
publicEncrypt | 公钥加密 |
sendredpack | 发放红包 |
sendgroupredpack | 发放裂变红包 |
gethbinfo | 查询红包记录 |
sendminiprogramhb | 小程序红包 |
transfers | 企业付款到零钱 |
gettransferinfo | 查询企业付款到零钱 |
pay_bank | 企业付款到银行卡API |
query_bank | 查询企业付款到银行卡 |
getpublickey | 获取RSA加密公钥API |
send_coupon | 发放代金券 |
query_coupon_stock | 查询代金券批次 |
querycouponsinfo | 查询代金券信息 |
额外增加的接口:
- md5 参数object
wxpay.md5({
body: '测试',
out_trade_no: '23214234,
})
- hmac 参数object 使用同上
- xmltojson 参数string xml 转json 暴露给外部调用 使用同上
- callback_check 支付回调验证 参数object 返回boolean koa
// 微信返回的数据是text/xml的数据流格式
// 接收数据流并且处理
ctx.req.setEncoding('utf8');
ctx.req.on('data', function(chunk) {
data += chunk;
});
// getxml 就是xml形式的数据
const getxml = await new Promise(function(resolve) {
ctx.req.on('end', function() {
resolve(data);
});
});
// 调用wxpay.xmltojson(getxml) 获得的参数就是data
let data = wxpay.xmltojson(getxml)
let result = wxpay.callback_check(data)
====》 result = true 则校验成功
ctx.type = 'application/xml';
ctx.body =
`<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
</xml>`;
return; d
- publicEncrypt 公钥加密
wxpay.publicEncrypt(publicKey, data)
如果使用的是1.*.*
请看文档