wechat-pay-api
Version:
383 lines (299 loc) • 16.4 kB
Markdown
# wechat-pay-api 微信支付接口
### Usage
```bash
npm i wechat-pay-api -S
```
```javascript
const Pay = require('wechat-pay-api')
const api = new Pay({
wxappid: '',
mch_id: '',
key: '',
pfx: '',
client_ip: ''
})
api.payToUser({
openid: 'user openid',
amount: 100,
desc: '测试付款'
}, (err, result) => {
if (err) {
return console.error(err)
}
console.log(result)
})
```
### new WechatPayApi(options)
实例化WechatPayApi,返回实例对象。
#### options 对象属性
| 名称 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| wxappid | string | 是 | 微信公众号appId |
| mch_id | string | 是 | 微信商户id |
| key | string | 是 | 微信商户密钥 |
| pfx | buffer | 是 | 微信商户证书,pfx格式 |
| client_ip | string | 是 | 调整支付api的机器公网ip |
| passphrase | string | 否 | 微信商户证书加密密钥,默认为mch_id |
| private_key | buffer | 否 | 微信商户私钥 |
| cert | buffer | 否 | 微信商户证书,pem格式 |
### 返回值
WechatPayApi 实例对象。
### WechatPayApi 实例对象方法
- [payToUser(options, callback) 企业付款](#paytouser)
- [getTransferInfo(options, callback) 企业付款查询](#gettransferinfo)
- [sendRedpack(options, callback) 发送普通红包](#sendredpack)
- [sendGroupRedpack(options, callback) 发送裂变红包](#sendgroupredpack)
- [getRedpackInfo(options, callback) 查询红包](#getredpackinfo)
- [sendCoupon(options, callback) 发放代金劵](#sendcoupon)
- [queryCouponStock(options, callback) 查询代金劵批次](#querycouponstock)
- [queryCouponsInfo(options, callback) 查询代金劵信息](#querycouponsinfo)
#### payToUser
企业付款。
`payToUser(options, callback)`
#### options 对象属性
| 名称 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| openid | string | 是 | 用户openid |
| amount | number | 是 | 企业付款金额,单位为分 |
| desc | string | 是 | 企业付款操作说明信息。必填。 |
| check_name | string | 否 | 校验用户姓名选项<br/>NO_CHECK:不校验真实姓名 <br/>FORCE_CHECK:强校验真实姓名 |
| device_info | string | 否 | 微信支付分配的终端设备号 |
| re_user_name | string | 否 | 收款用户真实姓名。 <br/>如果check_name设置为FORCE_CHECK,<br/>则必填用户真实姓名 |
#### 回调参数
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| err | error | 错误对象 |
| result | object | 结果对象 |
#### result 结果对象属性
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| return_code | string | SUCCESS/FAIL<br/>此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断 |
| return_msg | string | 返回信息,如非空,为错误原因<br/>签名失败<br/>参数格式校验错误 |
| 以下字段在return_code为SUCCESS的时候有返回 |
| result_code | string | 业务结果<br/>SUCCESS/FAIL |
| 以下字段在return_code 和result_code都为SUCCESS的时候有返回 |
| partner_trade_no | string | 商户订单号,需保持唯一性<br/>(只能是字母或者数字,不能包含有符号) |
| payment_no | string | 企业付款成功,返回的微信订单号 |
| payment_time | string | 企业付款成功时间 |
#### getTransferInfo
查询企业付款。
`getTransferInfo(options, callback)`
#### options 对象属性
| 名称 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| partner_trade_no | string | 是 | 商户调用企业付款API时使用的商户订单号 |
#### 回调参数
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| err | error | 错误对象 |
| result | object | 结果对象 |
#### result 结果对象属性
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| return_code | string | SUCCESS/FAIL<br/>此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断 |
| return_msg | string | 返回信息,如非空,为错误原因<br/>签名失败<br/>参数格式校验错误 |
| 以下字段在return_code为SUCCESS的时候有返回 |
| result_code | string | 业务结果<br/>SUCCESS/FAIL |
| 以下字段在return_code 和result_code都为SUCCESS的时候有返回 |
| detail_id | string | 调用企业付款API时,微信系统内部产生的单号 |
| status | string | 转账状态<br/>SUCCESS:转账成功<br/>FAILED:转账失败<br/>PROCESSING:处理中 |
| reason | string | 如果失败则有失败原因 |
| openid | string | 转账的openid |
| transfer_time | string | 发起转账的时间 |
#### sendRedpack
发送普通红包
`sendRedpack(options, callback)`
#### options 对象属性
| 名称 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| send_name | string | 是 | 红包发送者名称 |
| re_openid | string | 是 | 接受红包的用户<br/>用户在wxappid下的openid |
| total_amount | number | 是 | 付款金额,单位分 |
| total_num | number | 是 | 红包发放总人数<br/>total_num=1 |
| wishing | string | 是 | 红包祝福语 |
| act_name | string | 是 | 活动名称 |
| remark | string | 是 | 备注信息 |
| scene_id | string | 否 | 发放红包使用场景,红包金额大于200时必传<br/>PRODUCT_1:商品促销<br/>PRODUCT_2:抽奖<br/>PRODUCT_3:虚拟物品兑奖 <br/>PRODUCT_4:企业内部福利<br/>PRODUCT_5:渠道分润<br/>PRODUCT_6:保险回馈<br/>PRODUCT_7:彩票派奖<br/>PRODUCT_8:税务刮奖 |
| risk_info | string | 否 | posttime:用户操作的时间戳<br/>mobile:业务系统账号的手机号,国家代码-手机号。不需要+号<br/>deviceid :mac 地址或者设备唯一标识 <br/>clientversion :用户操作的客户端版本。把值为非空的信息用key=value进行拼接,再进行urlencode<br/>urlencode(posttime=xx& mobile =xx&deviceid=xx) |
| consume_mch_id | string | 否 | 资金授权商户号<br/>服务商替特约商户发放时使用 |
#### 回调参数
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| err | error | 错误对象 |
| result | object | 结果对象 |
#### result 结果对象属性
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| return_code | string | SUCCESS/FAIL<br/>此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断 |
| return_msg | string | 返回信息,如非空,为错误原因<br/>签名失败<br/>参数格式校验错误 |
| 以下字段在return_code为SUCCESS的时候有返回 |
| result_code | string | 业务结果<br/>SUCCESS/FAIL |
| 以下字段在return_code 和result_code都为SUCCESS的时候有返回 |
| re_openid | string | 接受收红包的用户<br/>用户在wxappid下的openid |
| total_amount | string | 付款金额,单位分 |
| send_listid | string | 红包订单的微信单号 |
#### sendGroupRedpack
发送裂变红包
`sendGroupRedpack(options, callback)`
#### options 对象属性
| 名称 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| send_name | string | 是 | 红包发送者名称 |
| re_openid | string | 是 | 接受红包的用户<br/>用户在wxappid下的openid |
| total_amount | number | 是 | 付款金额,单位分 |
| total_num | number | 是 | 红包发放总人数<br/>total_num=1 |
| amt_type | string | string | 红包金额设置方式<br/>ALL_RAND—全部随机,商户指定总金额和红包发放总人数,由微信支付随机计算出各红包金额 |
| wishing | string | 是 | 红包祝福语 |
| act_name | string | 是 | 活动名称 |
| remark | string | 是 | 备注信息 |
| scene_id | string | 否 | 发放红包使用场景,红包金额大于200时必传<br/>PRODUCT_1:商品促销<br/>PRODUCT_2:抽奖<br/>PRODUCT_3:虚拟物品兑奖 <br/>PRODUCT_4:企业内部福利<br/>PRODUCT_5:渠道分润<br/>PRODUCT_6:保险回馈<br/>PRODUCT_7:彩票派奖<br/>PRODUCT_8:税务刮奖 |
| risk_info | string | 否 | posttime:用户操作的时间戳<br/>mobile:业务系统账号的手机号,国家代码-手机号。不需要+号<br/>deviceid :mac 地址或者设备唯一标识 <br/>clientversion :用户操作的客户端版本。把值为非空的信息用key=value进行拼接,再进行urlencode<br/>urlencode(posttime=xx& mobile =xx&deviceid=xx) |
| consume_mch_id | string | 否 | 资金授权商户号<br/>服务商替特约商户发放时使用 |
#### 回调参数
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| err | error | 错误对象 |
| result | object | 结果对象 |
#### result 结果对象属性
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| return_code | string | SUCCESS/FAIL<br/>此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断 |
| return_msg | string | 返回信息,如非空,为错误原因<br/>签名失败<br/>参数格式校验错误 |
| 以下字段在return_code为SUCCESS的时候有返回 |
| result_code | string | 业务结果<br/>SUCCESS/FAIL |
| 以下字段在return_code 和result_code都为SUCCESS的时候有返回 |
| total_amount | string | 付款总金额,单位分 |
| send_listid | string | 微信红包订单号 |
| re_openid | string | 接受收红包的用户<br/>用户在wxappid下的openid |
#### getRedpackInfo
查询红包记录
`getRedpackInfo(options, callback)`
#### options 对象属性
| 名称 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| mch_billno | string | 是 | 商户发放红包的商户订单号 |
#### 回调参数
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| err | error | 错误对象 |
| result | object | 结果对象 |
#### result 结果对象属性
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| return_code | string | SUCCESS/FAIL<br/>此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断 |
| return_msg | string | 返回信息,如非空,为错误原因<br/>签名失败<br/>参数格式校验错误 |
| 以下字段在return_code为SUCCESS的时候有返回 |
| result_code | string | 业务结果<br/>SUCCESS/FAIL |
| 以下字段在return_code 和result_code都为SUCCESS的时候有返回 |
| detail_id | string | 使用API发放现金红包时返回的红包单号 |
| status | string | SENDING:发放中 <br/>SENT:已发放待领取 <br/>FAILED:发放失败 <br/>RECEIVED:已领取 <br/>RFUND_ING:退款中 <br/>REFUND:已退款 |
| send_type | string | API:通过API接口发放 <br/>UPLOAD:通过上传文件方式发放 <br/>ACTIVITY:通过活动方式发放 |
| hb_type | string | GROUP:裂变红包 <br/>NORMAL:普通红包 |
| total_num | string | 红包个数 |
| total_amount | string | 红包总金额(单位分) |
| reason | string | 发送失败原因 |
| send_time | string | 红包发送时间 |
| refund_time | string | 红包的退款时间(如果其未领取的退款) |
| refund_amount | string | 红包退款金额 |
| wishing | string | 祝福语 |
| hblist | object | 裂变红包的领取列表 |
| openid | string | 领取红包的openid |
| amount | string | 领取金额 |
| rcv_time | string | 领取红包的时间 |
#### sendCoupon
发放代金劵
`sendCoupon(options, callback)`
#### options 对象属性
| 名称 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| coupon_stock_id | string | 是 | 代金券批次id |
| openid | string | 是 | Openid信息,用户在appid下的openid。 |
| op_user_id | string | 否 | 操作员帐号, 默认为商户号 <br/>可在商户平台配置操作员对应的api权限 |
| device_info | string | 否 | 微信支付分配的终端设备号 |
#### 回调参数
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| err | error | 错误对象 |
| result | object | 结果对象 |
#### result 结果对象属性
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| return_code | string | SUCCESS/FAIL<br/>此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断 |
| return_msg | string | 返回信息,如非空,为错误原因<br/>签名失败<br/>参数格式校验错误 |
| result_code | string | 业务结果<br/>SUCCESS/FAIL |
| coupon_stock_id | string | 代金券批次id |
| resp_count | string | 返回记录数 |
| success_count | string | 成功记录数 |
| failed_count | string | 失败记录数 |
| openid | string | 用户在商户appid下的唯一标识 |
| ret_code | string | 返回码,SUCCESS/FAILED |
| coupon_id | string | 对一个用户成功发放代金券则返回代金券id,即ret_code为SUCCESS的时候;<br/>如果ret_code为FAILED则填写空串"" |
| ret_msg | string | 返回信息,当返回码是FAILED的时候填写,否则填空串“” |
#### queryCouponStock
查询代金劵批次
`queryCouponStock(options, callback)`
#### options 对象属性
| 名称 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| coupon_stock_id | string | 是 | 代金券批次id |
| op_user_id | string | 否 | 操作员帐号, 默认为商户号 <br/>可在商户平台配置操作员对应的api权限 |
| device_info | string | 否 | 微信支付分配的终端设备号 |
#### 回调参数
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| err | error | 错误对象 |
| result | object | 结果对象 |
#### result 结果对象属性
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| return_code | string | SUCCESS/FAIL<br/>此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断 |
| return_msg | string | 返回信息,如非空,为错误原因<br/>签名失败<br/>参数格式校验错误 |
| result_code | string | 业务结果<br/>SUCCESS/FAIL |
| coupon_stock_id | string | 代金券批次id |
| coupon_name | string | 代金券名称 |
| coupon_value | string | 代金券面值,单位是分 |
| coupon_mininumn | string | 代金券使用最低限额,单位是分 |
| coupon_stock_status | string | 批次状态: 1-未激活;2-审批中;4-已激活;8-已作废;16-中止发放; |
| coupon_total | string | 代金券数量 |
| max_quota | string | 代金券每个人最多能领取的数量, 如果为0,则表示没有限制 |
| is_send_num | string | 代金券已经发送的数量 |
| begin_time | string | 生效开始时间,格式为时间戳 |
| end_time | string | 生效结束时间,格式为时间戳 |
| create_time | string | 创建时间,格式为时间戳 |
| coupon_budget | string | 代金券预算额度 |
#### queryCouponsInfo
查询代金劵信息
`queryCouponsInfo(options, callback)`
#### options 对象属性
| 名称 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| coupon_id | string | 是 | 代金券id |
| openid | string | 是 | Openid信息,用户在appid下的openid。 |
| stock_id | string | 是 | 代金劵对应的批次号 |
| op_user_id | string | 否 | 操作员帐号, 默认为商户号 <br/>可在商户平台配置操作员对应的api权限 |
| device_info | string | 否 | 微信支付分配的终端设备号 |
#### 回调参数
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| err | error | 错误对象 |
| result | object | 结果对象 |
#### result 结果对象属性
| 名称 | 类型 | 描述 |
| --- | --- | --- |
| return_code | string | SUCCESS/FAIL<br/>此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断 |
| return_msg | string | 返回信息,如非空,为错误原因<br/>签名失败<br/>参数格式校验错误 |
| result_code | string | 业务结果<br/>SUCCESS/FAIL |
| coupon_stock_id | string | 代金券批次id |
| coupon_id | string | 代金券id |
| coupon_name | string | 代金券名称 |
| coupon_value | string | 代金券面值,单位是分 |
| coupon_mininumn | string | 代金券使用最低限额,单位是分 |
| coupon_state | string | 代金券状态:SENDED-可用,USED-已实扣,EXPIRED-已过期 |
| coupon_desc | string | 代金券描述 |
| coupon_use_value | string | 代金券实际使用金额 |
| coupon_remain_value | string | 代金券剩余金额:部分使用情况下,可能会存在券剩余金额 |
| begin_time | string | 生效开始时间,格式为时间戳 |
| end_time | string | 生效结束时间,格式为时间戳 |
| send_time | string | 发放时间,格式为时间戳 |
| send_source | string | 代金券发放来源:FULL_SEND-满送 NORMAL-普通发放场景 |
| is_partial_use | string | 该代金券是否允许部分使用标识:1-表示支持部分使用 |