diff --git a/src/index.ts b/src/index.ts index 5ecf30c..ddbd14e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -11,6 +11,7 @@ export type { StripeProviderConfig, MollieProviderConfig, TestProviderConfig, + TestProviderConfigResponse, PaymentOutcome, PaymentMethod, PaymentScenario diff --git a/src/providers/index.ts b/src/providers/index.ts index c593f82..38cefeb 100644 --- a/src/providers/index.ts +++ b/src/providers/index.ts @@ -7,4 +7,4 @@ export * from './currency' // Re-export provider configurations and types export type { StripeProviderConfig } from './stripe' export type { MollieProviderConfig } from './mollie' -export type { TestProviderConfig, PaymentOutcome, PaymentMethod, PaymentScenario } from './test' +export type { TestProviderConfig, TestProviderConfigResponse, PaymentOutcome, PaymentMethod, PaymentScenario } from './test' diff --git a/src/providers/test.ts b/src/providers/test.ts index 09236a5..6f629fb 100644 --- a/src/providers/test.ts +++ b/src/providers/test.ts @@ -31,6 +31,23 @@ export interface TestProviderConfig { baseUrl?: string } +export interface TestProviderConfigResponse { + enabled: boolean + scenarios: PaymentScenario[] + methods: Array<{ + id: string + name: string + icon: string + }> + testModeIndicators: { + showWarningBanners: boolean + showTestBadges: boolean + consoleWarnings: boolean + } + defaultDelay: number + customUiRoute: string +} + // Properly typed session interface export interface TestPaymentSession { id: string @@ -144,6 +161,31 @@ export const testProvider = (testConfig: TestProviderConfig) => { }) } }, + { + path: '/payload-billing/test/config', + method: 'get', + handler: async (req) => { + const response: TestProviderConfigResponse = { + enabled: testConfig.enabled, + scenarios: scenarios, + methods: Object.entries(PAYMENT_METHODS).map(([id, method]) => ({ + id, + name: method.name, + icon: method.icon + })), + testModeIndicators: testConfig.testModeIndicators || { + showWarningBanners: true, + showTestBadges: true, + consoleWarnings: true + }, + defaultDelay: testConfig.defaultDelay || 1000, + customUiRoute: uiRoute + } + return new Response(JSON.stringify(response), { + headers: { 'Content-Type': 'application/json' } + }) + } + }, { path: '/payload-billing/test/process', method: 'post',