微信支付 node-tenpay


微信支付 node-tenpay

https://github.com/befinal/node-tenpay

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
const tenpay = require('tenpay');

const conf = {
appid: 'xxxxxxxxxxxxxx',//'公众号ID(必填)',
mchid: '1111111111111',//'微信商户号(必填)',
partnerKey: '2222222222222222222222',//'微信支付安全密钥(必填, 在微信商户管理界面获取)',
// pfx: require('fs').readFileSync('./cnf/apiclient_cert.p12'), // 证书文件(在微信商户管理界面获取)
notify_url: 'https://xxxxxxxxxxxx.cn/callback',//'支付结果通知回调地址',
refund_url: '',//'退款结果通知回调地址',
spbill_create_ip: '120.2.2.2',//'IP地址',
openLog: true,
logger: console,

};

// 方式一
//const api = new tenpay(conf);
// 方式二
//const api = tenpay.init(conf);

// 调试模式(传入第二个参数为true, 可在控制台输出数据)
// const api = new tenpay(conf, true);

// 沙盒模式(用于微信支付验收)
const api = await tenpay.sandbox(conf, true);

const out_trade_no = 'd4851fc7-2281-4b7a-bc6a-aeffdef04f55';
const openid = 'xxxxxxxxxxxxxxxxxxxxxxxx';
const partner_trade_no = "AQCA6Q50brtuhXBkDRfA8-RgG88j";
const payment_no = "4200000793202101082139317712";

// 获取微信JSSDK支付参数(自动下单, 兼容小程序)
let result = await api.getPayParams({
out_trade_no: out_trade_no,//'商户内部订单号',
body: '测试商品简单描述',
total_fee: 101,//'订单金额(分)',
openid: openid,//'付款用户的openid'
});

// 微信统一下单
result = await api.unifiedOrder({
out_trade_no: out_trade_no,//'商户内部订单号',
body: '测试商品简单描述',
total_fee: 1,//'订单金额(分)',
openid: openid,//'付款用户的openid'
});

// 获取微信JSSDK支付参数(通过预支付会话标识, 兼容小程序)
// 该方法需先调用api.unifiedOrder统一下单, 获取prepay_id;
result = await api.getPayParamsByPrepay({
prepay_id: result.prepay_id,// '预支付会话标识'
});

// 查询订单
result = await api.orderQuery({
// transaction_id: payment_no //二选一
out_trade_no: payment_no,
// out_trade_no: out_trade_no
});

result = await api.transfers({
partner_trade_no: '商户内部付款订单号',
openid: '用户openid',
re_user_name: '用户真实姓名',
amount: '付款金额(分)',
desc: '企业付款描述信息'
});

result = await api.transfersQuery({
partner_trade_no: partner_trade_no, // '商户内部付款订单号'
});