// Get customer code for an existing Helcim customer import jwt from 'jsonwebtoken' import Member from '../../models/member.js' import { connectDB } from '../../utils/mongoose.js' const HELCIM_API_BASE = 'https://api.helcim.com/v2' export default defineEventHandler(async (event) => { try { await connectDB() const config = useRuntimeConfig(event) const token = getCookie(event, 'auth-token') if (!token) { throw createError({ statusCode: 401, statusMessage: 'Not authenticated' }) } // Decode JWT token let decoded try { decoded = jwt.verify(token, process.env.JWT_SECRET) } catch (err) { throw createError({ statusCode: 401, statusMessage: 'Invalid or expired token' }) } // Get member const member = await Member.findById(decoded.memberId) if (!member) { throw createError({ statusCode: 404, statusMessage: 'Member not found' }) } if (!member.helcimCustomerId) { throw createError({ statusCode: 400, statusMessage: 'No Helcim customer ID found' }) } const helcimToken = config.public.helcimToken || process.env.NUXT_PUBLIC_HELCIM_TOKEN const response = await fetch( `${HELCIM_API_BASE}/customers/${member.helcimCustomerId}`, { headers: { 'accept': 'application/json', 'api-token': helcimToken } } ) if (!response.ok) { const errorText = await response.text() throw createError({ statusCode: response.status, statusMessage: `Failed to get customer: ${errorText}` }) } const customerData = await response.json() return { success: true, customerId: customerData.id, customerCode: customerData.customerCode } } catch (error) { console.error('Error getting customer code:', error) throw createError({ statusCode: error.statusCode || 500, statusMessage: error.message || 'Failed to get customer code' }) } })