47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { getPaymentMode } from './paymentMode'
|
|
|
|
export type PaymentMethod = 'bank_transfer' | 'credit_card' | 'gopay' | 'cstore'
|
|
|
|
export class PaymentAdapter {
|
|
static getPaymentComponent(method: PaymentMethod) {
|
|
const mode = getPaymentMode()
|
|
|
|
if (mode === 'SNAP') {
|
|
return this.getSnapComponent(method)
|
|
} else {
|
|
return this.getCoreComponent(method)
|
|
}
|
|
}
|
|
|
|
private static getCoreComponent(method: PaymentMethod) {
|
|
switch (method) {
|
|
case 'bank_transfer':
|
|
return import('../core/BankTransferPanel')
|
|
case 'credit_card':
|
|
return import('../core/CardPanel')
|
|
case 'gopay':
|
|
return import('../core/GoPayPanel')
|
|
case 'cstore':
|
|
return import('../core/CStorePanel')
|
|
default:
|
|
throw new Error(`Unknown payment method: ${method}`)
|
|
}
|
|
}
|
|
|
|
private static getSnapComponent(_method: PaymentMethod) {
|
|
// For Snap, most methods are handled by hosted interface
|
|
// But we still need to return the SnapPaymentTrigger for consistency
|
|
return import('../snap/SnapPaymentTrigger')
|
|
}
|
|
|
|
static shouldUseHostedInterface(_method: PaymentMethod): boolean {
|
|
const mode = getPaymentMode()
|
|
return mode === 'SNAP'
|
|
}
|
|
|
|
static getAvailableMethods(): PaymentMethod[] {
|
|
// Return methods available in current mode
|
|
// This could be extended to filter based on environment config
|
|
return ['bank_transfer', 'credit_card', 'gopay', 'cstore']
|
|
}
|
|
} |