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
},