2
0

test-fix.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // 使用正确的JWT secret测试
  2. const crypto = require('crypto');
  3. // 生成一个有效的JWT token
  4. function generateTestToken() {
  5. const header = Buffer.from(JSON.stringify({
  6. alg: 'HS256',
  7. typ: 'JWT'
  8. })).toString('base64url');
  9. const payload = Buffer.from(JSON.stringify({
  10. id: 1,
  11. username: 'test',
  12. tenantId: 1,
  13. iat: Math.floor(Date.now() / 1000),
  14. exp: Math.floor(Date.now() / 1000) + 3600 // 1小时后过期
  15. })).toString('base64url');
  16. const secret = 'your-secret-key'; // 与JWTUtil中的默认值一致
  17. const signature = crypto
  18. .createHmac('sha256', secret)
  19. .update(`${header}.${payload}`)
  20. .digest('base64url');
  21. return `${header}.${payload}.${signature}`;
  22. }
  23. async function testWithValidToken() {
  24. console.log('=== 使用有效token测试支付成功触发API ===\n');
  25. const token = generateTestToken();
  26. console.log(`生成的有效token: ${token.substring(0, 50)}...\n`);
  27. const apiUrl = 'http://localhost:8080/api/v1/payments/payment/trigger-success';
  28. const testOrderId = 25; // 支付成功的订单ID
  29. try {
  30. const response = await fetch(apiUrl, {
  31. method: 'POST',
  32. headers: {
  33. 'Content-Type': 'application/json',
  34. 'Authorization': `Bearer ${token}`
  35. },
  36. body: JSON.stringify({
  37. orderId: testOrderId
  38. })
  39. });
  40. console.log(`状态码: ${response.status}`);
  41. console.log(`状态文本: ${response.statusText}`);
  42. if (response.ok) {
  43. const result = await response.json();
  44. console.log('成功响应:', JSON.stringify(result, null, 2));
  45. console.log(`\n✅ API调用成功`);
  46. // 等待一会儿,然后检查数据库
  47. console.log('\n等待2秒后检查数据库...');
  48. await new Promise(resolve => setTimeout(resolve, 2000));
  49. const { exec } = require('child_process');
  50. exec(
  51. 'psql -h 127.0.0.1 -U postgres -d postgres -c "SELECT id, tenant_id, task_id, order_id, print_status, scheduled_at, created_at FROM feie_print_task_mt WHERE order_id = 25 OR order_id = 999 ORDER BY created_at DESC"',
  52. (error, stdout, stderr) => {
  53. if (error) {
  54. console.error('查询数据库失败:', error.message);
  55. } else {
  56. console.log('订单ID 25的打印任务:');
  57. console.log(stdout);
  58. }
  59. }
  60. );
  61. } else {
  62. const errorText = await response.text();
  63. console.log('错误响应:', errorText);
  64. console.log(`\n❌ API调用失败`);
  65. }
  66. } catch (error) {
  67. console.error('请求失败:', error.message);
  68. }
  69. }
  70. // 运行测试
  71. testWithValidToken().catch(error => {
  72. console.error('测试脚本执行失败:', error);
  73. });