@axolo/node-wechat-pay

Wechat pay v3 Node.js SDK.

Usage no npm install needed!

<script type="module">
  import axoloNodeWechatPay from 'https://cdn.skypack.dev/@axolo/node-wechat-pay';
</script>

README

node-wechat

Wechat Pay v3 Node.js SDK.

Install

yarn add @axolo/node-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

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

yarn test

TODO

  • support upload
  • test

Yueming Fang