Files
medical-mall/pages/mall/delivery/webhook-server/test-send.js
not-like-juvenile eb3d01c63c 测试文件
2026-02-26 09:54:54 +08:00

43 lines
1.1 KiB
JavaScript

const http = require('http')
const https = require('https')
const crypto = require('crypto')
const PORT = process.env.PORT || 7201
const URL = `http://localhost:${PORT}/webhook/express/status`
const SECRET = process.env.WEBHOOK_SECRET || 'test_secret'
const payload = {
tracking_no: 'LOCALTEST123',
status_code: 'DELIVERED',
acceptTime: new Date().toISOString(),
remark: 'local test event'
}
const bodyText = JSON.stringify(payload)
const ts = Math.floor(Date.now() / 1000).toString()
const sig = crypto.createHmac('sha256', SECRET).update(bodyText + ts).digest('hex')
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(bodyText),
'X-Timestamp': ts,
'X-Signature': sig
}
}
const req = http.request(URL, options, (res) => {
let data = ''
res.on('data', (chunk) => data += chunk)
res.on('end', () => {
console.log('STATUS', res.statusCode)
try { console.log('BODY', JSON.parse(data)) } catch (e) { console.log('BODY', data) }
process.exit(0)
})
})
req.on('error', (e) => { console.error('request error', e); process.exit(2) })
req.write(bodyText)
req.end()