一个用于微信支付和微信授权的npm包(还在逐步完善当中)
npm的安装方式
npm install chuck-wechat
具体参考文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN 首先在微信开放平台配置好授权回调域名,用户扫码成功后就会跳回这个授权域名并在域名后面带上code参数,拿到这个code参数,然后调用codeLogin方法,这个方法有两个参数,第一个参数就是code,第二个参数默认是false,如果想拿到微信用户的个人信息,例如:微信昵称,微信头像等就将这个参数传true
const { default: Wechat } = require('chuck-wechat');
const params = {
appid: 'wx1111111111',
mch_id: '1111111111',
partnerKey: 'xxxxxxxxx',
appSecret: 'xxxxxxxx',
};
const wechat = new Wechat(params);
const code = 'xxxxxxxxxx';
const promise = wechat.codeLogin(code, true);
promise.then((result) => { console.log(result) });
如果调用成功的返回结果是:
{
"openid":"OPENID",
"nickname":"NICKNAME",
"sex":1,
"province":"PROVINCE",
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"privilege":[
"PRIVILEGE1",
"PRIVILEGE2"
],
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
具体传入的参数参考:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1 其中nonce_str和trade_type这两个参数,我已经在包里加了,所以可以不传这两个参数。
const { default: Wechat } = require('chuck-wechat');
const params = {
appid: 'wx1111111111',
mch_id: '1111111111',
partnerKey: 'xxxxxxxxx',
appSecret: 'xxxxxxxx',
};
const wechat = new Wechat(params);
const data = {
appid: 'wx1111111111',
mch_id: '1111111111',
body: '扫码支付',
out_trade_no: 'DD2018051401',
total_fee: 1,
notify_url,
attach,
spbill_create_ip: '127.0.0.1',
};
const promise = wechat.codePay(data);
promise.then((result) => { console.log(result) });
微信退款需要多传一个退款证书的路径,不同支付的参数不一定一致,请根据不同支付传不同的参数,以下例子举的是公众号退款请求参数参考链接
const { default: Wechat } = require('chuck-wechat');
const params = {
appid: 'wx1111111111',
mch_id: '1111111111',
partnerKey: 'xxxxxxxxx',
appSecret: 'xxxxxxxx',
};
const wechat = new Wechat(params);
const data = {
out_trade_no: 'DD2018051401',
out_refund_no: 'TK0000001',
total_fee: 1,
refund_fee: 1,
}
const certUrl = '/etc/cert/refund_cert.p12'
const promise = wechat.refund(data, certUrl);
promise.then((result) => { console.log(result) });
const { default: Wechat } = require('chuck-wechat');
const params = {
appid: 'wx1111111111',
appSecret: 'xxxxxxxx',
};
const wechat = new Wechat(params);
const code = 'xxxxxxxxxx';
const promise = wechat.miniLogin(code);
promise.then((result) => { console.log(result) });
const { default: Wechat } = require('chuck-wechat');
const params = {
appid: 'wx1111111111',
mch_id: '1111111111',
partnerKey: 'xxxxxxxxx',
};
const wechat = new Wechat(params);
const data = {
appid: 'wx1111111111',
mch_id: '1111111111',
body: '扫码支付',
out_trade_no: 'DD2018051401',
total_fee: 1,
notify_url,
attach,
spbill_create_ip: '127.0.0.1',
openid: 'xxxxxxx',
};
const promise = wechat.miniPay(data);
promise.then((result) => { console.log(result) });
> 如果调用成功的返回结果是:
{
return_code: [ 'SUCCESS' ],
return_msg: [ 'OK' ],
appid: [ 'wx1111111111' ],
mch_id: [ '1111111111' ],
nonce_str: [ 'bfVr6Do1oU74o1iZ' ],
sign: [ 'B112A7790273FC9E55D6CF6803EB80D0' ],
result_code: [ 'SUCCESS' ],
prepay_id: [ 'wx111111111111111111111111111111' ],
}
调用付款给用户的参数和证书的获取方式见下面链接:
const { default: Wechat } = require('chuck-wechat');
const params = {
appid: 'wx1111111111',
mch_id: '1111111111',
partnerKey: 'xxxxxxxxx',
appSecret: 'xxxxxxxx',
};
const wechat = new Wechat(params);
const data = {
partner_trade_no: 'DD2018051401',
openid: 'xxxxx',
check_name: "FORCE_CHECK",
amount: 1,
desc: '付款备注'
}
const certUrl = '/etc/cert/cert.p12'
const promise = wechat.transfer(data, certUrl);
promise.then((result) => { console.log(result) });