import getTokenHelper from "../../../utils/getTokenHelper" import fetchHelper from "../../../utils/fetchHelper" import sendcloudHelper from "../../../utils/sendcloudHelper" import dhlTrackingHelper from "../../../utils/dhlTrackingHelper" import { resolveDhlAccount, toTrackingCredential } from "../../../utils/dhlAccountResolver" export default defineEventHandler(async (event: any) => { const query = getQuery(event) const trackingNo = String(query?.no ?? '').trim() const service = String(query?.service ?? 'dhl').toLowerCase() const inoutId = query?.inout_id ? String(query.inout_id) : '' let data: any = {} let tracking_service = '' let tracking_inout = '' if (!trackingNo) { return { tracking_service: '', tracking_inout: '' } } try { if (service === 'sendcloud') { const res: any = await sendcloudHelper(`tracking/${encodeURIComponent(trackingNo)}`, 'GET', null) if (res) { data = { ...res } data.tracking_content = (res?.statuses ?? []).map((item: any) => ({ timestamp: item.carrier_update_timestamp, title: item.carrier_message, description: `${item.carrier_message}, ${item.carrier_code} ${item.parcel_status_history_id}`, status: item.parent_status })) } tracking_service = 'sendcloud' } else { // Default to DHL — unified tracking API handles both DE parcels and international // Tracking uses the account the label was created with (order source → org // partner → main); the API key header is what DHL's tracking API checks. const token = (await getTokenHelper(event)) || useRuntimeConfig().api.idempieretoken const account = await resolveDhlAccount(event, { inoutId: inoutId || null, token }) const credential: any = toTrackingCredential(account, 'kOMZlCkdY27OvpGKiUffZ8lUigNhcvWn') const url = `track/shipments?trackingNumber=${encodeURIComponent(trackingNo)}` const res: any = await dhlTrackingHelper(event, credential, url, 'GET', null) if (res) { data = { ...res } data.tracking_content = (res?.shipments?.[0]?.events ?? []).map((item: any) => { const locality = item?.location?.address?.addressLocality ?? '' const countryCode = item?.location?.address?.countryCode ?? '' const postalCode = item?.location?.address?.postalCode ?? '' return { timestamp: item.timestamp, title: item.status, description: item?.description ?? item?.remark ?? `${locality}, ${countryCode} ${postalCode}`.trim(), locality, postalCode, countryCode, status: item.statusCode } }) } tracking_service = 'dhl' tracking_inout = inoutId } } catch (error: any) { data.error = error?.data ?? error?.message ?? 'Tracking lookup failed' tracking_service = 'error' } data.tracking_service = tracking_service data.tracking_inout = tracking_inout return data })