diff --git a/apps/backend/src/services/platforms/kuaishou-industry/send-callback-service.ts b/apps/backend/src/services/platforms/kuaishou-industry/send-callback-service.ts index 2a2adada..13c4520c 100644 --- a/apps/backend/src/services/platforms/kuaishou-industry/send-callback-service.ts +++ b/apps/backend/src/services/platforms/kuaishou-industry/send-callback-service.ts @@ -1,6 +1,6 @@ import crypto from 'node:crypto' -import { logInfo, logWarn } from '../../../utils/logger.js' +import { logIntegration } from '../../../utils/logger.js' import { getKuaishouIndustryConfig } from './config.js' import { ensureKuaishouIndustryAccessToken } from './token-service.js' @@ -32,7 +32,7 @@ export async function sendCallback(input: SendCallbackInput): Promise<{ success: let config = getKuaishouIndustryConfig() if (!config.enabled) { - logInfo('[kuaishou-industry/send-callback]', '行业电子凭证配置未启用,跳过发码回调') + logIntegration('[kuaishou-industry/send-callback]', '行业电子凭证配置未启用,跳过发货回调') return { success: true } } @@ -45,15 +45,15 @@ export async function sendCallback(input: SendCallbackInput): Promise<{ success: } } catch (error) { const message = error instanceof Error ? error.message : String(error) - logWarn('[kuaishou-industry/send-callback]', 'accessToken 刷新失败,无法发起发码回调', { + logIntegration('[kuaishou-industry/send-callback]', 'accessToken 刷新失败,无法发起发货回调', { error: message, - }) + }, { level: 'warn' }) return { success: false, error: message } } if (!config.accessToken) { - const message = 'accessToken 未配置,无法发起发码回调' - logWarn('[kuaishou-industry/send-callback]', message) + const message = 'accessToken 未配置,无法发起发货回调' + logIntegration('[kuaishou-industry/send-callback]', message, undefined, { level: 'warn' }) return { success: false, error: message } } @@ -102,13 +102,14 @@ export async function sendCallback(input: SendCallbackInput): Promise<{ success: } const url = `${resolveKuaishouOpenApiBaseUrl(config.baseUrl)}/integration/callback/virtual/eticket/send` - - logInfo('[kuaishou-industry/send-callback]', `发起发码回调 oid=${input.oid}`, { + const requestLog = buildSendCallbackRequestLog({ url, - oid: input.oid, - sendNum: input.sendNum, + signParams, + bizParams, }) + logIntegration('[kuaishou-industry/send-callback]', `发起电子凭证发货回调 oid=${input.oid}`, requestLog) + try { const startedAt = Date.now() const res = await fetch(url, { @@ -124,26 +125,56 @@ export async function sendCallback(input: SendCallbackInput): Promise<{ success: const ok = res.ok && Number(json.result) === 1 if (ok) { - logInfo('[kuaishou-industry/send-callback]', `发码回调成功 oid=${input.oid}`, { + logIntegration('[kuaishou-industry/send-callback]', `电子凭证发货回调成功 oid=${input.oid}`, { durationMs, + status: res.status, + request: requestLog, response: json, }) } else { - logWarn('[kuaishou-industry/send-callback]', `发码回调失败 oid=${input.oid}`, { + logIntegration('[kuaishou-industry/send-callback]', `电子凭证发货回调失败 oid=${input.oid}`, { durationMs, status: res.status, + request: requestLog, response: json, - }) + }, { level: 'warn' }) } return { success: ok, response: json } } catch (err) { const message = err instanceof Error ? err.message : String(err) - logWarn('[kuaishou-industry/send-callback]', `发码回调异常 oid=${input.oid}`, resolveCallbackErrorDetail(err)) + logIntegration('[kuaishou-industry/send-callback]', `电子凭证发货回调异常 oid=${input.oid}`, { + ...resolveCallbackErrorDetail(err), + request: requestLog, + }, { level: 'warn' }) return { success: false, error: message } } } +function buildSendCallbackRequestLog({ + url, + signParams, + bizParams, +}: { + url: string + signParams: JsonObject + bizParams: JsonObject +}): JsonObject { + return { + url, + method: 'POST', + contentType: 'application/x-www-form-urlencoded', + apiMethod: signParams.method, + appkey: signParams.appkey, + access_token: signParams.access_token, + version: signParams.version, + timestamp: signParams.timestamp, + signMethod: signParams.signMethod, + sign: signParams.sign, + param: bizParams, + } +} + function signPayload(params: JsonObject, signSecret: string): string { const entries = Object.entries(params) .filter(([key]) => key !== 'sign' && key !== 'signSecret') diff --git a/apps/backend/src/services/platforms/kuaishou-industry/send-code-service.ts b/apps/backend/src/services/platforms/kuaishou-industry/send-code-service.ts index 76bd9677..746e6a57 100644 --- a/apps/backend/src/services/platforms/kuaishou-industry/send-code-service.ts +++ b/apps/backend/src/services/platforms/kuaishou-industry/send-code-service.ts @@ -3,7 +3,7 @@ import { listTasksByOrderId } from '../../../repositories/task-repo.js' import { upsertKuaishouIndustryVoucher } from '../../../repositories/kuaishou-industry-voucher-repo.js' import { OPEN_91_PLATFORM, OPEN_91_PROVIDER } from '../../open-91/config.js' import { normalizeTimestampIso } from '../../../utils/time.js' -import { logWarn } from '../../../utils/logger.js' +import { logIntegration } from '../../../utils/logger.js' import { getKuaishouIndustryConfig, assertMatchingAppKey, @@ -119,28 +119,47 @@ function fireSendCallback(input: { num: Number(e.num) || 1, validStartTime: Number(e.validStartTime) || 0, validEndTime: Number(e.validEndTime) || 0, + goodsValue: Number(e.goodsValue) || 0, })) + const sendNum = eticketItems.reduce((sum, e) => sum + e.num, 0) + const totalGoodsValue = eticketItems.reduce((sum, e) => sum + e.goodsValue, 0) + + logIntegration('[kuaishou-industry/send-code]', '电子凭证发货回调已调度', { + oid: input.oid, + sendType: input.sendType, + sendNum, + totalGoodsValue, + etickets: eticketItems, + eticketType: input.eticketType || '', + }) sendCallback({ oid: input.oid, sendType: input.sendType, etickets: eticketItems, - sendNum: eticketItems.reduce((sum, e) => sum + e.num, 0), + sendNum, + totalGoodsValue, token: input.token, ...(input.eticketType ? { eticketType: input.eticketType } : {}), ...(input.ext ? { ext: input.ext } : {}), }).then((result) => { if (!result.success) { - logWarn('[kuaishou-industry/send-code]', '发码回调异步执行失败', { + logIntegration('[kuaishou-industry/send-code]', '电子凭证发货回调异步执行失败', { oid: input.oid, error: result.error || '', response: result.response || null, - }) + }, { level: 'warn' }) + return } + + logIntegration('[kuaishou-industry/send-code]', '电子凭证发货回调异步执行完成', { + oid: input.oid, + response: result.response || null, + }) }).catch((err) => { - logWarn('[kuaishou-industry/send-code]', '发码回调异步执行异常', { + logIntegration('[kuaishou-industry/send-code]', '电子凭证发货回调异步执行异常', { oid: input.oid, error: err instanceof Error ? err.message : String(err), - }) + }, { level: 'warn' }) }) }