发一个微信公众号对接微信支付的demo
时间: 2024-06-08 20:10:01 浏览: 177
PHP小程序支付DEMO.zip
以下是一个使用 Node.js 和 Express 框架对接微信支付的示例代码:
```
const express = require('express')
const app = express()
const bodyParser = require('body-parser')
const xmlparser = require('express-xml-bodyparser')
const { payment } = require('wechat-pay')
const config = {
appid: 'your app id',
mchid: 'your merchant id',
partnerKey: 'your partner key',
pfx: require('fs').readFileSync('path/to/your/apiclient_cert.p12'),
}
const wxPay = payment(config)
app.use(bodyParser.urlencoded({ extended: false }))
app.use(xmlparser())
app.post('/pay', async (req, res) => {
const { body } = req
// 构造订单参数
const order = {
body: '商品名称',
out_trade_no: '订单号',
total_fee: 1, // 订单总金额,单位为分
spbill_create_ip: '用户IP地址',
notify_url: '支付结果通知地址',
trade_type: 'JSAPI', // 交易类型
openid: '用户的openid',
}
try {
const result = await wxPay.createOrder(order)
const { prepay_id, ...rest } = result
const payArgs = {
appId: config.appid,
timeStamp: (Date.now() / 1000).toFixed(0),
nonceStr: Math.random().toString(36).substr(2),
package: `prepay_id=${prepay_id}`,
signType: 'MD5',
}
const paySign = wxPay.sign(payArgs)
const response = {
...payArgs,
paySign,
...rest,
}
res.send(response)
} catch (err) {
console.error(err)
res.status(500).send(err.message)
}
})
app.listen(3000, () => {
console.log('App listening on port 3000')
})
```
这段代码使用了 `wechat-pay` 模块来对接微信支付,该模块提供了方便的 API 来创建订单、查询订单等操作。需要注意的是,该模块需要使用商户证书进行签名和加密,因此需要将商户证书的路径和密码等配置信息传入到 `payment` 函数中。在具体使用时,需要将示例代码中的 `your app id`、`your merchant id`、`your partner key` 等参数替换为真实的值。同时,需要在微信公众平台上设置支付通知回调地址,并将该地址填写到订单参数中的 `notify_url` 字段中。
阅读全文