@i-orz/wechat-pay
Version:
Wechat pay v3 Node.js SDK.
146 lines (101 loc) • 4.61 kB
Markdown
# node-wechat
[Wechat Pay] v3 Node.js SDK.
## Install
```bash
yarn add @i-orz/wechat-pay
```
## API
For more usage please issue.
### constructor(config = {})
> params
| config | required | description |
| ------------- | :------: | ------------------------------------------------------------------- |
| appId | yes | wechat pay appid |
| mchId | yes | wechat pay mchid |
| mchCert | yes | wehcat pay merchant certificate |
| mchCertKey | yes | wehcat pay merchant certificate private key |
| mchCertSn | yes | wechat pay merchant certificate serial number |
| apiV3Key | yes | wechat pay api v3 secret key |
| notifyUrl | yes | [Wechat Pay Notify] callback url |
| notifySuccess | | [Wechat Pay Notify] need response `{ code: 'SUCCESS' }` event types |
| platformCert | | wehcat pay platform certificate |
| currency | | default is `CNY` |
| appType | | mp = miniprogram |
| http | | HTTP Client, default is built-in [axios] **instance** |
| error | | class of Error, default is `WechatPayError` |
| logger | | function of logger, default is `console` |
| cache | | default is `{}`, it is reserved |
> return
`Object` of `WechatPay` Node.js SDK instance.
### http(config)
http client for request wechat pay API.
> params
| param | required | description |
| ------ | :------: | --------------- |
| config | yes | config of axios |
> return
`Promise` of wechat pay result as axios response.
### nonceStr()
> return
`String` of `nonce_str`, random string.
### timeStamp()
> return
`String` of `timestamp`, unix timestamp second.
### payRequest(payPackage, signType = 'RSA')
> params
| param | required | description |
| ---------- | :------: | ------------------------------------------- |
| payPackage | yes | package of wechat pay, like `prepay_id=***` |
| signType | | signType of wechat pay, default is `RSA` |
> return
`Object` of wechat pay payment request
| prop | description |
| --------- | ------------------------------------------- |
| appId | wehcat pay appid |
| timeStamp | timestamp, seconds |
| nonceStr | nonce string |
| package | package of wechat pay, like `prepay_id=***` |
| paySign | base64 signature |
| signType | signType of wechat pay, like `RSA` |
### notify(data)
> params
| param | required | description |
| ----- | :------: | -------------------------------- |
| data | yes | [Wechat Pay Notify] request body |
> return
`Object` of [Wechat Pay Notify] decrypt resource with response suggestion.
| prop | description |
| -------- | ----------------------------------------------- |
| resource | decrytp resource |
| response | response suggestion. like `{ code: 'SUCCESS' }` |
## Example
```js
const fs = require('fs');
const WechatPay = require('@axolo/node-wechat-pay');
const wechatPay = new WechatPay({
appType: 'mp',
appId: 'wechat_pay_appid',
mchId: 'wechat_pay_mchid',
mchCertSn: 'wechat_pay_mch_cert_serial_no',
mchCertKey: fs.readFileSync('wehcat_pay_mch_cert_private_key.pem'),
mchCert: fs.readFileSync('wehcat_pay_mch_cert.pem'),
apiV3Key: 'wechat_pay_api_v3_secret',
notifyUrl: 'https://url-of-wechat-pay-notify',
});
wechatPay.http.get('/v3/certificates').then(res => {
wechatPay.logger.log(res.data);
}).catch(err => {
wechatPay.logger.error(err);
});
```
## Test
```bash
yarn test
```
## TODO
- support upload
- test
> Yueming Fang
[Wechat Pay]: https://pay.weixin.qq.com/wiki/doc/apiv3/index.shtml
[Wechat Pay Notify]: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_5.shtml
[axios]: https://github.com/axios/axios