// Verify payment token from HelcimPay.js
import { requireAuth } from '../../utils/auth.js'
import { validateBody } from '../../utils/validateBody.js'
import { paymentVerifySchema } from '../../utils/schemas.js'
import { listHelcimCustomerCards } from '../../utils/helcim.js'

export default defineEventHandler(async (event) => {
  try {
    await requireAuth(event)
    const body = await validateBody(event, paymentVerifySchema)

    // Verify the card token by fetching the customer's cards from Helcim
    const cards = await listHelcimCustomerCards(body.customerId)

    // Verify the card token exists for this customer
    const cardExists = Array.isArray(cards) && cards.some(card =>
      card.cardToken === body.cardToken
    )

    if (!cardExists) {
      throw createError({
        statusCode: 400,
        statusMessage: 'Payment method not found or does not belong to this customer'
      })
    }

    return {
      success: true,
      cardToken: body.cardToken,
      message: 'Payment verified with Helcim'
    }
  } catch (error) {
    console.error('Error verifying payment:', error)
    throw createError({
      statusCode: error.statusCode || 500,
      statusMessage: error.statusMessage || 'Failed to verify payment'
    })
  }
})
