node对接微信支付 sdk tenpay

node对接微信支付用到了npm的一个包tenpay,首先在项目中执行npm install tenpay --save,将包下载到项目中,我用的是node的express


const tenpay = require('tenpay');	// 引入微信支付SDK

const config = {
  appid: 'xxx',  // 应用id
  mchid: 'xxx',  // 微信商户号
  partnerKey: 'xxx',   // 微信支付安全密匙
  pfx: require('fs').readFileSync('xxx'),   // 证书文件(后缀.12)
  notify_url: 'xxx',   // 支付/退款结果回调
  refund_url: 'https://www.dadaex.cn/api/pay/wxRefund',  // 退款结果通知回调(可不填,沿用上面的路径)
};
// 传入第二个参数为true, 可在控制台输出数据
const api = new tenpay(config, true);

class Get {
  constructor() {
    auto(this)
  }
 	async wxPay(req, res, next) {
    try {
      const { totalAmount, subject, body } = req.query
      const result = await api.unifiedOrder({
        out_trade_no: outTradeNo,	// 订单号码,不能重复,我用的是订单的id加上日期拼成的字符串
        body: body,	// 订单名称
        total_fee: totalAmount,	// 支付金额(单位:分,0.01等于1分) 
        trade_type: 'NATIVE' // 调用的支付类型,默认为JSAPI
      });
      QRCode.toString(result.code_url, { type: 'svg' }, function (err, url) {
        if (err) return res.json(err)
        // url将链接转为了二维码
        // 最后再转为base64格式返回给前端
        return res.json('data:image/svg+xml;base64,' + Buffer(url).toString('base64'))
      })
    } catch (error) {
      return next(error)
    }
  }
 }

发送请求后微信会返回一个链接,需要自己转成二维码,网址草料二维码生成器,支付完成后微信会发送通知到上面写的接口里面,qrcode将微信返回的链接转为二维码

app.use(bodyParser.text({ type: '*/xml' }))	// 将收到的xml数据转为String类型

后台接口路由里面内容

const { router } = require('../../util')
const tenpay = require('tenpay');

// 微信支付
const config = {
  appid: 'xxx',  // 应用id
  mchid: 'xxx',  // 微信商户号
  partnerKey: 'xxx',   // 微信支付安全密匙
  pfx: require('fs').readFileSync('xxx'),   // 证书文件
  notify_url: 'xxx',   // 支付结果回调
  refund_url: '',  // 退款结果通知回调
};
const api = new tenpay(config, true);
  .post('/wxCallback', api.middlewareForExpress('nativePay'), (req,res) => {
	 let info = req.weixin	// 返回的数据通过中间件后会将req.weixin转成存放将xml转成json数据的容器
	 console.log(req.weixin)
	 res.reply()	// 告诉微信支付成功了,不要再发送请求了
   })
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值