65 lines
2.0 KiB
JavaScript
65 lines
2.0 KiB
JavaScript
#!/usr/bin/env node
|
|
'use strict';
|
|
const { buildSign } = require('./sign');
|
|
|
|
const BASE_URL = (process.env.BASE_URL || 'https://example.com').replace(/\/$/, '');
|
|
const ACCESS_KEY = process.env.ACCESS_KEY || 'your_access_key';
|
|
const SECRET_KEY = process.env.SECRET_KEY || 'your_secret_key';
|
|
const PAY_CHANNEL_ID = process.env.PAY_CHANNEL_ID || '3084';
|
|
|
|
async function post(path, body) {
|
|
const payload = { ...body, Sign: buildSign(body, SECRET_KEY) };
|
|
const res = await fetch(BASE_URL + path, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(payload),
|
|
});
|
|
return res.json();
|
|
}
|
|
|
|
async function main() {
|
|
const [cmd, orderNo] = process.argv.slice(2);
|
|
if (!cmd) {
|
|
console.log('usage: node demo.js balance|submit|query <OrderNo>');
|
|
process.exit(1);
|
|
}
|
|
if (cmd === 'balance') {
|
|
console.log(JSON.stringify(await post('/api/apiv1/open/pay/querybalance', {
|
|
Timestamp: Math.floor(Date.now() / 1000),
|
|
AccessKey: ACCESS_KEY,
|
|
}), null, 2));
|
|
} else if (cmd === 'submit') {
|
|
const OrderNo = `OrderNo${Math.floor(Date.now() / 1000)}`;
|
|
console.log(JSON.stringify(await post('/api/apiv1/open/pay/submit', {
|
|
Timestamp: Math.floor(Date.now() / 1000),
|
|
AccessKey: ACCESS_KEY,
|
|
PayChannelId: PAY_CHANNEL_ID,
|
|
OrderNo,
|
|
Amount: '100.01',
|
|
CallbackUrl: 'https://xxxxx.com/xxxx/callback',
|
|
Ext: '-',
|
|
Payer: '张三',
|
|
PayerNo: '123456789@qq.com',
|
|
PayerAddress: '支付宝',
|
|
}), null, 2));
|
|
} else if (cmd === 'query') {
|
|
if (!orderNo) {
|
|
console.log('usage: node demo.js query <OrderNo>');
|
|
process.exit(1);
|
|
}
|
|
console.log(JSON.stringify(await post('/api/apiv1/open/pay/queryorder', {
|
|
Timestamp: Math.floor(Date.now() / 1000),
|
|
AccessKey: ACCESS_KEY,
|
|
OrderNo: orderNo,
|
|
}), null, 2));
|
|
} else {
|
|
console.log('unknown command:', cmd);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
main().catch((e) => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
});
|