third-payment
Version:
第三方支付统一支持模块,支持微信支付、支付宝支付。
212 lines (180 loc) • 5.74 kB
Markdown
> 此模块支持 微信&支付宝 第三方支付相关功能
## 安装
```
$ npm install third-payment
```
## 说明
### 类初始化 : new Payment(params)
* params 配置文件路径 or 配置对象
### 获取预支付数据 : .getPrePay(data)
* data 交易详情
```js
{
type : "weixin_mp",
vendor : "official_account_1",
description : "test",
detail : "12222",
trade_id : "adfasdfasdf1242e",
amount : 100,
notify_url : "https://callback.server.com/handle", // 第三方支付回调通知地址
ip : "127.0.0.1",
openid : "oCLqdwT0fRFKcqKfmIezYOqpEHbk" // openid (微信公众号支付获取)
}
```
* 参数说明
| 参数 | 类型 | 是否必填 | 备注 |
| --- |:--:| -----:| -----:|
|type | string | true| weixin_app(微信APP) \| wexin_mp(微信公众号) \| weixin_native(微信扫码) \| weixin_web(h5支付) \| alipay_app(支付宝APP) \| alipay_web(支付宝网页) \| alipay_mp(支付宝移动端) \| alipay_native(支付宝扫码) |
|vendor|string|false|公众号标识(对应微信配置内)|
|trade_id|string|true|商户订单号|
|description|string|true|商品描述|
|amount|string|true|金额(元)|
|notify_url|string|true|异步通知路径|
|detail|string|false|商品详情|
|ip|string|false|ip地址|
|openid|string|false|公众号获取的openid|
|scene_info|string \| object |false|场景信息({"h5_info": //h5支付固定传"h5_info" {"type": "", //场景类型 "wap_url": "",//WAP网站URL地址 "wap_name": "" //WAP 网站名} })|
### 校验第三方回调数据 : .verifyResponse(datas,response,format)
* data 交易详情
```js
{
type : "weixin_mp",
vendor : "official_account_1",
}
```
* response 第三方回调数据 request body
* format 可空 (微信request body 需要传 xml)
### 查询交易状态 : .queryTrade(datas,trade)
* datas 交易详情
```js
{
type : "weixin_mp",
vendor : "official_account_1",
}
```
* trade 交易号json对象(object)
```js
{
trade_no:"平台交易号", // 二选一
out_trade_no:"商户交易号" // 二选一
}
```
### 退款操作 : .refund(trade)
* trade 交易号json对象(object)
```js
{
trade_no:"平台交易号", // 二选一
out_trade_no:"商户交易号", // 二选一
actual_fee : "实际退款金额",
type:"alipay_app",
vendor:"app",
out_request_no : "部分退款唯一ID" // 可选
}
```
### 支付宝单笔转账 : .transfer(datas)
* datas 交易详情
```js
{
out_biz_no : "12233333", // 商户交易ID
payee_type : "ALIPAY_USERID", // 收款方账户类型。可取值: 1、ALIPAY_USERID:支付宝账号对应的支付宝唯一用户号。以2088开头的16位纯数字组成。 2、ALIPAY_LOGONID:支付宝登录号,支持邮箱和手机号格式。
payee_account : "3333333" , // 收款方账户。与payee_type配合使用。付款方和收款方不能是同一个账户
amount : 0.1, //转账金额,单位:元。 只支持2位小数,小数点前最大支持13位,金额必须大于等于0.1元。 最大转账金额以实际签约的限额为准
payer_show_name : "张三", // 付款方姓名
remark : "备注" // 备注
}
```
## 使用方式
```js
var Lib = require('./index');
var obj = new Lib("./params.json");
// 获取 prepaydata 给 客户端
obj.getPrePay({
type : "weixin_mp",
vendor : "official_account_1",
description : "test",
detail : "12222",
trade_id : "adfasdfasdf1242e",
amount : 100,
notify_url : "https://callback.server.com/handle", // 第三方支付回调通知地址
ip : "127.0.0.1",
openid : "oCLqdwT0fRFKcqKfmIezYOqpEHbk" // openid (微信公众号支付获取)
}).then(
res => console.log(res),
err => console.log(err)
);
/**
*第三方服务器回调验证
*
* @param datas {type:"alipay",vendor:"app"}
* @param response 请求body
* @param format 默认 json
*/
obj.verifyResponse(datas,response,format).then(
rs => {console.log(rs)},
er => {console.log(er)}
)
/**
* 查询
*
* @param datas {type:"alipay",vendor:"app"}
* @param trade object 交易ID 示例:{trade_no:"23232",out_trade_no:"1222"} trade_no 与 out_trade_no 二选一
* @param format 默认 json
*/
obj.queryTrade(data,trade).then(
res=>console.log(res)
);
/**
* 退款
*
* @param trade object 交易ID 示例:{type:"weixin",vendor:"app",trade_id:"23232",actual_fee:10,"out_request_no":"213121"}
* @param format 默认 json
*/
obj.refund(trade).then(
res=>console.log(res)
);
/**
* 转账(仅限支付宝)
*
* @param datas object
* @param format 默认 json
*/
obj.transfer(datas).then(
res=>console.log(res)
);
```
## 配置文件
```json
{
"weixin": {
"app": { // APP
"appid": "",
"mch_id": "",
"key": "",
"it_b_pay": "", // 支付过期时间
"client_key" : "" , // 微信双向加密密码
"client_cert" : "" // 微信双向加密密码
},
"official_account_1": { // 公众号
"appid": "",
"appsecret": "",
"mch_id": "",
"key": "",
"it_b_pay": "" // 支付过期时间
}
},
"alipay": {
"app": {
"partner": "",
"app_id": "",
"seller_id": "",
"it_b_pay": "", // 支付过期时间
"public_key": "", // 公钥
"private_key": "", // 私钥
"openali_public_key": "" // openapi 公钥
}
}
}
```
## 备注
* 功能持续完善中.....
* 如有需要功能请发送邮件to ```898617222@163.com``` 或者 请在 github 上 open issue