npm i wechatpay-node-v3
import fs from 'fs' import WxPay from 'wechatpay-node-v3'
async startPay(_, { openid,name,total,amount,remark,product_id }) {
const pay = new WxPay({
appid: config.app.appid,
mchid: config.wxpay.mchid,
publicKey: fs.readFileSync('./apiclient_cert.pem'), // 公钥
privateKey: fs.readFileSync('./apiclient_key.pem'), // 秘钥
});
// console.log(pay)
// console.log(order_id)
// let openid = 'xxxxx'; 可以自定义一个测试
const params = {
description: name, // 订单描述
out_trade_no: order_id, // 订单号,一般每次发起支付都要不一样,可使用随机数生成
notify_url: 'https://xxxxxxxx/notify_url',
amount: {
total: total, // 支付金额,单位为分
},
attach:`[{"amount":"${amount}"},{"remark":"${remark}" },{"product_id":"${product_id}"}]`,
payer: {
openid: openid, // 微信小程序用户的openid,一般需要前端发送过来
},
scene_info: {
payer_client_ip: 'ip', // 支付者ip,这个不用写也没有问题
},
};
// console.log(params)
const result = await pay.transactions_jsapi(params);
// console.log(result)
// result值将数据返回给前端
//appId: "XXXX"
//nonceStr: "XXXX"
//package: "prepay_id=wx240908316999518cea6XXXXX"
//paySign:"XXXX"
//signType: "RSA"
//status: 200
//timeStamp: "1679620087"
return result
},