排查「下了单但本地什么都没收到」时定位到根因:**平台推送是订阅制的**, 只填 uid/secret 不会收到任何消息,必须调「消息设置」接口 `message.config` 配置 `message_url` + `topics` + `status=1`。此脚本把这一步自动化: - 订阅:从后台配置读真实 uid/secret → 调 message.config(status=1) → 打印平台返回;`--disable` 可关闭推送(隧道失效时避免平台一直推空地址) - 自测:打平台 `messagetest` 入口尝试触发一次推送 (注:该入口对 data 的解析要求未探明,实测各种编码/字段形态都返回 `20006 data参数内容解析异常`,故不把它当作必过项;真实下单才是权威验证) - 顺带修复 lint:`Boolean(args.test)` 属多余的布尔转换 实测:订阅返回 `code=10000 成功`;随后用真密钥按平台形态签名推送自有订单, 后端成功调真实 orderDetail 建单并完成 coupons.syncV2(sync_status=success)。
60 lines
2.9 KiB
JSON
60 lines
2.9 KiB
JSON
{
|
|
"name": "order-site-backend",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"cleanup:dev-data": "tsx scripts/cleanup-dev-data.ts",
|
|
"build": "tsc -p tsconfig.build.json && rm -rf dist/db/migrations && mkdir -p dist/db && cp -R src/db/migrations dist/db/migrations && mkdir -p dist/services/platforms/pdd && cp src/services/platforms/pdd/pdd_anti.cjs dist/services/platforms/pdd/pdd_anti.cjs",
|
|
"db:migrate": "tsx src/db/migrate.ts",
|
|
"db:migrate:create": "tsx scripts/create-migration.ts",
|
|
"db:migrate:status": "tsx scripts/migration-status.ts",
|
|
"storage:migrate": "tsx scripts/migrate-storage.ts",
|
|
"storage:migrate:built": "node dist/storage-migrate.js",
|
|
"check:sql": "tsx scripts/check-sql-guard.ts",
|
|
"dev": "tsx watch --clear-screen=false src/index.ts",
|
|
"format": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --write \"src/**/*.{ts,js,json}\" \"scripts/**/*.{ts,js}\" eslint.config.js package.json tsconfig.json tsconfig.build.json tsconfig.eslint.json",
|
|
"format:check": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --check \"src/**/*.{ts,js,json}\" \"scripts/**/*.{ts,js}\" eslint.config.js package.json tsconfig.json tsconfig.build.json tsconfig.eslint.json",
|
|
"lint": "eslint \"src/**/*.ts\" \"scripts/**/*.ts\"",
|
|
"lint:check": "npm run lint -- --quiet",
|
|
"lint:fix": "npm run lint -- --fix",
|
|
"mock:open91": "tsx scripts/mock-open91-order.ts",
|
|
"douyin-mashida:set-public-url": "tsx scripts/douyin-mashida-set-public-url.ts",
|
|
"douyin-mashida:preflight": "tsx scripts/douyin-mashida-preflight.ts",
|
|
"douyin-mashida:subscribe": "tsx scripts/douyin-mashida-subscribe.ts",
|
|
"test": "node --import tsx --test $(find src \\( -name '*.test.ts' -o -name '*.test.js' \\) -print)",
|
|
"test:industry": "tsx scripts/test-kuaishou-industry.ts",
|
|
"test:industry:http": "tsx scripts/test-kuaishou-industry-http.ts",
|
|
"test:industry:gen": "tsx scripts/gen-test-cases.ts",
|
|
"test:industry:curl": "tsx scripts/curl-send-callback.ts",
|
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
"check": "npm run format:check && npm run check:sql && npm run lint:check && npm run typecheck && npm test && npm run build",
|
|
"start": "node dist/index.js",
|
|
"start:src": "tsx src/index.ts"
|
|
},
|
|
"dependencies": {
|
|
"@alicloud/dysmsapi20170525": "^4.6.0",
|
|
"@alicloud/openapi-client": "^0.4.15",
|
|
"@alicloud/tea-util": "^1.4.11",
|
|
"@aws-sdk/client-s3": "^3.1116.0",
|
|
"express": "^5.1.0",
|
|
"multer": "^2.2.0",
|
|
"node-pg-migrate": "^8.0.4",
|
|
"pg": "^8.16.3",
|
|
"sharp": "^0.35.3"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "10.0.1",
|
|
"@types/express": "^5.0.6",
|
|
"@types/multer": "^2.2.0",
|
|
"@types/node": "^25.6.0",
|
|
"@types/pg": "^8.20.0",
|
|
"eslint": "10.8.1",
|
|
"globals": "17.11.0",
|
|
"prettier": "3.8.3",
|
|
"tsx": "^4.22.3",
|
|
"typescript": "^6.0.2",
|
|
"typescript-eslint": "8.67.0"
|
|
}
|
|
}
|