Helcim refuses paymentType:'verify' for cards already saved on a
customer ("A new card must be entered for saving the payment method"),
breaking every "Complete Payment" retry after a partial-failed signup.
Add GET /api/helcim/existing-card and short-circuit HelcimPay verify in
useMemberPayment + payment-setup.vue when a saved card is found, going
straight to subscription creation. The two existence-check fetches run
in parallel with get-or-create-customer so no extra round-trip latency
in the common path.
25 lines
775 B
JavaScript
25 lines
775 B
JavaScript
// Returns the saved cardToken so callers can skip HelcimPay re-entry.
|
|
import { requireAuth } from '../../utils/auth.js'
|
|
import { listHelcimCustomerCards } from '../../utils/helcim.js'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const member = await requireAuth(event)
|
|
|
|
if (!member.helcimCustomerId) {
|
|
return { cardToken: null }
|
|
}
|
|
|
|
const cardsResponse = await listHelcimCustomerCards(member.helcimCustomerId)
|
|
const cards = Array.isArray(cardsResponse)
|
|
? cardsResponse
|
|
: (cardsResponse?.cards || cardsResponse?.data || [])
|
|
|
|
if (!cards.length) {
|
|
return { cardToken: null }
|
|
}
|
|
|
|
const defaultCard =
|
|
cards.find((c) => c?.default === true || c?.isDefault === true) || cards[0]
|
|
|
|
return { cardToken: defaultCard?.cardToken || null }
|
|
})
|