From 291ce255b480d4a550f9c2b329059c30e93de9e3 Mon Sep 17 00:00:00 2001 From: Bas van den Aakster Date: Fri, 5 Dec 2025 14:45:04 +0100 Subject: [PATCH] feat: add automatic mode detection for Mollie payments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Automatically set Mollie payment mode to 'test' or 'live' based on the API key prefix (test_ or live_). This ensures payments are created in the correct mode and helps prevent configuration errors. Changes: - Add getMollieMode() helper to detect mode from API key - Include mode parameter in payment creation - Use type assertion for Mollie client compatibility 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- package.json | 2 +- src/providers/mollie.ts | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f407d1f..be525bd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@xtr-dev/payload-billing", - "version": "0.1.24", + "version": "0.1.25", "description": "PayloadCMS plugin for billing and payment provider integrations with tracking and local testing", "license": "MIT", "type": "module", diff --git a/src/providers/mollie.ts b/src/providers/mollie.ts index 43073bf..b03b1cc 100644 --- a/src/providers/mollie.ts +++ b/src/providers/mollie.ts @@ -17,6 +17,13 @@ import { createContextLogger } from '../utils/logger' const symbol = Symbol.for('@xtr-dev/payload-billing/mollie') export type MollieProviderConfig = Parameters[0] +/** + * Determine the Mollie mode based on API key prefix + */ +function getMollieMode(apiKey: string): 'test' | 'live' { + return apiKey.startsWith('test_') ? 'test' : 'live' +} + /** * Type-safe mapping of Mollie payment status to internal status */ @@ -161,6 +168,9 @@ export const mollieProvider = (mollieConfig: MollieProviderConfig & { validateProductionUrl(redirectUrl, 'Redirect') validateProductionUrl(webhookUrl, 'Webhook') + // Determine mode from API key (test_ or live_) + const mode = getMollieMode(mollieConfig.apiKey) + const molliePayment = await singleton.get(payload).payments.create({ amount: { value: formatAmountForProvider(payment.amount, payment.currency), @@ -169,7 +179,8 @@ export const mollieProvider = (mollieConfig: MollieProviderConfig & { description: payment.description || '', redirectUrl, webhookUrl, - }); + mode, + } as any); payment.providerId = molliePayment.id // Use toPlainObject if available, otherwise spread the object (for compatibility with different Mollie client versions) payment.providerData = typeof molliePayment.toPlainObject === 'function'