安装 tenpay

yarn add tenpay

express 微信支付核心代码

const express = require('express');
const router = express.Router();
const models = require('../models');
const tenpay = require('tenpay');


// 微信支付接口,前端需传订单号
router.post('/pay', async function (req, res, next) {
    // 前端传递过来,需支付的订单id
    const order_id = req.body.order_id

    // 根据订单号去查当前订单
    const order = await models.Order.findByPk(order_id)

    const config = {
        appid: '微信支付appid',
        mchid: '微信商户号',
        partnerKey: '微信支付安全密钥',
        notify_url: '支付回调网址',
    };

    // 调用 tenpay,生成微信 JSSDK 支付参数
    const api = new tenpay(config, true);
    const result = await api.getPayParams({
        out_trade_no: order.out_trade_no,    // 商户内部订单号
        body: '长乐小卖部', //商品简单描述
        total_fee: order.total * 100,       // 因为是分单位,所以需要 * 100
        openid: req.decoded.user.openid     // 付款用户的 openid
    });

    // 返回给前端
    res.json(result)
})

小程序调用支付接口

pay() {
    wx.request({
        url: `http://localhost:3000/orders/pay`,
        header: {
            'token': '你的接口认证 token'
        },
        method: 'POST',
        data: {
            // 需要支付的订单id
            order_id: 28
        },
        success: res => {
            console.log('支付需要的参数:', res)
            wx.requestPayment({
                'timeStamp': res.data.timeStamp,
                'nonceStr': res.data.nonceStr,
                'package': res.data.package,
                'signType': res.data.signType,
                'paySign': res.data.paySign,
                // 支付成功
                'success': function(res){} {
                },
                // 支付失败
                'fail': function(res){} {
                    //是否用户主动取消?
                    if (res.errMsg == "requestPayment:fail cancel") {

                    } else {
                        // 支付程序故障
                    }
                },
                // 无论成功或失败
                'complete': function(res){} {
                }
            })
        }
    })
}

已添加到喜欢了