diff --git a/CHANGELOG.md b/CHANGELOG.md index 12fe47fb7f1..e45100fae4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased (develop) +- added: Klarna and PayPal payment options on the Banxa buy path. - added: Remote enable/disable of gift card providers via the info server's giftCardInfo config, supporting whole-provider disabling for Phaze and Bitrefill and per-brand disabling for Phaze. ## 4.49.0 (staging) diff --git a/src/__tests__/util/paymentTypeIcons.test.ts b/src/__tests__/util/paymentTypeIcons.test.ts index 3cbee4da46c..d27702960e7 100644 --- a/src/__tests__/util/paymentTypeIcons.test.ts +++ b/src/__tests__/util/paymentTypeIcons.test.ts @@ -31,6 +31,10 @@ describe('paymentTypeIcons', () => { expect(getPaymentTypeThemeKey('sepa')).toBe('paymentTypeLogoBankTransfer') expect(getPaymentTypeThemeKey('wire')).toBe('paymentTypeLogoBankTransfer') }) + + it('should return null for payment types without a dedicated icon', () => { + expect(getPaymentTypeThemeKey('klarna')).toBeNull() + }) }) describe('getPaymentTypeIcon', () => { @@ -56,5 +60,9 @@ describe('paymentTypeIcons', () => { const invalidTheme = {} as any expect(getPaymentTypeIcon('applepay', invalidTheme)).toBeUndefined() }) + + it('should return undefined for payment types mapped to null', () => { + expect(getPaymentTypeIcon('klarna', mockTheme)).toBeUndefined() + }) }) }) diff --git a/src/__tests__/util/paymentTypeUtils.test.ts b/src/__tests__/util/paymentTypeUtils.test.ts index 71d12e1338c..c2a872b50d3 100644 --- a/src/__tests__/util/paymentTypeUtils.test.ts +++ b/src/__tests__/util/paymentTypeUtils.test.ts @@ -10,6 +10,8 @@ describe('paymentTypeUtils', () => { expect(getPaymentTypeDisplayName('credit')).toBe('Credit and Debit Card') expect(getPaymentTypeDisplayName('venmo')).toBe('Venmo') expect(getPaymentTypeDisplayName('sepa')).toBe('SEPA Bank Transfer') + expect(getPaymentTypeDisplayName('klarna')).toBe('Klarna') + expect(getPaymentTypeDisplayName('paypal')).toBe('Paypal') }) it('should return original value for unknown payment types', () => { diff --git a/src/locales/en_US.ts b/src/locales/en_US.ts index 18137a8f612..62562e6fe82 100644 --- a/src/locales/en_US.ts +++ b/src/locales/en_US.ts @@ -2162,6 +2162,7 @@ const strings = { instant_ach_bank_transfer: 'Instant ACH Bank Transfer', ideal: 'iDEAL', interac_e_transfer: 'Interac e-Transfer', + klarna: 'Klarna', mexico_bank_transfer: 'Mexico Bank Transfer', payid: 'PayID', paypal: 'Paypal', diff --git a/src/locales/strings/enUS.json b/src/locales/strings/enUS.json index 3c0b1513f56..eba1e87352e 100644 --- a/src/locales/strings/enUS.json +++ b/src/locales/strings/enUS.json @@ -1660,6 +1660,7 @@ "instant_ach_bank_transfer": "Instant ACH Bank Transfer", "ideal": "iDEAL", "interac_e_transfer": "Interac e-Transfer", + "klarna": "Klarna", "mexico_bank_transfer": "Mexico Bank Transfer", "payid": "PayID", "paypal": "Paypal", diff --git a/src/plugins/gui/fiatPluginTypes.ts b/src/plugins/gui/fiatPluginTypes.ts index fd5c38a4cb8..b786411d9ad 100644 --- a/src/plugins/gui/fiatPluginTypes.ts +++ b/src/plugins/gui/fiatPluginTypes.ts @@ -57,6 +57,7 @@ export const asFiatPaymentType = asValue( 'ideal', 'interac', 'iobank', + 'klarna', 'mexicobank', 'payid', 'paypal', diff --git a/src/plugins/ramps/banxa/banxaRampPlugin.ts b/src/plugins/ramps/banxa/banxaRampPlugin.ts index 4f97f458f44..84f9c8a5a29 100644 --- a/src/plugins/ramps/banxa/banxaRampPlugin.ts +++ b/src/plugins/ramps/banxa/banxaRampPlugin.ts @@ -91,7 +91,9 @@ const allowedPaymentTypes: AllowedPaymentTypes = { ideal: true, interac: true, iobank: true, + klarna: true, payid: true, + paypal: true, pix: true, sepa: false, // Leave this to Bity for now turkishbank: true @@ -151,10 +153,12 @@ const asBanxaPaymentType = asValue( 'DLOCALPIX', 'DLOCALZAIO', 'IDEAL', + 'KLARNACKO', 'MANUALPAYMENT', 'MONOOVAPAYID', 'PRIMERAP', 'PRIMERCC', + 'PRIMERPAYPAL', 'WORLDPAYGOOGLE', 'ZHACHSELL' ) @@ -331,10 +335,12 @@ const typeMap: Record = { DLOCALPIX: 'pix', DLOCALZAIO: 'iobank', IDEAL: 'ideal', + KLARNACKO: 'klarna', MANUALPAYMENT: 'turkishbank', MONOOVAPAYID: 'payid', PRIMERAP: 'applepay', PRIMERCC: 'credit', + PRIMERPAYPAL: 'paypal', WORLDPAYGOOGLE: 'googlepay', ZHACHSELL: 'ach' } diff --git a/src/plugins/ramps/utils/getSettlementRange.ts b/src/plugins/ramps/utils/getSettlementRange.ts index 9cf73b64916..0e8fc2c58b8 100644 --- a/src/plugins/ramps/utils/getSettlementRange.ts +++ b/src/plugins/ramps/utils/getSettlementRange.ts @@ -61,6 +61,8 @@ export function getBuySettlementRange( case 'iobank': // Not listed in GUI plugin lists; assume typical window return RANGE(5, 'minutes', 24, 'hours') + case 'klarna': + return RANGE(5, 'minutes', 24, 'hours') case 'mexicobank': return RANGE(5, 'minutes', 24, 'hours') case 'payid': @@ -116,6 +118,8 @@ export function getSellSettlementRange( case 'iobank': // Not listed in GUI plugin lists; assume typical window return RANGE(5, 'minutes', 24, 'hours') + case 'klarna': + return RANGE(5, 'minutes', 24, 'hours') case 'mexicobank': return RANGE(5, 'minutes', 24, 'hours') case 'payid': diff --git a/src/util/paymentTypeIcons.ts b/src/util/paymentTypeIcons.ts index 2903be071cc..7654cd6a4b8 100644 --- a/src/util/paymentTypeIcons.ts +++ b/src/util/paymentTypeIcons.ts @@ -17,6 +17,7 @@ const paymentTypeToThemeKey: Record = { ideal: 'paymentTypeLogoIdeal', interac: 'paymentTypeLogoInterac', iobank: 'paymentTypeLogoBankTransfer', // Using bank transfer as fallback + klarna: null, // No dedicated Klarna asset yet; falls back to the provider icon. TODO: add an official Klarna logo mexicobank: 'paymentTypeLogoBankTransfer', // Using bank transfer as fallback payid: 'paymentTypeLogoPayid', paypal: 'paymentTypeLogoPaypal', diff --git a/src/util/paymentTypeUtils.ts b/src/util/paymentTypeUtils.ts index dceb23a72e7..f6798078f24 100644 --- a/src/util/paymentTypeUtils.ts +++ b/src/util/paymentTypeUtils.ts @@ -16,6 +16,7 @@ const paymentTypeDisplayNames: Record = { ideal: lstrings.ideal, interac: lstrings.interac_e_transfer, iobank: lstrings.bank_transfer, + klarna: lstrings.klarna, mexicobank: lstrings.mexico_bank_transfer, payid: lstrings.payid, paypal: lstrings.paypal,