-
Notifications
You must be signed in to change notification settings - Fork 291
Expand file tree
/
Copy pathpaymentTypeUtils.ts
More file actions
58 lines (52 loc) · 1.97 KB
/
Copy pathpaymentTypeUtils.ts
File metadata and controls
58 lines (52 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { lstrings } from '../locales/strings'
// Payment type display name mapping based on plugin configurations
const paymentTypeDisplayNames: Record<string, string> = {
ach: lstrings.ach_bank_transfer,
applepay: lstrings.apple_pay,
bank: lstrings.bank_transfer,
cash: lstrings.in_person_cash_and_debit_card,
colombiabank: lstrings.colombia_bank_transfer,
credit: lstrings.credit_and_debit_card,
debit: lstrings.debit_card,
directtobank: lstrings.direct_to_bank,
fasterpayments: lstrings.faster_payments,
googlepay: lstrings.google_pay,
iach: lstrings.instant_ach_bank_transfer,
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,
pix: lstrings.pix,
pse: lstrings.pse_payment,
revolut: lstrings.revolut,
sepa: lstrings.sepa_bank_transfer,
spei: lstrings.spei_bank_transfer,
turkishbank: lstrings.turkish_bank_transfer,
venmo: lstrings.venmo,
wire: lstrings.bank_wire_transfer
}
/**
* Get the display name for a payment type
* @param paymentType - The payment type identifier
* @returns The human-readable display name
*/
export const getPaymentTypeDisplayName = (paymentType: string): string => {
return paymentTypeDisplayNames[paymentType] ?? paymentType
}
/**
* Format multiple payment types into a display string
* @param paymentTypes - Array of payment type identifiers
* @returns Formatted string of payment type display names
*/
export const formatPaymentTypes = (paymentTypes: string[]): string => {
if (paymentTypes.length === 0) return ''
const displayNames = paymentTypes.map(type => getPaymentTypeDisplayName(type))
if (displayNames.length === 1) return displayNames[0]
if (displayNames.length === 2) return displayNames.join(' or ')
// For 3+ items: "Item1, Item2, or Item3"
const lastItem = displayNames.pop()
return `${displayNames.join(', ')}, or ${lastItem}`
}