@oneblink/sdk-core 10.0.0-beta.3 → 10.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ import { SubmissionTypes } from '@oneblink/types';
2
+ import { PaymentProvider } from './types.js';
3
+ /**
4
+ * Resolve the pure payment provider implementation for a payment type.
5
+ *
6
+ * @param type
7
+ * @returns
8
+ */
9
+ export default function getPaymentProvider(type: SubmissionTypes.FormSubmissionPayment['type']): PaymentProvider<SubmissionTypes.FormSubmissionPayment>;
@@ -0,0 +1,20 @@
1
+ import bpointPaymentProvider from './providers/bpoint.js';
2
+ import cpPayPaymentProvider from './providers/cpPay.js';
3
+ import nswGovPayPaymentProvider from './providers/nswGovPay.js';
4
+ import westpacQuickStreamPaymentProvider from './providers/westpacQuickStream.js';
5
+ const paymentProvidersMap = {
6
+ BPOINT: bpointPaymentProvider,
7
+ CP_PAY: cpPayPaymentProvider,
8
+ NSW_GOV_PAY: nswGovPayPaymentProvider,
9
+ WESTPAC_QUICK_STREAM: westpacQuickStreamPaymentProvider,
10
+ };
11
+ /**
12
+ * Resolve the pure payment provider implementation for a payment type.
13
+ *
14
+ * @param type
15
+ * @returns
16
+ */
17
+ export default function getPaymentProvider(type) {
18
+ return paymentProvidersMap[type];
19
+ }
20
+ //# sourceMappingURL=getPaymentProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPaymentProvider.js","sourceRoot":"","sources":["../../src/paymentService/getPaymentProvider.ts"],"names":[],"mappings":"AAEA,OAAO,qBAAqB,MAAM,uBAAuB,CAAA;AACzD,OAAO,oBAAoB,MAAM,sBAAsB,CAAA;AACvD,OAAO,wBAAwB,MAAM,0BAA0B,CAAA;AAC/D,OAAO,iCAAiC,MAAM,mCAAmC,CAAA;AAEjF,MAAM,mBAAmB,GAGrB;IACF,MAAM,EAAE,qBAAqB;IAC7B,MAAM,EAAE,oBAAoB;IAC5B,WAAW,EAAE,wBAAwB;IACrC,oBAAoB,EAAE,iCAAiC;CACxD,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CACxC,IAAmD;IAEnD,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAA;AAClC,CAAC","sourcesContent":["import { SubmissionTypes } from '@oneblink/types'\r\nimport { PaymentProvider } from './types.js'\r\nimport bpointPaymentProvider from './providers/bpoint.js'\r\nimport cpPayPaymentProvider from './providers/cpPay.js'\r\nimport nswGovPayPaymentProvider from './providers/nswGovPay.js'\r\nimport westpacQuickStreamPaymentProvider from './providers/westpacQuickStream.js'\r\n\r\nconst paymentProvidersMap: Record<\r\n SubmissionTypes.FormSubmissionPayment['type'],\r\n PaymentProvider<SubmissionTypes.FormSubmissionPayment>\r\n> = {\r\n BPOINT: bpointPaymentProvider,\r\n CP_PAY: cpPayPaymentProvider,\r\n NSW_GOV_PAY: nswGovPayPaymentProvider,\r\n WESTPAC_QUICK_STREAM: westpacQuickStreamPaymentProvider,\r\n}\r\n\r\n/**\r\n * Resolve the pure payment provider implementation for a payment type.\r\n *\r\n * @param type\r\n * @returns\r\n */\r\nexport default function getPaymentProvider(\r\n type: SubmissionTypes.FormSubmissionPayment['type'],\r\n): PaymentProvider<SubmissionTypes.FormSubmissionPayment> {\r\n return paymentProvidersMap[type]\r\n}\r\n"]}
@@ -0,0 +1,7 @@
1
+ import { SubmissionTypes } from '@oneblink/types';
2
+ import { PaymentProvider } from '../types.js';
3
+ type BPOINTFormSubmissionPayment = Extract<SubmissionTypes.FormSubmissionPayment, {
4
+ type: 'BPOINT';
5
+ }>;
6
+ declare const bpointPaymentProvider: PaymentProvider<BPOINTFormSubmissionPayment>;
7
+ export default bpointPaymentProvider;
@@ -0,0 +1,76 @@
1
+ function getFormStorePayment(formSubmissionPayment) {
2
+ const providerTransactionId = formSubmissionPayment.paymentTransaction?.TxnNumber;
3
+ const providerReceiptNumber = formSubmissionPayment.paymentTransaction?.ReceiptNumber;
4
+ return {
5
+ status: formSubmissionPayment.status,
6
+ ...(providerTransactionId ? { providerTransactionId } : {}),
7
+ ...(providerReceiptNumber ? { providerReceiptNumber } : {}),
8
+ };
9
+ }
10
+ function getDisplayDetails(formSubmissionPayment, { formatCurrency, formatDateTime, }) {
11
+ const { paymentTransaction } = formSubmissionPayment;
12
+ if (!paymentTransaction) {
13
+ return;
14
+ }
15
+ const amountValue = paymentTransaction.Amount / 100;
16
+ const amount = {
17
+ value: amountValue,
18
+ formatted: formatCurrency(amountValue),
19
+ };
20
+ return {
21
+ amount,
22
+ paymentDisplayDetails: [
23
+ {
24
+ key: 'BPOINT_RECEIPT_NUMBER',
25
+ label: 'Receipt Number',
26
+ value: paymentTransaction.ReceiptNumber,
27
+ },
28
+ {
29
+ key: 'BPOINT_CRN1',
30
+ label: 'CRN 1',
31
+ value: paymentTransaction.Crn1,
32
+ },
33
+ {
34
+ key: 'BPOINT_CRN2',
35
+ label: 'CRN 2',
36
+ value: paymentTransaction.Crn2,
37
+ },
38
+ {
39
+ key: 'BPOINT_CRN3',
40
+ label: 'CRN 3',
41
+ value: paymentTransaction.Crn3,
42
+ },
43
+ {
44
+ key: 'BPOINT_BILLER_CODE',
45
+ label: 'Biller Code',
46
+ value: paymentTransaction.BillerCode,
47
+ },
48
+ {
49
+ key: 'BPOINT_CREDIT_CARD_MASK',
50
+ label: 'Card Number',
51
+ value: paymentTransaction.CardDetails.MaskedCardNumber,
52
+ },
53
+ {
54
+ key: 'BPOINT_AMOUNT',
55
+ label: 'Amount',
56
+ value: amount.formatted,
57
+ },
58
+ {
59
+ key: 'BPOINT_SURCHARGE_AMOUNT',
60
+ label: 'Surcharge Amount',
61
+ value: formatCurrency(paymentTransaction.AmountSurcharge / 100),
62
+ },
63
+ {
64
+ key: 'BPOINT_PROCESSED_DATE_TIME',
65
+ label: 'Processed Date Time',
66
+ value: formatDateTime(paymentTransaction.ProcessedDateTime),
67
+ },
68
+ ],
69
+ };
70
+ }
71
+ const bpointPaymentProvider = {
72
+ getFormStorePayment,
73
+ getDisplayDetails,
74
+ };
75
+ export default bpointPaymentProvider;
76
+ //# sourceMappingURL=bpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bpoint.js","sourceRoot":"","sources":["../../../src/paymentService/providers/bpoint.ts"],"names":[],"mappings":"AAaA,SAAS,mBAAmB,CAC1B,qBAAkD;IAElD,MAAM,qBAAqB,GACzB,qBAAqB,CAAC,kBAAkB,EAAE,SAAS,CAAA;IACrD,MAAM,qBAAqB,GACzB,qBAAqB,CAAC,kBAAkB,EAAE,aAAa,CAAA;IAEzD,OAAO;QACL,MAAM,EAAE,qBAAqB,CAAC,MAAM;QACpC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,qBAAkD,EAClD,EACE,cAAc,EACd,cAAc,GACW;IAE3B,MAAM,EAAE,kBAAkB,EAAE,GAAG,qBAAqB,CAAA;IACpD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAM;IACR,CAAC;IACD,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,GAAG,GAAG,CAAA;IACnD,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,WAAW;QAClB,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC;KACvC,CAAA;IACD,OAAO;QACL,MAAM;QACN,qBAAqB,EAAE;YACrB;gBACE,GAAG,EAAE,uBAAuB;gBAC5B,KAAK,EAAE,gBAAgB;gBACvB,KAAK,EAAE,kBAAkB,CAAC,aAAa;aACxC;YACD;gBACE,GAAG,EAAE,aAAa;gBAClB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,kBAAkB,CAAC,IAAI;aAC/B;YACD;gBACE,GAAG,EAAE,aAAa;gBAClB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,kBAAkB,CAAC,IAAI;aAC/B;YACD;gBACE,GAAG,EAAE,aAAa;gBAClB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,kBAAkB,CAAC,IAAI;aAC/B;YACD;gBACE,GAAG,EAAE,oBAAoB;gBACzB,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,kBAAkB,CAAC,UAAU;aACrC;YACD;gBACE,GAAG,EAAE,yBAAyB;gBAC9B,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,kBAAkB,CAAC,WAAW,CAAC,gBAAgB;aACvD;YACD;gBACE,GAAG,EAAE,eAAe;gBACpB,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,MAAM,CAAC,SAAS;aACxB;YACD;gBACE,GAAG,EAAE,yBAAyB;gBAC9B,KAAK,EAAE,kBAAkB;gBACzB,KAAK,EAAE,cAAc,CAAC,kBAAkB,CAAC,eAAe,GAAG,GAAG,CAAC;aAChE;YACD;gBACE,GAAG,EAAE,4BAA4B;gBACjC,KAAK,EAAE,qBAAqB;gBAC5B,KAAK,EAAE,cAAc,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;aAC5D;SACF;KACF,CAAA;AACH,CAAC;AAED,MAAM,qBAAqB,GAAiD;IAC1E,mBAAmB;IACnB,iBAAiB;CAClB,CAAA;AAED,eAAe,qBAAqB,CAAA","sourcesContent":["import { SubmissionTypes } from '@oneblink/types'\r\nimport {\r\n FormStorePayment,\r\n PaymentDisplayDetailsResult,\r\n PaymentDisplayFormatters,\r\n PaymentProvider,\r\n} from '../types.js'\r\n\r\ntype BPOINTFormSubmissionPayment = Extract<\r\n SubmissionTypes.FormSubmissionPayment,\r\n { type: 'BPOINT' }\r\n>\r\n\r\nfunction getFormStorePayment(\r\n formSubmissionPayment: BPOINTFormSubmissionPayment,\r\n): FormStorePayment {\r\n const providerTransactionId =\r\n formSubmissionPayment.paymentTransaction?.TxnNumber\r\n const providerReceiptNumber =\r\n formSubmissionPayment.paymentTransaction?.ReceiptNumber\r\n\r\n return {\r\n status: formSubmissionPayment.status,\r\n ...(providerTransactionId ? { providerTransactionId } : {}),\r\n ...(providerReceiptNumber ? { providerReceiptNumber } : {}),\r\n }\r\n}\r\n\r\nfunction getDisplayDetails(\r\n formSubmissionPayment: BPOINTFormSubmissionPayment,\r\n {\r\n formatCurrency,\r\n formatDateTime,\r\n }: PaymentDisplayFormatters,\r\n): PaymentDisplayDetailsResult | undefined {\r\n const { paymentTransaction } = formSubmissionPayment\r\n if (!paymentTransaction) {\r\n return\r\n }\r\n const amountValue = paymentTransaction.Amount / 100\r\n const amount = {\r\n value: amountValue,\r\n formatted: formatCurrency(amountValue),\r\n }\r\n return {\r\n amount,\r\n paymentDisplayDetails: [\r\n {\r\n key: 'BPOINT_RECEIPT_NUMBER',\r\n label: 'Receipt Number',\r\n value: paymentTransaction.ReceiptNumber,\r\n },\r\n {\r\n key: 'BPOINT_CRN1',\r\n label: 'CRN 1',\r\n value: paymentTransaction.Crn1,\r\n },\r\n {\r\n key: 'BPOINT_CRN2',\r\n label: 'CRN 2',\r\n value: paymentTransaction.Crn2,\r\n },\r\n {\r\n key: 'BPOINT_CRN3',\r\n label: 'CRN 3',\r\n value: paymentTransaction.Crn3,\r\n },\r\n {\r\n key: 'BPOINT_BILLER_CODE',\r\n label: 'Biller Code',\r\n value: paymentTransaction.BillerCode,\r\n },\r\n {\r\n key: 'BPOINT_CREDIT_CARD_MASK',\r\n label: 'Card Number',\r\n value: paymentTransaction.CardDetails.MaskedCardNumber,\r\n },\r\n {\r\n key: 'BPOINT_AMOUNT',\r\n label: 'Amount',\r\n value: amount.formatted,\r\n },\r\n {\r\n key: 'BPOINT_SURCHARGE_AMOUNT',\r\n label: 'Surcharge Amount',\r\n value: formatCurrency(paymentTransaction.AmountSurcharge / 100),\r\n },\r\n {\r\n key: 'BPOINT_PROCESSED_DATE_TIME',\r\n label: 'Processed Date Time',\r\n value: formatDateTime(paymentTransaction.ProcessedDateTime),\r\n },\r\n ],\r\n }\r\n}\r\n\r\nconst bpointPaymentProvider: PaymentProvider<BPOINTFormSubmissionPayment> = {\r\n getFormStorePayment,\r\n getDisplayDetails,\r\n}\r\n\r\nexport default bpointPaymentProvider\r\n"]}
@@ -0,0 +1,7 @@
1
+ import { SubmissionTypes } from '@oneblink/types';
2
+ import { PaymentProvider } from '../types.js';
3
+ type CPPayFormSubmissionPayment = Extract<SubmissionTypes.FormSubmissionPayment, {
4
+ type: 'CP_PAY';
5
+ }>;
6
+ declare const cpPayPaymentProvider: PaymentProvider<CPPayFormSubmissionPayment>;
7
+ export default cpPayPaymentProvider;
@@ -0,0 +1,119 @@
1
+ function getFormStorePayment(formSubmissionPayment) {
2
+ const paymentTransaction = formSubmissionPayment.paymentTransaction;
3
+ const providerTransactionId = !paymentTransaction
4
+ ? undefined
5
+ : paymentTransaction.cpPayVersion === 'v2'
6
+ ? paymentTransaction.result.id
7
+ : paymentTransaction.transactionId;
8
+ const providerReceiptNumber = !paymentTransaction
9
+ ? undefined
10
+ : paymentTransaction.cpPayVersion === 'v2'
11
+ ? (paymentTransaction.result.externalReferenceId ?? undefined)
12
+ : (paymentTransaction.orderNumber ?? undefined);
13
+ return {
14
+ status: formSubmissionPayment.status,
15
+ ...(providerTransactionId ? { providerTransactionId } : {}),
16
+ ...(providerReceiptNumber ? { providerReceiptNumber } : {}),
17
+ };
18
+ }
19
+ function getDisplayDetails(formSubmissionPayment, { formatCurrency, formatDateTime }) {
20
+ const { paymentTransaction } = formSubmissionPayment;
21
+ if (!paymentTransaction) {
22
+ return;
23
+ }
24
+ const determineDetails = () => {
25
+ switch (paymentTransaction.cpPayVersion) {
26
+ case 'v2': {
27
+ return {
28
+ transactionId: paymentTransaction.result.id,
29
+ orderNumber: paymentTransaction.result.externalReferenceId ?? undefined,
30
+ paymentType: paymentTransaction.result.paymentType,
31
+ creditCardMask: paymentTransaction.result.lastFour
32
+ ? `xxxx xxxx xxxx ${paymentTransaction.result.lastFour}`
33
+ : undefined,
34
+ amount: paymentTransaction.result.amount !== undefined
35
+ ? {
36
+ value: paymentTransaction.result.amount,
37
+ formatted: formatCurrency(paymentTransaction.result.amount),
38
+ }
39
+ : {
40
+ value: NaN,
41
+ formatted: 'Unknown',
42
+ },
43
+ createdDateTime: paymentTransaction.result.createdOnUtc,
44
+ };
45
+ }
46
+ default: {
47
+ return {
48
+ transactionId: paymentTransaction.transactionId,
49
+ orderNumber: paymentTransaction.orderNumber ?? undefined,
50
+ paymentType: paymentTransaction.paymentTypeId === 1
51
+ ? 'Credit/Debit Card'
52
+ : paymentTransaction.paymentTypeId === 2
53
+ ? 'ACH'
54
+ : undefined,
55
+ creditCardMask: paymentTransaction.lastFour
56
+ ? `xxxx xxxx xxxx ${paymentTransaction.lastFour}`
57
+ : undefined,
58
+ amount: {
59
+ value: paymentTransaction.amount,
60
+ formatted: formatCurrency(paymentTransaction.amount),
61
+ },
62
+ createdDateTime: paymentTransaction.createdAt,
63
+ };
64
+ }
65
+ }
66
+ };
67
+ const { transactionId, orderNumber, paymentType, creditCardMask, amount, createdDateTime, } = determineDetails();
68
+ const paymentDisplayDetails = [];
69
+ if (transactionId) {
70
+ paymentDisplayDetails.push({
71
+ key: 'CP_PAY_TRANSACTION_ID',
72
+ label: 'Transaction Id',
73
+ value: transactionId,
74
+ });
75
+ }
76
+ if (orderNumber) {
77
+ paymentDisplayDetails.push({
78
+ key: 'CP_PAY_ORDER_NUMBER',
79
+ label: 'Order Number',
80
+ value: orderNumber,
81
+ });
82
+ }
83
+ if (paymentType) {
84
+ paymentDisplayDetails.push({
85
+ key: 'CP_PAY_PAYMENT_TYPE',
86
+ label: 'Payment Type',
87
+ value: paymentType,
88
+ });
89
+ }
90
+ if (creditCardMask) {
91
+ paymentDisplayDetails.push({
92
+ key: 'CP_PAY_CREDIT_CARD_MASK',
93
+ label: 'Card Number',
94
+ value: creditCardMask,
95
+ });
96
+ }
97
+ paymentDisplayDetails.push({
98
+ key: 'CP_PAY_AMOUNT',
99
+ label: 'Amount',
100
+ value: amount.formatted,
101
+ });
102
+ if (createdDateTime) {
103
+ paymentDisplayDetails.push({
104
+ key: 'CP_PAY_CREATED_DATE_TIME',
105
+ label: 'Created At',
106
+ value: formatDateTime(createdDateTime),
107
+ });
108
+ }
109
+ return {
110
+ amount,
111
+ paymentDisplayDetails,
112
+ };
113
+ }
114
+ const cpPayPaymentProvider = {
115
+ getFormStorePayment,
116
+ getDisplayDetails,
117
+ };
118
+ export default cpPayPaymentProvider;
119
+ //# sourceMappingURL=cpPay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpPay.js","sourceRoot":"","sources":["../../../src/paymentService/providers/cpPay.ts"],"names":[],"mappings":"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","sourcesContent":["import { SubmissionTypes } from '@oneblink/types'\r\nimport {\r\n FormStorePayment,\r\n PaymentDisplayDetail,\r\n PaymentDisplayDetailsResult,\r\n PaymentDisplayFormatters,\r\n PaymentProvider,\r\n} from '../types.js'\r\n\r\ntype CPPayFormSubmissionPayment = Extract<\r\n SubmissionTypes.FormSubmissionPayment,\r\n { type: 'CP_PAY' }\r\n>\r\n\r\nfunction getFormStorePayment(\r\n formSubmissionPayment: CPPayFormSubmissionPayment,\r\n): FormStorePayment {\r\n const paymentTransaction = formSubmissionPayment.paymentTransaction\r\n const providerTransactionId = !paymentTransaction\r\n ? undefined\r\n : paymentTransaction.cpPayVersion === 'v2'\r\n ? paymentTransaction.result.id\r\n : paymentTransaction.transactionId\r\n const providerReceiptNumber = !paymentTransaction\r\n ? undefined\r\n : paymentTransaction.cpPayVersion === 'v2'\r\n ? (paymentTransaction.result.externalReferenceId ?? undefined)\r\n : (paymentTransaction.orderNumber ?? undefined)\r\n\r\n return {\r\n status: formSubmissionPayment.status,\r\n ...(providerTransactionId ? { providerTransactionId } : {}),\r\n ...(providerReceiptNumber ? { providerReceiptNumber } : {}),\r\n }\r\n}\r\n\r\nfunction getDisplayDetails(\r\n formSubmissionPayment: CPPayFormSubmissionPayment,\r\n { formatCurrency, formatDateTime }: PaymentDisplayFormatters,\r\n): PaymentDisplayDetailsResult | undefined {\r\n const { paymentTransaction } = formSubmissionPayment\r\n if (!paymentTransaction) {\r\n return\r\n }\r\n\r\n const determineDetails = () => {\r\n switch (paymentTransaction.cpPayVersion) {\r\n case 'v2': {\r\n return {\r\n transactionId: paymentTransaction.result.id,\r\n orderNumber:\r\n paymentTransaction.result.externalReferenceId ?? undefined,\r\n paymentType: paymentTransaction.result.paymentType,\r\n creditCardMask: paymentTransaction.result.lastFour\r\n ? `xxxx xxxx xxxx ${paymentTransaction.result.lastFour}`\r\n : undefined,\r\n amount:\r\n paymentTransaction.result.amount !== undefined\r\n ? {\r\n value: paymentTransaction.result.amount,\r\n formatted: formatCurrency(paymentTransaction.result.amount),\r\n }\r\n : {\r\n value: NaN,\r\n formatted: 'Unknown',\r\n },\r\n createdDateTime: paymentTransaction.result.createdOnUtc,\r\n }\r\n }\r\n default: {\r\n return {\r\n transactionId: paymentTransaction.transactionId,\r\n orderNumber: paymentTransaction.orderNumber ?? undefined,\r\n paymentType:\r\n paymentTransaction.paymentTypeId === 1\r\n ? 'Credit/Debit Card'\r\n : paymentTransaction.paymentTypeId === 2\r\n ? 'ACH'\r\n : undefined,\r\n creditCardMask: paymentTransaction.lastFour\r\n ? `xxxx xxxx xxxx ${paymentTransaction.lastFour}`\r\n : undefined,\r\n amount: {\r\n value: paymentTransaction.amount,\r\n formatted: formatCurrency(paymentTransaction.amount),\r\n },\r\n createdDateTime: paymentTransaction.createdAt,\r\n }\r\n }\r\n }\r\n }\r\n\r\n const {\r\n transactionId,\r\n orderNumber,\r\n paymentType,\r\n creditCardMask,\r\n amount,\r\n createdDateTime,\r\n } = determineDetails()\r\n const paymentDisplayDetails: PaymentDisplayDetail[] = []\r\n if (transactionId) {\r\n paymentDisplayDetails.push({\r\n key: 'CP_PAY_TRANSACTION_ID',\r\n label: 'Transaction Id',\r\n value: transactionId,\r\n })\r\n }\r\n if (orderNumber) {\r\n paymentDisplayDetails.push({\r\n key: 'CP_PAY_ORDER_NUMBER',\r\n label: 'Order Number',\r\n value: orderNumber,\r\n })\r\n }\r\n if (paymentType) {\r\n paymentDisplayDetails.push({\r\n key: 'CP_PAY_PAYMENT_TYPE',\r\n label: 'Payment Type',\r\n value: paymentType,\r\n })\r\n }\r\n if (creditCardMask) {\r\n paymentDisplayDetails.push({\r\n key: 'CP_PAY_CREDIT_CARD_MASK',\r\n label: 'Card Number',\r\n value: creditCardMask,\r\n })\r\n }\r\n paymentDisplayDetails.push({\r\n key: 'CP_PAY_AMOUNT',\r\n label: 'Amount',\r\n value: amount.formatted,\r\n })\r\n if (createdDateTime) {\r\n paymentDisplayDetails.push({\r\n key: 'CP_PAY_CREATED_DATE_TIME',\r\n label: 'Created At',\r\n value: formatDateTime(createdDateTime),\r\n })\r\n }\r\n\r\n return {\r\n amount,\r\n paymentDisplayDetails,\r\n }\r\n}\r\n\r\nconst cpPayPaymentProvider: PaymentProvider<CPPayFormSubmissionPayment> = {\r\n getFormStorePayment,\r\n getDisplayDetails,\r\n}\r\n\r\nexport default cpPayPaymentProvider\r\n"]}
@@ -0,0 +1,7 @@
1
+ import { SubmissionTypes } from '@oneblink/types';
2
+ import { PaymentProvider } from '../types.js';
3
+ type NSWGovPayFormSubmissionPayment = Extract<SubmissionTypes.FormSubmissionPayment, {
4
+ type: 'NSW_GOV_PAY';
5
+ }>;
6
+ declare const nswGovPayPaymentProvider: PaymentProvider<NSWGovPayFormSubmissionPayment>;
7
+ export default nswGovPayPaymentProvider;
@@ -0,0 +1,90 @@
1
+ function getFormStorePayment(formSubmissionPayment) {
2
+ const providerTransactionId = formSubmissionPayment.paymentTransaction?.nswGovPayPaymentReference;
3
+ const providerReceiptNumber = formSubmissionPayment.paymentTransaction?.agencyCompletionPayment
4
+ ?.paymentCompletionReference;
5
+ return {
6
+ status: formSubmissionPayment.status,
7
+ ...(providerTransactionId ? { providerTransactionId } : {}),
8
+ ...(providerReceiptNumber ? { providerReceiptNumber } : {}),
9
+ };
10
+ }
11
+ function getDisplayDetails(formSubmissionPayment, { formatCurrency, formatDateTime, }) {
12
+ const { paymentTransaction } = formSubmissionPayment;
13
+ if (!paymentTransaction || !paymentTransaction.agencyCompletionPayment) {
14
+ return;
15
+ }
16
+ const amount = {
17
+ value: paymentTransaction.agencyCompletionPayment.amount,
18
+ formatted: formatCurrency(paymentTransaction.agencyCompletionPayment.amount),
19
+ };
20
+ return {
21
+ amount,
22
+ paymentDisplayDetails: [
23
+ {
24
+ key: 'NSW_GOV_PAY_COMPLETION_REFERENCE',
25
+ label: 'Completion Reference',
26
+ value: paymentTransaction.agencyCompletionPayment.paymentCompletionReference,
27
+ },
28
+ {
29
+ key: 'NSW_GOV_PAY_PAYMENT_REFERENCE',
30
+ label: 'Payment Reference',
31
+ value: paymentTransaction.agencyCompletionPayment.paymentReference,
32
+ },
33
+ {
34
+ key: 'NSW_GOV_PAY_BANK_REFERENCE',
35
+ label: 'Bank Reference',
36
+ value: paymentTransaction.agencyCompletionPayment.bankReference,
37
+ },
38
+ {
39
+ key: 'NSW_GOV_PAY_PAYMENT_METHOD',
40
+ label: 'Payment Method',
41
+ value: paymentTransaction.agencyCompletionPayment.paymentMethod,
42
+ },
43
+ ...(paymentTransaction.agencyCompletionPayment.paymentMethod === 'BPAY' &&
44
+ paymentTransaction.agencyCompletionPayment.bPay?.billerCode
45
+ ? [
46
+ {
47
+ key: 'NSW_GOV_PAY_BPAY_BILLER_CODE',
48
+ label: 'BPay Biller Code',
49
+ value: paymentTransaction.agencyCompletionPayment.bPay.billerCode,
50
+ },
51
+ ]
52
+ : []),
53
+ ...(paymentTransaction.agencyCompletionPayment.paymentMethod === 'CARD'
54
+ ? [
55
+ {
56
+ key: 'NSW_GOV_PAY_CREDIT_CARD_NUMBER',
57
+ label: 'Card Number',
58
+ value: `xxxx xxxx xxxx ${paymentTransaction.agencyCompletionPayment.card?.last4Digits}`,
59
+ },
60
+ ]
61
+ : []),
62
+ {
63
+ key: 'NSW_GOV_PAY_AMOUNT',
64
+ label: 'Amount',
65
+ value: amount.formatted,
66
+ },
67
+ {
68
+ key: 'NSW_GOV_PAY_SURCHARGE_AMOUNT',
69
+ label: 'Surcharge Amount',
70
+ value: formatCurrency(paymentTransaction.agencyCompletionPayment.surcharge),
71
+ },
72
+ {
73
+ key: 'NSW_GOV_PAY_SURCHARGE_GST',
74
+ label: 'Surcharge GST',
75
+ value: formatCurrency(paymentTransaction.agencyCompletionPayment.surchargeGst),
76
+ },
77
+ {
78
+ key: 'NSW_GOV_PAY_CREATED_DATE_TIME',
79
+ label: 'Created Date Time',
80
+ value: formatDateTime(formSubmissionPayment.createdAt),
81
+ },
82
+ ],
83
+ };
84
+ }
85
+ const nswGovPayPaymentProvider = {
86
+ getFormStorePayment,
87
+ getDisplayDetails,
88
+ };
89
+ export default nswGovPayPaymentProvider;
90
+ //# sourceMappingURL=nswGovPay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nswGovPay.js","sourceRoot":"","sources":["../../../src/paymentService/providers/nswGovPay.ts"],"names":[],"mappings":"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","sourcesContent":["import { SubmissionTypes } from '@oneblink/types'\r\nimport {\r\n FormStorePayment,\r\n PaymentDisplayDetailsResult,\r\n PaymentDisplayFormatters,\r\n PaymentProvider,\r\n} from '../types.js'\r\n\r\ntype NSWGovPayFormSubmissionPayment = Extract<\r\n SubmissionTypes.FormSubmissionPayment,\r\n { type: 'NSW_GOV_PAY' }\r\n>\r\n\r\nfunction getFormStorePayment(\r\n formSubmissionPayment: NSWGovPayFormSubmissionPayment,\r\n): FormStorePayment {\r\n const providerTransactionId =\r\n formSubmissionPayment.paymentTransaction?.nswGovPayPaymentReference\r\n const providerReceiptNumber =\r\n formSubmissionPayment.paymentTransaction?.agencyCompletionPayment\r\n ?.paymentCompletionReference\r\n\r\n return {\r\n status: formSubmissionPayment.status,\r\n ...(providerTransactionId ? { providerTransactionId } : {}),\r\n ...(providerReceiptNumber ? { providerReceiptNumber } : {}),\r\n }\r\n}\r\n\r\nfunction getDisplayDetails(\r\n formSubmissionPayment: NSWGovPayFormSubmissionPayment,\r\n {\r\n formatCurrency,\r\n formatDateTime,\r\n }: PaymentDisplayFormatters,\r\n): PaymentDisplayDetailsResult | undefined {\r\n const { paymentTransaction } = formSubmissionPayment\r\n if (!paymentTransaction || !paymentTransaction.agencyCompletionPayment) {\r\n return\r\n }\r\n\r\n const amount = {\r\n value: paymentTransaction.agencyCompletionPayment.amount,\r\n formatted: formatCurrency(\r\n paymentTransaction.agencyCompletionPayment.amount,\r\n ),\r\n }\r\n return {\r\n amount,\r\n paymentDisplayDetails: [\r\n {\r\n key: 'NSW_GOV_PAY_COMPLETION_REFERENCE',\r\n label: 'Completion Reference',\r\n value:\r\n paymentTransaction.agencyCompletionPayment.paymentCompletionReference,\r\n },\r\n {\r\n key: 'NSW_GOV_PAY_PAYMENT_REFERENCE',\r\n label: 'Payment Reference',\r\n value: paymentTransaction.agencyCompletionPayment.paymentReference,\r\n },\r\n {\r\n key: 'NSW_GOV_PAY_BANK_REFERENCE',\r\n label: 'Bank Reference',\r\n value: paymentTransaction.agencyCompletionPayment.bankReference,\r\n },\r\n {\r\n key: 'NSW_GOV_PAY_PAYMENT_METHOD',\r\n label: 'Payment Method',\r\n value: paymentTransaction.agencyCompletionPayment.paymentMethod,\r\n },\r\n ...(paymentTransaction.agencyCompletionPayment.paymentMethod === 'BPAY' &&\r\n paymentTransaction.agencyCompletionPayment.bPay?.billerCode\r\n ? [\r\n {\r\n key: 'NSW_GOV_PAY_BPAY_BILLER_CODE' as const,\r\n label: 'BPay Biller Code',\r\n value:\r\n paymentTransaction.agencyCompletionPayment.bPay.billerCode,\r\n },\r\n ]\r\n : []),\r\n ...(paymentTransaction.agencyCompletionPayment.paymentMethod === 'CARD'\r\n ? [\r\n {\r\n key: 'NSW_GOV_PAY_CREDIT_CARD_NUMBER' as const,\r\n label: 'Card Number',\r\n value: `xxxx xxxx xxxx ${paymentTransaction.agencyCompletionPayment.card?.last4Digits}`,\r\n },\r\n ]\r\n : []),\r\n {\r\n key: 'NSW_GOV_PAY_AMOUNT',\r\n label: 'Amount',\r\n value: amount.formatted,\r\n },\r\n {\r\n key: 'NSW_GOV_PAY_SURCHARGE_AMOUNT',\r\n label: 'Surcharge Amount',\r\n value: formatCurrency(\r\n paymentTransaction.agencyCompletionPayment.surcharge,\r\n ),\r\n },\r\n {\r\n key: 'NSW_GOV_PAY_SURCHARGE_GST',\r\n label: 'Surcharge GST',\r\n value: formatCurrency(\r\n paymentTransaction.agencyCompletionPayment.surchargeGst,\r\n ),\r\n },\r\n {\r\n key: 'NSW_GOV_PAY_CREATED_DATE_TIME',\r\n label: 'Created Date Time',\r\n value: formatDateTime(formSubmissionPayment.createdAt),\r\n },\r\n ],\r\n }\r\n}\r\n\r\nconst nswGovPayPaymentProvider: PaymentProvider<NSWGovPayFormSubmissionPayment> =\r\n {\r\n getFormStorePayment,\r\n getDisplayDetails,\r\n }\r\n\r\nexport default nswGovPayPaymentProvider\r\n"]}
@@ -0,0 +1,7 @@
1
+ import { SubmissionTypes } from '@oneblink/types';
2
+ import { PaymentProvider } from '../types.js';
3
+ type WestpacQuickStreamFormSubmissionPayment = Extract<SubmissionTypes.FormSubmissionPayment, {
4
+ type: 'WESTPAC_QUICK_STREAM';
5
+ }>;
6
+ declare const westpacQuickStreamPaymentProvider: PaymentProvider<WestpacQuickStreamFormSubmissionPayment>;
7
+ export default westpacQuickStreamPaymentProvider;
@@ -0,0 +1,64 @@
1
+ function getFormStorePayment(formSubmissionPayment) {
2
+ const providerTransactionId = formSubmissionPayment.paymentTransaction?.paymentReferenceNumber;
3
+ const providerReceiptNumber = formSubmissionPayment.paymentTransaction?.receiptNumber;
4
+ return {
5
+ status: formSubmissionPayment.status,
6
+ ...(providerTransactionId ? { providerTransactionId } : {}),
7
+ ...(providerReceiptNumber ? { providerReceiptNumber } : {}),
8
+ };
9
+ }
10
+ function getDisplayDetails(formSubmissionPayment, { formatCurrency, formatDate }) {
11
+ const { paymentTransaction } = formSubmissionPayment;
12
+ if (!paymentTransaction) {
13
+ return;
14
+ }
15
+ const amount = {
16
+ value: paymentTransaction.totalAmount.amount,
17
+ formatted: formatCurrency(parseFloat(paymentTransaction.totalAmount.amount.toString())),
18
+ };
19
+ return {
20
+ amount,
21
+ paymentDisplayDetails: [
22
+ {
23
+ key: 'WESTPAC_QUICK_STREAM_RECEIPT_NUMBER',
24
+ label: 'Receipt Number',
25
+ value: paymentTransaction.receiptNumber,
26
+ },
27
+ {
28
+ key: 'WESTPAC_QUICK_STREAM_PAYMENT_REFERENCE_NUMBER',
29
+ label: 'Payment Reference',
30
+ value: paymentTransaction.paymentReferenceNumber,
31
+ },
32
+ {
33
+ key: 'WESTPAC_QUICK_STREAM_CUSTOMER_REFERENCE_NUMBER',
34
+ label: 'Customer Reference Number',
35
+ value: paymentTransaction.customerReferenceNumber,
36
+ },
37
+ {
38
+ key: 'WESTPAC_QUICK_STREAM_AMOUNT',
39
+ label: 'Amount',
40
+ value: amount.formatted,
41
+ },
42
+ ...(paymentTransaction.surchargeAmount.amount
43
+ ? [
44
+ {
45
+ key: 'WESTPAC_QUICK_STREAM_SURCHARGE_AMOUNT',
46
+ label: 'Surcharge Amount',
47
+ value: formatCurrency(parseFloat(paymentTransaction.surchargeAmount.amount.toString())),
48
+ },
49
+ ]
50
+ : []),
51
+ {
52
+ key: 'WESTPAC_QUICK_STREAM_SETTLEMENT_DATE',
53
+ label: 'Settlement Date',
54
+ value: formatDate(paymentTransaction.settlementDate),
55
+ },
56
+ ],
57
+ };
58
+ }
59
+ const westpacQuickStreamPaymentProvider = {
60
+ getFormStorePayment,
61
+ getDisplayDetails,
62
+ };
63
+ export default westpacQuickStreamPaymentProvider;
64
+ //# sourceMappingURL=westpacQuickStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"westpacQuickStream.js","sourceRoot":"","sources":["../../../src/paymentService/providers/westpacQuickStream.ts"],"names":[],"mappings":"AAaA,SAAS,mBAAmB,CAC1B,qBAA8D;IAE9D,MAAM,qBAAqB,GACzB,qBAAqB,CAAC,kBAAkB,EAAE,sBAAsB,CAAA;IAClE,MAAM,qBAAqB,GACzB,qBAAqB,CAAC,kBAAkB,EAAE,aAAa,CAAA;IAEzD,OAAO;QACL,MAAM,EAAE,qBAAqB,CAAC,MAAM;QACpC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,qBAA8D,EAC9D,EAAE,cAAc,EAAE,UAAU,EAA4B;IAExD,MAAM,EAAE,kBAAkB,EAAE,GAAG,qBAAqB,CAAA;IACpD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAM;IACR,CAAC;IAED,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,kBAAkB,CAAC,WAAW,CAAC,MAAM;QAC5C,SAAS,EAAE,cAAc,CACvB,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAC7D;KACF,CAAA;IAED,OAAO;QACL,MAAM;QACN,qBAAqB,EAAE;YACrB;gBACE,GAAG,EAAE,qCAAqC;gBAC1C,KAAK,EAAE,gBAAgB;gBACvB,KAAK,EAAE,kBAAkB,CAAC,aAAa;aACxC;YACD;gBACE,GAAG,EAAE,+CAA+C;gBACpD,KAAK,EAAE,mBAAmB;gBAC1B,KAAK,EAAE,kBAAkB,CAAC,sBAAsB;aACjD;YACD;gBACE,GAAG,EAAE,gDAAgD;gBACrD,KAAK,EAAE,2BAA2B;gBAClC,KAAK,EAAE,kBAAkB,CAAC,uBAAuB;aAClD;YACD;gBACE,GAAG,EAAE,6BAA6B;gBAClC,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,MAAM,CAAC,SAAS;aACxB;YACD,GAAG,CAAC,kBAAkB,CAAC,eAAe,CAAC,MAAM;gBAC3C,CAAC,CAAC;oBACE;wBACE,GAAG,EAAE,uCAAgD;wBACrD,KAAK,EAAE,kBAAkB;wBACzB,KAAK,EAAE,cAAc,CACnB,UAAU,CACR,kBAAkB,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CACrD,CACF;qBACF;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;YACP;gBACE,GAAG,EAAE,sCAAsC;gBAC3C,KAAK,EAAE,iBAAiB;gBACxB,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,cAAc,CAAC;aACrD;SACF;KACF,CAAA;AACH,CAAC;AAED,MAAM,iCAAiC,GACrC;IACE,mBAAmB;IACnB,iBAAiB;CAClB,CAAA;AAEH,eAAe,iCAAiC,CAAA","sourcesContent":["import { SubmissionTypes } from '@oneblink/types'\r\nimport {\r\n FormStorePayment,\r\n PaymentDisplayDetailsResult,\r\n PaymentDisplayFormatters,\r\n PaymentProvider,\r\n} from '../types.js'\r\n\r\ntype WestpacQuickStreamFormSubmissionPayment = Extract<\r\n SubmissionTypes.FormSubmissionPayment,\r\n { type: 'WESTPAC_QUICK_STREAM' }\r\n>\r\n\r\nfunction getFormStorePayment(\r\n formSubmissionPayment: WestpacQuickStreamFormSubmissionPayment,\r\n): FormStorePayment {\r\n const providerTransactionId =\r\n formSubmissionPayment.paymentTransaction?.paymentReferenceNumber\r\n const providerReceiptNumber =\r\n formSubmissionPayment.paymentTransaction?.receiptNumber\r\n\r\n return {\r\n status: formSubmissionPayment.status,\r\n ...(providerTransactionId ? { providerTransactionId } : {}),\r\n ...(providerReceiptNumber ? { providerReceiptNumber } : {}),\r\n }\r\n}\r\n\r\nfunction getDisplayDetails(\r\n formSubmissionPayment: WestpacQuickStreamFormSubmissionPayment,\r\n { formatCurrency, formatDate }: PaymentDisplayFormatters,\r\n): PaymentDisplayDetailsResult | undefined {\r\n const { paymentTransaction } = formSubmissionPayment\r\n if (!paymentTransaction) {\r\n return\r\n }\r\n\r\n const amount = {\r\n value: paymentTransaction.totalAmount.amount,\r\n formatted: formatCurrency(\r\n parseFloat(paymentTransaction.totalAmount.amount.toString()),\r\n ),\r\n }\r\n\r\n return {\r\n amount,\r\n paymentDisplayDetails: [\r\n {\r\n key: 'WESTPAC_QUICK_STREAM_RECEIPT_NUMBER',\r\n label: 'Receipt Number',\r\n value: paymentTransaction.receiptNumber,\r\n },\r\n {\r\n key: 'WESTPAC_QUICK_STREAM_PAYMENT_REFERENCE_NUMBER',\r\n label: 'Payment Reference',\r\n value: paymentTransaction.paymentReferenceNumber,\r\n },\r\n {\r\n key: 'WESTPAC_QUICK_STREAM_CUSTOMER_REFERENCE_NUMBER',\r\n label: 'Customer Reference Number',\r\n value: paymentTransaction.customerReferenceNumber,\r\n },\r\n {\r\n key: 'WESTPAC_QUICK_STREAM_AMOUNT',\r\n label: 'Amount',\r\n value: amount.formatted,\r\n },\r\n ...(paymentTransaction.surchargeAmount.amount\r\n ? [\r\n {\r\n key: 'WESTPAC_QUICK_STREAM_SURCHARGE_AMOUNT' as const,\r\n label: 'Surcharge Amount',\r\n value: formatCurrency(\r\n parseFloat(\r\n paymentTransaction.surchargeAmount.amount.toString(),\r\n ),\r\n ),\r\n },\r\n ]\r\n : []),\r\n {\r\n key: 'WESTPAC_QUICK_STREAM_SETTLEMENT_DATE',\r\n label: 'Settlement Date',\r\n value: formatDate(paymentTransaction.settlementDate),\r\n },\r\n ],\r\n }\r\n}\r\n\r\nconst westpacQuickStreamPaymentProvider: PaymentProvider<WestpacQuickStreamFormSubmissionPayment> =\r\n {\r\n getFormStorePayment,\r\n getDisplayDetails,\r\n }\r\n\r\nexport default westpacQuickStreamPaymentProvider\r\n"]}
@@ -0,0 +1,25 @@
1
+ import { SubmissionEventTypes, SubmissionTypes } from '@oneblink/types';
2
+ import { ReplaceInjectablesFormatters } from '../submissionService.js';
3
+ export type FormStorePayment = NonNullable<SubmissionTypes.FormStoreRecord['payment']>;
4
+ export type PaymentDisplayDetail = {
5
+ label: string;
6
+ value: string;
7
+ /** A unique key across payment providers to identify the detail */
8
+ key: SubmissionEventTypes.PaymentDisplayDetailKey;
9
+ };
10
+ export type PaymentDisplayDetailsResult = {
11
+ amount: {
12
+ value: number;
13
+ formatted: string;
14
+ };
15
+ paymentDisplayDetails: PaymentDisplayDetail[];
16
+ };
17
+ export type PaymentDisplayFormatters = Pick<ReplaceInjectablesFormatters, 'formatCurrency' | 'formatDate' | 'formatDateTime'>;
18
+ /**
19
+ * Pure transforms for a payment provider. Implementations must not perform
20
+ * HTTP or other I/O — they only accept known types and return values.
21
+ */
22
+ export interface PaymentProvider<T extends SubmissionTypes.FormSubmissionPayment> {
23
+ getFormStorePayment(formSubmissionPayment: T): FormStorePayment;
24
+ getDisplayDetails(formSubmissionPayment: T, formatters: PaymentDisplayFormatters): PaymentDisplayDetailsResult | undefined;
25
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/paymentService/types.ts"],"names":[],"mappings":"","sourcesContent":["import { SubmissionEventTypes, SubmissionTypes } from '@oneblink/types'\r\nimport { ReplaceInjectablesFormatters } from '../submissionService.js'\r\n\r\nexport type FormStorePayment = NonNullable<\r\n SubmissionTypes.FormStoreRecord['payment']\r\n>\r\n\r\nexport type PaymentDisplayDetail = {\r\n label: string\r\n value: string\r\n /** A unique key across payment providers to identify the detail */\r\n key: SubmissionEventTypes.PaymentDisplayDetailKey\r\n}\r\n\r\nexport type PaymentDisplayDetailsResult = {\r\n amount: {\r\n value: number\r\n formatted: string\r\n }\r\n paymentDisplayDetails: PaymentDisplayDetail[]\r\n}\r\n\r\nexport type PaymentDisplayFormatters = Pick<\r\n ReplaceInjectablesFormatters,\r\n 'formatCurrency' | 'formatDate' | 'formatDateTime'\r\n>\r\n\r\n/**\r\n * Pure transforms for a payment provider. Implementations must not perform\r\n * HTTP or other I/O — they only accept known types and return values.\r\n */\r\nexport interface PaymentProvider<\r\n T extends SubmissionTypes.FormSubmissionPayment,\r\n> {\r\n getFormStorePayment(formSubmissionPayment: T): FormStorePayment\r\n getDisplayDetails(\r\n formSubmissionPayment: T,\r\n formatters: PaymentDisplayFormatters,\r\n ): PaymentDisplayDetailsResult | undefined\r\n}\r\n"]}
@@ -1,6 +1,7 @@
1
1
  import { FormTypes, SubmissionEventTypes, SubmissionTypes } from '@oneblink/types';
2
- import { ReplaceInjectablesFormatters } from './submissionService.js';
3
2
  import { AddOffsetToDate, EndOfDay, ParseDayOnlyDate, StartOfDay } from './conditionalLogicService/types.js';
3
+ import type { FormStorePayment, PaymentDisplayDetail, PaymentDisplayFormatters, PaymentDisplayDetailsResult } from './paymentService/types.js';
4
+ export { FormStorePayment, PaymentDisplayDetail, PaymentDisplayDetailsResult, PaymentDisplayFormatters, };
4
5
  /**
5
6
  * Examine a submission and its form definition to validate whether a payment
6
7
  * workflow event needs to run.
@@ -48,12 +49,6 @@ export declare function checkForPaymentEvent({ definition, submission, submissio
48
49
  paymentSubmissionEvent: SubmissionEventTypes.FormPaymentEvent;
49
50
  amount: number;
50
51
  } | undefined;
51
- type PaymentDisplayDetail = {
52
- label: string;
53
- value: string;
54
- /** A unique key across payment providers to identify the detail */
55
- key: SubmissionEventTypes.PaymentDisplayDetailKey;
56
- };
57
52
  /**
58
53
  * Retrieve an array of detail items from a form submission payment.
59
54
  *
@@ -77,11 +72,20 @@ type PaymentDisplayDetail = {
77
72
  */
78
73
  export declare const getDisplayDetailsFromFormSubmissionPayment: (
79
74
  /** The form submission payment to get the details from */
80
- formSubmissionPayment: SubmissionTypes.FormSubmissionPayment, { formatCurrency, formatDateTime, formatDate, }: Pick<ReplaceInjectablesFormatters, "formatCurrency" | "formatDate" | "formatDateTime">) => {
81
- amount: {
82
- value: number;
83
- formatted: string;
84
- };
85
- paymentDisplayDetails: PaymentDisplayDetail[];
86
- } | undefined;
87
- export {};
75
+ formSubmissionPayment: SubmissionTypes.FormSubmissionPayment, formatters: PaymentDisplayFormatters) => PaymentDisplayDetailsResult | undefined;
76
+ /**
77
+ * Map a form submission payment to the Form Store payment property.
78
+ *
79
+ * #### Example
80
+ *
81
+ * ```js
82
+ * const formStorePayment =
83
+ * paymentService.getFormStorePaymentFromFormSubmissionPayment(
84
+ * formSubmissionPayment,
85
+ * )
86
+ * ```
87
+ *
88
+ * @param formSubmissionPayment
89
+ * @returns
90
+ */
91
+ export declare function getFormStorePaymentFromFormSubmissionPayment(formSubmissionPayment: SubmissionTypes.FormSubmissionPayment): FormStorePayment;
@@ -1,5 +1,6 @@
1
1
  import { conditionalLogicService, formElementsService } from './index.js';
2
- import { getRootElementValueById, } from './submissionService.js';
2
+ import { getRootElementValueById } from './submissionService.js';
3
+ import getPaymentProvider from './paymentService/getPaymentProvider.js';
3
4
  /**
4
5
  * Examine a submission and its form definition to validate whether a payment
5
6
  * workflow event needs to run.
@@ -95,290 +96,25 @@ export function checkForPaymentEvent({ definition, submission, submissionTimesta
95
96
  */
96
97
  export const getDisplayDetailsFromFormSubmissionPayment = (
97
98
  /** The form submission payment to get the details from */
98
- formSubmissionPayment, { formatCurrency, formatDateTime, formatDate, }) => {
99
- switch (formSubmissionPayment.type) {
100
- case 'NSW_GOV_PAY': {
101
- const { paymentTransaction } = formSubmissionPayment;
102
- if (!paymentTransaction || !paymentTransaction.agencyCompletionPayment) {
103
- return;
104
- }
105
- const amount = {
106
- value: paymentTransaction.agencyCompletionPayment.amount,
107
- formatted: formatCurrency(paymentTransaction.agencyCompletionPayment.amount),
108
- };
109
- return {
110
- amount,
111
- paymentDisplayDetails: [
112
- {
113
- key: 'NSW_GOV_PAY_COMPLETION_REFERENCE',
114
- label: 'Completion Reference',
115
- value: paymentTransaction.agencyCompletionPayment
116
- .paymentCompletionReference,
117
- },
118
- {
119
- key: 'NSW_GOV_PAY_PAYMENT_REFERENCE',
120
- label: 'Payment Reference',
121
- value: paymentTransaction.agencyCompletionPayment.paymentReference,
122
- },
123
- {
124
- key: 'NSW_GOV_PAY_BANK_REFERENCE',
125
- label: 'Bank Reference',
126
- value: paymentTransaction.agencyCompletionPayment.bankReference,
127
- },
128
- {
129
- key: 'NSW_GOV_PAY_PAYMENT_METHOD',
130
- label: 'Payment Method',
131
- value: paymentTransaction.agencyCompletionPayment.paymentMethod,
132
- },
133
- ...(paymentTransaction.agencyCompletionPayment.paymentMethod ===
134
- 'BPAY' &&
135
- paymentTransaction.agencyCompletionPayment.bPay?.billerCode
136
- ? [
137
- {
138
- key: 'NSW_GOV_PAY_BPAY_BILLER_CODE',
139
- label: 'BPay Biller Code',
140
- value: paymentTransaction.agencyCompletionPayment.bPay.billerCode,
141
- },
142
- ]
143
- : []),
144
- ...(paymentTransaction.agencyCompletionPayment.paymentMethod ===
145
- 'CARD'
146
- ? [
147
- {
148
- key: 'NSW_GOV_PAY_CREDIT_CARD_NUMBER',
149
- label: 'Card Number',
150
- value: `xxxx xxxx xxxx ${paymentTransaction.agencyCompletionPayment.card?.last4Digits}`,
151
- },
152
- ]
153
- : []),
154
- {
155
- key: 'NSW_GOV_PAY_AMOUNT',
156
- label: 'Amount',
157
- value: amount.formatted,
158
- },
159
- {
160
- key: 'NSW_GOV_PAY_SURCHARGE_AMOUNT',
161
- label: 'Surcharge Amount',
162
- value: formatCurrency(paymentTransaction.agencyCompletionPayment.surcharge),
163
- },
164
- {
165
- key: 'NSW_GOV_PAY_SURCHARGE_GST',
166
- label: 'Surcharge GST',
167
- value: formatCurrency(paymentTransaction.agencyCompletionPayment.surchargeGst),
168
- },
169
- {
170
- key: 'NSW_GOV_PAY_CREATED_DATE_TIME',
171
- label: 'Created Date Time',
172
- value: formatDateTime(formSubmissionPayment.createdAt),
173
- },
174
- ],
175
- };
176
- }
177
- case 'BPOINT': {
178
- const { paymentTransaction } = formSubmissionPayment;
179
- if (!paymentTransaction) {
180
- return;
181
- }
182
- const amountValue = paymentTransaction.Amount / 100;
183
- const amount = {
184
- value: amountValue,
185
- formatted: formatCurrency(amountValue),
186
- };
187
- return {
188
- amount,
189
- paymentDisplayDetails: [
190
- {
191
- key: 'BPOINT_RECEIPT_NUMBER',
192
- label: 'Receipt Number',
193
- value: paymentTransaction.ReceiptNumber,
194
- },
195
- {
196
- key: 'BPOINT_CRN1',
197
- label: 'CRN 1',
198
- value: paymentTransaction.Crn1,
199
- },
200
- {
201
- key: 'BPOINT_CRN2',
202
- label: 'CRN 2',
203
- value: paymentTransaction.Crn2,
204
- },
205
- {
206
- key: 'BPOINT_CRN3',
207
- label: 'CRN 3',
208
- value: paymentTransaction.Crn3,
209
- },
210
- {
211
- key: 'BPOINT_BILLER_CODE',
212
- label: 'Biller Code',
213
- value: paymentTransaction.BillerCode,
214
- },
215
- {
216
- key: 'BPOINT_CREDIT_CARD_MASK',
217
- label: 'Card Number',
218
- value: paymentTransaction.CardDetails.MaskedCardNumber,
219
- },
220
- {
221
- key: 'BPOINT_AMOUNT',
222
- label: 'Amount',
223
- value: amount.formatted,
224
- },
225
- {
226
- key: 'BPOINT_SURCHARGE_AMOUNT',
227
- label: 'Surcharge Amount',
228
- value: formatCurrency(paymentTransaction.AmountSurcharge / 100),
229
- },
230
- {
231
- key: 'BPOINT_PROCESSED_DATE_TIME',
232
- label: 'Processed Date Time',
233
- value: formatDateTime(paymentTransaction.ProcessedDateTime),
234
- },
235
- ],
236
- };
237
- }
238
- case 'CP_PAY': {
239
- const { paymentTransaction } = formSubmissionPayment;
240
- if (!paymentTransaction) {
241
- return;
242
- }
243
- const determineDetails = () => {
244
- switch (paymentTransaction.cpPayVersion) {
245
- case 'v2': {
246
- return {
247
- transactionId: paymentTransaction.result.id,
248
- orderNumber: paymentTransaction.result.externalReferenceId ?? undefined,
249
- paymentType: paymentTransaction.result.paymentType,
250
- creditCardMask: paymentTransaction.result.lastFour
251
- ? `xxxx xxxx xxxx ${paymentTransaction.result.lastFour}`
252
- : undefined,
253
- amount: paymentTransaction.result.amount !== undefined
254
- ? {
255
- value: paymentTransaction.result.amount,
256
- formatted: formatCurrency(paymentTransaction.result.amount),
257
- }
258
- : {
259
- value: NaN,
260
- formatted: 'Unknown',
261
- },
262
- createdDateTime: paymentTransaction.result.createdOnUtc,
263
- };
264
- }
265
- default: {
266
- return {
267
- transactionId: paymentTransaction.transactionId,
268
- orderNumber: paymentTransaction.orderNumber ?? undefined,
269
- paymentType: paymentTransaction.paymentTypeId === 1
270
- ? 'Credit/Debit Card'
271
- : paymentTransaction.paymentTypeId === 2
272
- ? 'ACH'
273
- : undefined,
274
- creditCardMask: paymentTransaction.lastFour
275
- ? `xxxx xxxx xxxx ${paymentTransaction.lastFour}`
276
- : undefined,
277
- amount: {
278
- value: paymentTransaction.amount,
279
- formatted: formatCurrency(paymentTransaction.amount),
280
- },
281
- createdDateTime: paymentTransaction.createdAt,
282
- };
283
- }
284
- }
285
- };
286
- const { transactionId, orderNumber, paymentType, creditCardMask, amount, createdDateTime, } = determineDetails();
287
- const paymentDisplayDetails = [];
288
- if (transactionId) {
289
- paymentDisplayDetails.push({
290
- key: 'CP_PAY_TRANSACTION_ID',
291
- label: 'Transaction Id',
292
- value: transactionId,
293
- });
294
- }
295
- if (orderNumber) {
296
- paymentDisplayDetails.push({
297
- key: 'CP_PAY_ORDER_NUMBER',
298
- label: 'Order Number',
299
- value: orderNumber,
300
- });
301
- }
302
- if (paymentType) {
303
- paymentDisplayDetails.push({
304
- key: 'CP_PAY_PAYMENT_TYPE',
305
- label: 'Payment Type',
306
- value: paymentType,
307
- });
308
- }
309
- if (creditCardMask) {
310
- paymentDisplayDetails.push({
311
- key: 'CP_PAY_CREDIT_CARD_MASK',
312
- label: 'Card Number',
313
- value: creditCardMask,
314
- });
315
- }
316
- paymentDisplayDetails.push({
317
- key: 'CP_PAY_AMOUNT',
318
- label: 'Amount',
319
- value: amount.formatted,
320
- });
321
- if (createdDateTime) {
322
- paymentDisplayDetails.push({
323
- key: 'CP_PAY_CREATED_DATE_TIME',
324
- label: 'Created At',
325
- value: formatDateTime(createdDateTime),
326
- });
327
- }
328
- return {
329
- amount,
330
- paymentDisplayDetails,
331
- };
332
- }
333
- case 'WESTPAC_QUICK_STREAM': {
334
- const { paymentTransaction } = formSubmissionPayment;
335
- if (!paymentTransaction) {
336
- return;
337
- }
338
- const amount = {
339
- value: paymentTransaction.totalAmount.amount,
340
- formatted: formatCurrency(parseFloat(paymentTransaction.totalAmount.amount.toString())),
341
- };
342
- return {
343
- amount,
344
- paymentDisplayDetails: [
345
- {
346
- key: 'WESTPAC_QUICK_STREAM_RECEIPT_NUMBER',
347
- label: 'Receipt Number',
348
- value: paymentTransaction.receiptNumber,
349
- },
350
- {
351
- key: 'WESTPAC_QUICK_STREAM_PAYMENT_REFERENCE_NUMBER',
352
- label: 'Payment Reference',
353
- value: paymentTransaction.paymentReferenceNumber,
354
- },
355
- {
356
- key: 'WESTPAC_QUICK_STREAM_CUSTOMER_REFERENCE_NUMBER',
357
- label: 'Customer Reference Number',
358
- value: paymentTransaction.customerReferenceNumber,
359
- },
360
- {
361
- key: 'WESTPAC_QUICK_STREAM_AMOUNT',
362
- label: 'Amount',
363
- value: amount.formatted,
364
- },
365
- ...(paymentTransaction.surchargeAmount.amount
366
- ? [
367
- {
368
- key: 'WESTPAC_QUICK_STREAM_SURCHARGE_AMOUNT',
369
- label: 'Surcharge Amount',
370
- value: formatCurrency(parseFloat(paymentTransaction.surchargeAmount.amount.toString())),
371
- },
372
- ]
373
- : []),
374
- {
375
- key: 'WESTPAC_QUICK_STREAM_SETTLEMENT_DATE',
376
- label: 'Settlement Date',
377
- value: formatDate(paymentTransaction.settlementDate),
378
- },
379
- ],
380
- };
381
- }
382
- }
99
+ formSubmissionPayment, formatters) => {
100
+ return getPaymentProvider(formSubmissionPayment.type).getDisplayDetails(formSubmissionPayment, formatters);
383
101
  };
102
+ /**
103
+ * Map a form submission payment to the Form Store payment property.
104
+ *
105
+ * #### Example
106
+ *
107
+ * ```js
108
+ * const formStorePayment =
109
+ * paymentService.getFormStorePaymentFromFormSubmissionPayment(
110
+ * formSubmissionPayment,
111
+ * )
112
+ * ```
113
+ *
114
+ * @param formSubmissionPayment
115
+ * @returns
116
+ */
117
+ export function getFormStorePaymentFromFormSubmissionPayment(formSubmissionPayment) {
118
+ return getPaymentProvider(formSubmissionPayment.type).getFormStorePayment(formSubmissionPayment);
119
+ }
384
120
  //# sourceMappingURL=paymentService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paymentService.js","sourceRoot":"","sources":["../src/paymentService.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACzE,OAAO,EACL,uBAAuB,GAExB,MAAM,wBAAwB,CAAA;AAQ/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,oBAAoB,CAAC,EACnC,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,QAAQ,GAcT;IAMC,MAAM,uBAAuB,GAAG,UAAU,CAAC,aAAa,IAAI,EAAE,CAAA;IAC9D,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,IAAI,CACzD,CAAC,sBAAsB,EAAE,EAAE;QACzB,OAAO,CACL,sBAAsB;YACtB,uBAAuB,CAAC,6BAA6B,CAAC;gBACpD,aAAa,EAAE,CAAC,CAAC,sBAAsB,CAAC,oBAAoB;gBAC5D,gCAAgC,EAC9B,CAAC,CAAC,sBAAsB,CAAC,yCAAyC;gBACpE,qBAAqB,EACnB,sBAAsB,CAAC,8BAA8B,IAAI,EAAE;gBAC7D,UAAU,EAAE,UAAU;gBACtB,YAAY,EAAE,UAAU,CAAC,QAAQ;gBACjC,mBAAmB;gBACnB,gBAAgB;gBAChB,aAAa;gBACb,UAAU;gBACV,QAAQ;aACT,CAAC,CACH,CAAA;IACH,CAAC,CACF,CAAA;IAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,OAAM;IACR,CAAC;IACD,OAAO,CAAC,GAAG,CACT,uEAAuE,CACxE,CAAA;IAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,eAAe,CACvD,UAAU,CAAC,QAAQ,EACnB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,sBAAsB,CAAC,aAAa,CAAC,SAAS,CAC3E,CAAA;IACD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CACT,2FAA2F,CAC5F,CAAA;QACD,MAAM,IAAI,KAAK,CACb,6KAA6K,CAC9K,CAAA;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iDAAiD,EAAE,aAAa,CAAC,CAAA;IAE7E,MAAM,MAAM,GAAG,uBAAuB,CACpC,aAAa,CAAC,EAAE,EAChB,UAAU,CAAC,QAAQ,EACnB,UAAU,CACX,CAAA;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CACT,wHAAwH,CACzH,CAAA;QACD,OAAM;IACR,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CACT,oFAAoF,CACrF,CAAA;QACD,MAAM,IAAI,KAAK,CACb,wKAAwK,CACzK,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG;QACb,sBAAsB;QACtB,MAAM;KACP,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AASD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG;AACxD,0DAA0D;AAC1D,qBAA4D,EAC5D,EACE,cAAc,EACd,cAAc,EACd,UAAU,GAIX,EASW,EAAE;IACd,QAAQ,qBAAqB,CAAC,IAAI,EAAE,CAAC;QACnC,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,kBAAkB,EAAE,GAAG,qBAAqB,CAAA;YACpD,IAAI,CAAC,kBAAkB,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;gBACvE,OAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG;gBACb,KAAK,EAAE,kBAAkB,CAAC,uBAAuB,CAAC,MAAM;gBACxD,SAAS,EAAE,cAAc,CACvB,kBAAkB,CAAC,uBAAuB,CAAC,MAAM,CAClD;aACF,CAAA;YACD,OAAO;gBACL,MAAM;gBACN,qBAAqB,EAAE;oBACrB;wBACE,GAAG,EAAE,kCAAkC;wBACvC,KAAK,EAAE,sBAAsB;wBAC7B,KAAK,EACH,kBAAkB,CAAC,uBAAuB;6BACvC,0BAA0B;qBAChC;oBACD;wBACE,GAAG,EAAE,+BAA+B;wBACpC,KAAK,EAAE,mBAAmB;wBAC1B,KAAK,EAAE,kBAAkB,CAAC,uBAAuB,CAAC,gBAAgB;qBACnE;oBACD;wBACE,GAAG,EAAE,4BAA4B;wBACjC,KAAK,EAAE,gBAAgB;wBACvB,KAAK,EAAE,kBAAkB,CAAC,uBAAuB,CAAC,aAAa;qBAChE;oBACD;wBACE,GAAG,EAAE,4BAA4B;wBACjC,KAAK,EAAE,gBAAgB;wBACvB,KAAK,EAAE,kBAAkB,CAAC,uBAAuB,CAAC,aAAa;qBAChE;oBACD,GAAG,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,aAAa;wBAC1D,MAAM;wBACR,kBAAkB,CAAC,uBAAuB,CAAC,IAAI,EAAE,UAAU;wBACzD,CAAC,CAAC;4BACE;gCACE,GAAG,EAAE,8BAAuC;gCAC5C,KAAK,EAAE,kBAAkB;gCACzB,KAAK,EACH,kBAAkB,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU;6BAC7D;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,aAAa;wBAC5D,MAAM;wBACJ,CAAC,CAAC;4BACE;gCACE,GAAG,EAAE,gCAAyC;gCAC9C,KAAK,EAAE,aAAa;gCACpB,KAAK,EAAE,kBAAkB,kBAAkB,CAAC,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE;6BACxF;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP;wBACE,GAAG,EAAE,oBAAoB;wBACzB,KAAK,EAAE,QAAQ;wBACf,KAAK,EAAE,MAAM,CAAC,SAAS;qBACxB;oBACD;wBACE,GAAG,EAAE,8BAA8B;wBACnC,KAAK,EAAE,kBAAkB;wBACzB,KAAK,EAAE,cAAc,CACnB,kBAAkB,CAAC,uBAAuB,CAAC,SAAS,CACrD;qBACF;oBACD;wBACE,GAAG,EAAE,2BAA2B;wBAChC,KAAK,EAAE,eAAe;wBACtB,KAAK,EAAE,cAAc,CACnB,kBAAkB,CAAC,uBAAuB,CAAC,YAAY,CACxD;qBACF;oBACD;wBACE,GAAG,EAAE,+BAA+B;wBACpC,KAAK,EAAE,mBAAmB;wBAC1B,KAAK,EAAE,cAAc,CAAC,qBAAqB,CAAC,SAAS,CAAC;qBACvD;iBACF;aACF,CAAA;QACH,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,kBAAkB,EAAE,GAAG,qBAAqB,CAAA;YACpD,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,OAAM;YACR,CAAC;YACD,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,GAAG,GAAG,CAAA;YACnD,MAAM,MAAM,GAAG;gBACb,KAAK,EAAE,WAAW;gBAClB,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC;aACvC,CAAA;YACD,OAAO;gBACL,MAAM;gBACN,qBAAqB,EAAE;oBACrB;wBACE,GAAG,EAAE,uBAAuB;wBAC5B,KAAK,EAAE,gBAAgB;wBACvB,KAAK,EAAE,kBAAkB,CAAC,aAAa;qBACxC;oBACD;wBACE,GAAG,EAAE,aAAa;wBAClB,KAAK,EAAE,OAAO;wBACd,KAAK,EAAE,kBAAkB,CAAC,IAAI;qBAC/B;oBACD;wBACE,GAAG,EAAE,aAAa;wBAClB,KAAK,EAAE,OAAO;wBACd,KAAK,EAAE,kBAAkB,CAAC,IAAI;qBAC/B;oBACD;wBACE,GAAG,EAAE,aAAa;wBAClB,KAAK,EAAE,OAAO;wBACd,KAAK,EAAE,kBAAkB,CAAC,IAAI;qBAC/B;oBACD;wBACE,GAAG,EAAE,oBAAoB;wBACzB,KAAK,EAAE,aAAa;wBACpB,KAAK,EAAE,kBAAkB,CAAC,UAAU;qBACrC;oBACD;wBACE,GAAG,EAAE,yBAAyB;wBAC9B,KAAK,EAAE,aAAa;wBACpB,KAAK,EAAE,kBAAkB,CAAC,WAAW,CAAC,gBAAgB;qBACvD;oBACD;wBACE,GAAG,EAAE,eAAe;wBACpB,KAAK,EAAE,QAAQ;wBACf,KAAK,EAAE,MAAM,CAAC,SAAS;qBACxB;oBACD;wBACE,GAAG,EAAE,yBAAyB;wBAC9B,KAAK,EAAE,kBAAkB;wBACzB,KAAK,EAAE,cAAc,CAAC,kBAAkB,CAAC,eAAe,GAAG,GAAG,CAAC;qBAChE;oBACD;wBACE,GAAG,EAAE,4BAA4B;wBACjC,KAAK,EAAE,qBAAqB;wBAC5B,KAAK,EAAE,cAAc,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;qBAC5D;iBACF;aACF,CAAA;QACH,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,kBAAkB,EAAE,GAAG,qBAAqB,CAAA;YACpD,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,OAAM;YACR,CAAC;YAED,MAAM,gBAAgB,GAAG,GAAG,EAAE;gBAC5B,QAAQ,kBAAkB,CAAC,YAAY,EAAE,CAAC;oBACxC,KAAK,IAAI,CAAC,CAAC,CAAC;wBACV,OAAO;4BACL,aAAa,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE;4BAC3C,WAAW,EACT,kBAAkB,CAAC,MAAM,CAAC,mBAAmB,IAAI,SAAS;4BAC5D,WAAW,EAAE,kBAAkB,CAAC,MAAM,CAAC,WAAW;4BAClD,cAAc,EAAE,kBAAkB,CAAC,MAAM,CAAC,QAAQ;gCAChD,CAAC,CAAC,kBAAkB,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAAE;gCACxD,CAAC,CAAC,SAAS;4BACb,MAAM,EACJ,kBAAkB,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;gCAC5C,CAAC,CAAC;oCACE,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,MAAM;oCACvC,SAAS,EAAE,cAAc,CACvB,kBAAkB,CAAC,MAAM,CAAC,MAAM,CACjC;iCACF;gCACH,CAAC,CAAC;oCACE,KAAK,EAAE,GAAG;oCACV,SAAS,EAAE,SAAS;iCACrB;4BACP,eAAe,EAAE,kBAAkB,CAAC,MAAM,CAAC,YAAY;yBACxD,CAAA;oBACH,CAAC;oBACD,OAAO,CAAC,CAAC,CAAC;wBACR,OAAO;4BACL,aAAa,EAAE,kBAAkB,CAAC,aAAa;4BAC/C,WAAW,EAAE,kBAAkB,CAAC,WAAW,IAAI,SAAS;4BACxD,WAAW,EACT,kBAAkB,CAAC,aAAa,KAAK,CAAC;gCACpC,CAAC,CAAC,mBAAmB;gCACrB,CAAC,CAAC,kBAAkB,CAAC,aAAa,KAAK,CAAC;oCACtC,CAAC,CAAC,KAAK;oCACP,CAAC,CAAC,SAAS;4BACjB,cAAc,EAAE,kBAAkB,CAAC,QAAQ;gCACzC,CAAC,CAAC,kBAAkB,kBAAkB,CAAC,QAAQ,EAAE;gCACjD,CAAC,CAAC,SAAS;4BACb,MAAM,EAAE;gCACN,KAAK,EAAE,kBAAkB,CAAC,MAAM;gCAChC,SAAS,EAAE,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC;6BACrD;4BACD,eAAe,EAAE,kBAAkB,CAAC,SAAS;yBAC9C,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC,CAAA;YAED,MAAM,EACJ,aAAa,EACb,WAAW,EACX,WAAW,EACX,cAAc,EACd,MAAM,EACN,eAAe,GAChB,GAAG,gBAAgB,EAAE,CAAA;YACtB,MAAM,qBAAqB,GAA2B,EAAE,CAAA;YACxD,IAAI,aAAa,EAAE,CAAC;gBAClB,qBAAqB,CAAC,IAAI,CAAC;oBACzB,GAAG,EAAE,uBAAuB;oBAC5B,KAAK,EAAE,gBAAgB;oBACvB,KAAK,EAAE,aAAa;iBACrB,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,qBAAqB,CAAC,IAAI,CAAC;oBACzB,GAAG,EAAE,qBAAqB;oBAC1B,KAAK,EAAE,cAAc;oBACrB,KAAK,EAAE,WAAW;iBACnB,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,qBAAqB,CAAC,IAAI,CAAC;oBACzB,GAAG,EAAE,qBAAqB;oBAC1B,KAAK,EAAE,cAAc;oBACrB,KAAK,EAAE,WAAW;iBACnB,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,cAAc,EAAE,CAAC;gBACnB,qBAAqB,CAAC,IAAI,CAAC;oBACzB,GAAG,EAAE,yBAAyB;oBAC9B,KAAK,EAAE,aAAa;oBACpB,KAAK,EAAE,cAAc;iBACtB,CAAC,CAAA;YACJ,CAAC;YACD,qBAAqB,CAAC,IAAI,CAAC;gBACzB,GAAG,EAAE,eAAe;gBACpB,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,MAAM,CAAC,SAAS;aACxB,CAAC,CAAA;YACF,IAAI,eAAe,EAAE,CAAC;gBACpB,qBAAqB,CAAC,IAAI,CAAC;oBACzB,GAAG,EAAE,0BAA0B;oBAC/B,KAAK,EAAE,YAAY;oBACnB,KAAK,EAAE,cAAc,CAAC,eAAe,CAAC;iBACvC,CAAC,CAAA;YACJ,CAAC;YAED,OAAO;gBACL,MAAM;gBACN,qBAAqB;aACtB,CAAA;QACH,CAAC;QACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC5B,MAAM,EAAE,kBAAkB,EAAE,GAAG,qBAAqB,CAAA;YACpD,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,OAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG;gBACb,KAAK,EAAE,kBAAkB,CAAC,WAAW,CAAC,MAAM;gBAC5C,SAAS,EAAE,cAAc,CACvB,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAC7D;aACF,CAAA;YAED,OAAO;gBACL,MAAM;gBACN,qBAAqB,EAAE;oBACrB;wBACE,GAAG,EAAE,qCAAqC;wBAC1C,KAAK,EAAE,gBAAgB;wBACvB,KAAK,EAAE,kBAAkB,CAAC,aAAa;qBACxC;oBACD;wBACE,GAAG,EAAE,+CAA+C;wBACpD,KAAK,EAAE,mBAAmB;wBAC1B,KAAK,EAAE,kBAAkB,CAAC,sBAAsB;qBACjD;oBACD;wBACE,GAAG,EAAE,gDAAgD;wBACrD,KAAK,EAAE,2BAA2B;wBAClC,KAAK,EAAE,kBAAkB,CAAC,uBAAuB;qBAClD;oBACD;wBACE,GAAG,EAAE,6BAA6B;wBAClC,KAAK,EAAE,QAAQ;wBACf,KAAK,EAAE,MAAM,CAAC,SAAS;qBACxB;oBACD,GAAG,CAAC,kBAAkB,CAAC,eAAe,CAAC,MAAM;wBAC3C,CAAC,CAAC;4BACE;gCACE,GAAG,EAAE,uCAAgD;gCACrD,KAAK,EAAE,kBAAkB;gCACzB,KAAK,EAAE,cAAc,CACnB,UAAU,CACR,kBAAkB,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CACrD,CACF;6BACF;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP;wBACE,GAAG,EAAE,sCAAsC;wBAC3C,KAAK,EAAE,iBAAiB;wBACxB,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,cAAc,CAAC;qBACrD;iBACF;aACF,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAA","sourcesContent":["import {\n FormTypes,\n SubmissionEventTypes,\n SubmissionTypes,\n} from '@oneblink/types'\nimport { conditionalLogicService, formElementsService } from './index.js'\nimport {\n getRootElementValueById,\n ReplaceInjectablesFormatters,\n} from './submissionService.js'\nimport {\n AddOffsetToDate,\n EndOfDay,\n ParseDayOnlyDate,\n StartOfDay,\n} from './conditionalLogicService/types.js'\n\n/**\n * Examine a submission and its form definition to validate whether a payment\n * workflow event needs to run.\n *\n * #### Example\n *\n * ```js\n * const result = paymentService.checkForPaymentEvent({\n * definition: form,\n * submission,\n * submissionTimestamp,\n * parseDayOnlyDate: (value) => new Date(`${value}T00:00:00.000Z`),\n * addDaysToDate: (date, days) => {\n * date.setUTCDate(date.getUTCDate() + days)\n * return date\n * },\n * startOfDay: (date) => {\n * date.setUTCHours(0, 0, 0, 0)\n * return date\n * },\n * endOfDay: (date) => {\n * date.setUTCHours(23, 59, 59, 999)\n * return date\n * },\n * })\n * ```\n *\n * @param options\n * @returns\n */\nexport function checkForPaymentEvent({\n definition,\n submission,\n submissionTimestamp,\n parseDayOnlyDate,\n addDaysToDate,\n startOfDay,\n endOfDay,\n}: {\n definition: FormTypes.Form\n submission: SubmissionTypes.S3SubmissionData['submission']\n /** ISO timestamp the form was submitted. When evaluating during submission, pass `new Date().toISOString()`. */\n submissionTimestamp: string\n /** Parse `YYYY-MM-DD` strings when evaluating date based predicates */\n parseDayOnlyDate: ParseDayOnlyDate\n /** Add days to a date when evaluating date based predicates */\n addDaysToDate: AddOffsetToDate\n /** Start of calendar day when evaluating date (not datetime) based predicates */\n startOfDay: StartOfDay\n /** End of calendar day when evaluating date (not datetime) based predicates */\n endOfDay: EndOfDay\n}):\n | {\n paymentSubmissionEvent: SubmissionEventTypes.FormPaymentEvent\n amount: number\n }\n | undefined {\n const paymentSubmissionEvents = definition.paymentEvents || []\n const paymentSubmissionEvent = paymentSubmissionEvents.find(\n (paymentSubmissionEvent) => {\n return (\n paymentSubmissionEvent &&\n conditionalLogicService.evaluateConditionalPredicates({\n isConditional: !!paymentSubmissionEvent.conditionallyExecute,\n requiresAllConditionalPredicates:\n !!paymentSubmissionEvent.requiresAllConditionallyExecutePredicates,\n conditionalPredicates:\n paymentSubmissionEvent.conditionallyExecutePredicates || [],\n submission: submission,\n formElements: definition.elements,\n submissionTimestamp,\n parseDayOnlyDate,\n addDaysToDate,\n startOfDay,\n endOfDay,\n })\n )\n },\n )\n\n if (!paymentSubmissionEvent) {\n return\n }\n console.log(\n 'Checking if submission with payment submission event needs processing',\n )\n\n const amountElement = formElementsService.findFormElement(\n definition.elements,\n (element) => element.id === paymentSubmissionEvent.configuration.elementId,\n )\n if (!amountElement || amountElement.type === 'page') {\n console.log(\n 'Form has a payment submission event but the amount element does not exist, throwing error',\n )\n throw new Error(\n 'We could not find the configuration required to make a payment. Please contact your administrator to ensure your application configuration has been completed successfully.',\n )\n }\n\n console.log('Found form element for payment submission event', amountElement)\n\n const amount = getRootElementValueById(\n amountElement.id,\n definition.elements,\n submission,\n )\n\n if (!amount) {\n console.log(\n 'Form has a payment submission event but the amount has been entered as 0 or not at all, finishing as normal submission',\n )\n return\n }\n\n if (typeof amount !== 'number') {\n console.log(\n 'Form has a payment submission event but the amount is not a number, throwing error',\n )\n throw new Error(\n 'The configuration required to make a payment is incorrect. Please contact your administrator to ensure your application configuration has been completed successfully.',\n )\n }\n\n const result = {\n paymentSubmissionEvent,\n amount,\n }\n\n return result\n}\n\ntype PaymentDisplayDetail = {\n label: string\n value: string\n /** A unique key across payment providers to identify the detail */\n key: SubmissionEventTypes.PaymentDisplayDetailKey\n}\n\n/**\n * Retrieve an array of detail items from a form submission payment.\n *\n * #### Example\n *\n * ```js\n * const detailItems =\n * paymentService.getDisplayDetailsFromFormSubmissionPayment(\n * formSubmissionPayment,\n * {\n * formatCurrency,\n * formatDateTime,\n * formatDate,\n * },\n * )\n * ```\n *\n * @param formSubmissionPayment\n * @param options\n * @returns\n */\nexport const getDisplayDetailsFromFormSubmissionPayment = (\n /** The form submission payment to get the details from */\n formSubmissionPayment: SubmissionTypes.FormSubmissionPayment,\n {\n formatCurrency,\n formatDateTime,\n formatDate,\n }: Pick<\n ReplaceInjectablesFormatters,\n 'formatCurrency' | 'formatDate' | 'formatDateTime'\n >,\n):\n | {\n amount: {\n value: number\n formatted: string\n }\n paymentDisplayDetails: PaymentDisplayDetail[]\n }\n | undefined => {\n switch (formSubmissionPayment.type) {\n case 'NSW_GOV_PAY': {\n const { paymentTransaction } = formSubmissionPayment\n if (!paymentTransaction || !paymentTransaction.agencyCompletionPayment) {\n return\n }\n\n const amount = {\n value: paymentTransaction.agencyCompletionPayment.amount,\n formatted: formatCurrency(\n paymentTransaction.agencyCompletionPayment.amount,\n ),\n }\n return {\n amount,\n paymentDisplayDetails: [\n {\n key: 'NSW_GOV_PAY_COMPLETION_REFERENCE',\n label: 'Completion Reference',\n value:\n paymentTransaction.agencyCompletionPayment\n .paymentCompletionReference,\n },\n {\n key: 'NSW_GOV_PAY_PAYMENT_REFERENCE',\n label: 'Payment Reference',\n value: paymentTransaction.agencyCompletionPayment.paymentReference,\n },\n {\n key: 'NSW_GOV_PAY_BANK_REFERENCE',\n label: 'Bank Reference',\n value: paymentTransaction.agencyCompletionPayment.bankReference,\n },\n {\n key: 'NSW_GOV_PAY_PAYMENT_METHOD',\n label: 'Payment Method',\n value: paymentTransaction.agencyCompletionPayment.paymentMethod,\n },\n ...(paymentTransaction.agencyCompletionPayment.paymentMethod ===\n 'BPAY' &&\n paymentTransaction.agencyCompletionPayment.bPay?.billerCode\n ? [\n {\n key: 'NSW_GOV_PAY_BPAY_BILLER_CODE' as const,\n label: 'BPay Biller Code',\n value:\n paymentTransaction.agencyCompletionPayment.bPay.billerCode,\n },\n ]\n : []),\n ...(paymentTransaction.agencyCompletionPayment.paymentMethod ===\n 'CARD'\n ? [\n {\n key: 'NSW_GOV_PAY_CREDIT_CARD_NUMBER' as const,\n label: 'Card Number',\n value: `xxxx xxxx xxxx ${paymentTransaction.agencyCompletionPayment.card?.last4Digits}`,\n },\n ]\n : []),\n {\n key: 'NSW_GOV_PAY_AMOUNT',\n label: 'Amount',\n value: amount.formatted,\n },\n {\n key: 'NSW_GOV_PAY_SURCHARGE_AMOUNT',\n label: 'Surcharge Amount',\n value: formatCurrency(\n paymentTransaction.agencyCompletionPayment.surcharge,\n ),\n },\n {\n key: 'NSW_GOV_PAY_SURCHARGE_GST',\n label: 'Surcharge GST',\n value: formatCurrency(\n paymentTransaction.agencyCompletionPayment.surchargeGst,\n ),\n },\n {\n key: 'NSW_GOV_PAY_CREATED_DATE_TIME',\n label: 'Created Date Time',\n value: formatDateTime(formSubmissionPayment.createdAt),\n },\n ],\n }\n }\n case 'BPOINT': {\n const { paymentTransaction } = formSubmissionPayment\n if (!paymentTransaction) {\n return\n }\n const amountValue = paymentTransaction.Amount / 100\n const amount = {\n value: amountValue,\n formatted: formatCurrency(amountValue),\n }\n return {\n amount,\n paymentDisplayDetails: [\n {\n key: 'BPOINT_RECEIPT_NUMBER',\n label: 'Receipt Number',\n value: paymentTransaction.ReceiptNumber,\n },\n {\n key: 'BPOINT_CRN1',\n label: 'CRN 1',\n value: paymentTransaction.Crn1,\n },\n {\n key: 'BPOINT_CRN2',\n label: 'CRN 2',\n value: paymentTransaction.Crn2,\n },\n {\n key: 'BPOINT_CRN3',\n label: 'CRN 3',\n value: paymentTransaction.Crn3,\n },\n {\n key: 'BPOINT_BILLER_CODE',\n label: 'Biller Code',\n value: paymentTransaction.BillerCode,\n },\n {\n key: 'BPOINT_CREDIT_CARD_MASK',\n label: 'Card Number',\n value: paymentTransaction.CardDetails.MaskedCardNumber,\n },\n {\n key: 'BPOINT_AMOUNT',\n label: 'Amount',\n value: amount.formatted,\n },\n {\n key: 'BPOINT_SURCHARGE_AMOUNT',\n label: 'Surcharge Amount',\n value: formatCurrency(paymentTransaction.AmountSurcharge / 100),\n },\n {\n key: 'BPOINT_PROCESSED_DATE_TIME',\n label: 'Processed Date Time',\n value: formatDateTime(paymentTransaction.ProcessedDateTime),\n },\n ],\n }\n }\n case 'CP_PAY': {\n const { paymentTransaction } = formSubmissionPayment\n if (!paymentTransaction) {\n return\n }\n\n const determineDetails = () => {\n switch (paymentTransaction.cpPayVersion) {\n case 'v2': {\n return {\n transactionId: paymentTransaction.result.id,\n orderNumber:\n paymentTransaction.result.externalReferenceId ?? undefined,\n paymentType: paymentTransaction.result.paymentType,\n creditCardMask: paymentTransaction.result.lastFour\n ? `xxxx xxxx xxxx ${paymentTransaction.result.lastFour}`\n : undefined,\n amount:\n paymentTransaction.result.amount !== undefined\n ? {\n value: paymentTransaction.result.amount,\n formatted: formatCurrency(\n paymentTransaction.result.amount,\n ),\n }\n : {\n value: NaN,\n formatted: 'Unknown',\n },\n createdDateTime: paymentTransaction.result.createdOnUtc,\n }\n }\n default: {\n return {\n transactionId: paymentTransaction.transactionId,\n orderNumber: paymentTransaction.orderNumber ?? undefined,\n paymentType:\n paymentTransaction.paymentTypeId === 1\n ? 'Credit/Debit Card'\n : paymentTransaction.paymentTypeId === 2\n ? 'ACH'\n : undefined,\n creditCardMask: paymentTransaction.lastFour\n ? `xxxx xxxx xxxx ${paymentTransaction.lastFour}`\n : undefined,\n amount: {\n value: paymentTransaction.amount,\n formatted: formatCurrency(paymentTransaction.amount),\n },\n createdDateTime: paymentTransaction.createdAt,\n }\n }\n }\n }\n\n const {\n transactionId,\n orderNumber,\n paymentType,\n creditCardMask,\n amount,\n createdDateTime,\n } = determineDetails()\n const paymentDisplayDetails: PaymentDisplayDetail[] = []\n if (transactionId) {\n paymentDisplayDetails.push({\n key: 'CP_PAY_TRANSACTION_ID',\n label: 'Transaction Id',\n value: transactionId,\n })\n }\n if (orderNumber) {\n paymentDisplayDetails.push({\n key: 'CP_PAY_ORDER_NUMBER',\n label: 'Order Number',\n value: orderNumber,\n })\n }\n if (paymentType) {\n paymentDisplayDetails.push({\n key: 'CP_PAY_PAYMENT_TYPE',\n label: 'Payment Type',\n value: paymentType,\n })\n }\n if (creditCardMask) {\n paymentDisplayDetails.push({\n key: 'CP_PAY_CREDIT_CARD_MASK',\n label: 'Card Number',\n value: creditCardMask,\n })\n }\n paymentDisplayDetails.push({\n key: 'CP_PAY_AMOUNT',\n label: 'Amount',\n value: amount.formatted,\n })\n if (createdDateTime) {\n paymentDisplayDetails.push({\n key: 'CP_PAY_CREATED_DATE_TIME',\n label: 'Created At',\n value: formatDateTime(createdDateTime),\n })\n }\n\n return {\n amount,\n paymentDisplayDetails,\n }\n }\n case 'WESTPAC_QUICK_STREAM': {\n const { paymentTransaction } = formSubmissionPayment\n if (!paymentTransaction) {\n return\n }\n\n const amount = {\n value: paymentTransaction.totalAmount.amount,\n formatted: formatCurrency(\n parseFloat(paymentTransaction.totalAmount.amount.toString()),\n ),\n }\n\n return {\n amount,\n paymentDisplayDetails: [\n {\n key: 'WESTPAC_QUICK_STREAM_RECEIPT_NUMBER',\n label: 'Receipt Number',\n value: paymentTransaction.receiptNumber,\n },\n {\n key: 'WESTPAC_QUICK_STREAM_PAYMENT_REFERENCE_NUMBER',\n label: 'Payment Reference',\n value: paymentTransaction.paymentReferenceNumber,\n },\n {\n key: 'WESTPAC_QUICK_STREAM_CUSTOMER_REFERENCE_NUMBER',\n label: 'Customer Reference Number',\n value: paymentTransaction.customerReferenceNumber,\n },\n {\n key: 'WESTPAC_QUICK_STREAM_AMOUNT',\n label: 'Amount',\n value: amount.formatted,\n },\n ...(paymentTransaction.surchargeAmount.amount\n ? [\n {\n key: 'WESTPAC_QUICK_STREAM_SURCHARGE_AMOUNT' as const,\n label: 'Surcharge Amount',\n value: formatCurrency(\n parseFloat(\n paymentTransaction.surchargeAmount.amount.toString(),\n ),\n ),\n },\n ]\n : []),\n {\n key: 'WESTPAC_QUICK_STREAM_SETTLEMENT_DATE',\n label: 'Settlement Date',\n value: formatDate(paymentTransaction.settlementDate),\n },\n ],\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"paymentService.js","sourceRoot":"","sources":["../src/paymentService.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAOhE,OAAO,kBAAkB,MAAM,wCAAwC,CAAA;AAevE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,oBAAoB,CAAC,EACnC,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,QAAQ,GAcT;IAMC,MAAM,uBAAuB,GAAG,UAAU,CAAC,aAAa,IAAI,EAAE,CAAA;IAC9D,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,IAAI,CACzD,CAAC,sBAAsB,EAAE,EAAE;QACzB,OAAO,CACL,sBAAsB;YACtB,uBAAuB,CAAC,6BAA6B,CAAC;gBACpD,aAAa,EAAE,CAAC,CAAC,sBAAsB,CAAC,oBAAoB;gBAC5D,gCAAgC,EAC9B,CAAC,CAAC,sBAAsB,CAAC,yCAAyC;gBACpE,qBAAqB,EACnB,sBAAsB,CAAC,8BAA8B,IAAI,EAAE;gBAC7D,UAAU,EAAE,UAAU;gBACtB,YAAY,EAAE,UAAU,CAAC,QAAQ;gBACjC,mBAAmB;gBACnB,gBAAgB;gBAChB,aAAa;gBACb,UAAU;gBACV,QAAQ;aACT,CAAC,CACH,CAAA;IACH,CAAC,CACF,CAAA;IAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,OAAM;IACR,CAAC;IACD,OAAO,CAAC,GAAG,CACT,uEAAuE,CACxE,CAAA;IAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,eAAe,CACvD,UAAU,CAAC,QAAQ,EACnB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,sBAAsB,CAAC,aAAa,CAAC,SAAS,CAC3E,CAAA;IACD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CACT,2FAA2F,CAC5F,CAAA;QACD,MAAM,IAAI,KAAK,CACb,6KAA6K,CAC9K,CAAA;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iDAAiD,EAAE,aAAa,CAAC,CAAA;IAE7E,MAAM,MAAM,GAAG,uBAAuB,CACpC,aAAa,CAAC,EAAE,EAChB,UAAU,CAAC,QAAQ,EACnB,UAAU,CACX,CAAA;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CACT,wHAAwH,CACzH,CAAA;QACD,OAAM;IACR,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CACT,oFAAoF,CACrF,CAAA;QACD,MAAM,IAAI,KAAK,CACb,wKAAwK,CACzK,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG;QACb,sBAAsB;QACtB,MAAM;KACP,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG;AACxD,0DAA0D;AAC1D,qBAA4D,EAC5D,UAAoC,EACK,EAAE;IAC3C,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,iBAAiB,CACrE,qBAAqB,EACrB,UAAU,CACX,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,4CAA4C,CAC1D,qBAA4D;IAE5D,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,mBAAmB,CACvE,qBAAqB,CACtB,CAAA;AACH,CAAC","sourcesContent":["import {\n FormTypes,\n SubmissionEventTypes,\n SubmissionTypes,\n} from '@oneblink/types'\nimport { conditionalLogicService, formElementsService } from './index.js'\nimport { getRootElementValueById } from './submissionService.js'\nimport {\n AddOffsetToDate,\n EndOfDay,\n ParseDayOnlyDate,\n StartOfDay,\n} from './conditionalLogicService/types.js'\nimport getPaymentProvider from './paymentService/getPaymentProvider.js'\nimport type {\n FormStorePayment,\n PaymentDisplayDetail,\n PaymentDisplayFormatters,\n PaymentDisplayDetailsResult,\n} from './paymentService/types.js'\n\nexport {\n FormStorePayment,\n PaymentDisplayDetail,\n PaymentDisplayDetailsResult,\n PaymentDisplayFormatters,\n}\n\n/**\n * Examine a submission and its form definition to validate whether a payment\n * workflow event needs to run.\n *\n * #### Example\n *\n * ```js\n * const result = paymentService.checkForPaymentEvent({\n * definition: form,\n * submission,\n * submissionTimestamp,\n * parseDayOnlyDate: (value) => new Date(`${value}T00:00:00.000Z`),\n * addDaysToDate: (date, days) => {\n * date.setUTCDate(date.getUTCDate() + days)\n * return date\n * },\n * startOfDay: (date) => {\n * date.setUTCHours(0, 0, 0, 0)\n * return date\n * },\n * endOfDay: (date) => {\n * date.setUTCHours(23, 59, 59, 999)\n * return date\n * },\n * })\n * ```\n *\n * @param options\n * @returns\n */\nexport function checkForPaymentEvent({\n definition,\n submission,\n submissionTimestamp,\n parseDayOnlyDate,\n addDaysToDate,\n startOfDay,\n endOfDay,\n}: {\n definition: FormTypes.Form\n submission: SubmissionTypes.S3SubmissionData['submission']\n /** ISO timestamp the form was submitted. When evaluating during submission, pass `new Date().toISOString()`. */\n submissionTimestamp: string\n /** Parse `YYYY-MM-DD` strings when evaluating date based predicates */\n parseDayOnlyDate: ParseDayOnlyDate\n /** Add days to a date when evaluating date based predicates */\n addDaysToDate: AddOffsetToDate\n /** Start of calendar day when evaluating date (not datetime) based predicates */\n startOfDay: StartOfDay\n /** End of calendar day when evaluating date (not datetime) based predicates */\n endOfDay: EndOfDay\n}):\n | {\n paymentSubmissionEvent: SubmissionEventTypes.FormPaymentEvent\n amount: number\n }\n | undefined {\n const paymentSubmissionEvents = definition.paymentEvents || []\n const paymentSubmissionEvent = paymentSubmissionEvents.find(\n (paymentSubmissionEvent) => {\n return (\n paymentSubmissionEvent &&\n conditionalLogicService.evaluateConditionalPredicates({\n isConditional: !!paymentSubmissionEvent.conditionallyExecute,\n requiresAllConditionalPredicates:\n !!paymentSubmissionEvent.requiresAllConditionallyExecutePredicates,\n conditionalPredicates:\n paymentSubmissionEvent.conditionallyExecutePredicates || [],\n submission: submission,\n formElements: definition.elements,\n submissionTimestamp,\n parseDayOnlyDate,\n addDaysToDate,\n startOfDay,\n endOfDay,\n })\n )\n },\n )\n\n if (!paymentSubmissionEvent) {\n return\n }\n console.log(\n 'Checking if submission with payment submission event needs processing',\n )\n\n const amountElement = formElementsService.findFormElement(\n definition.elements,\n (element) => element.id === paymentSubmissionEvent.configuration.elementId,\n )\n if (!amountElement || amountElement.type === 'page') {\n console.log(\n 'Form has a payment submission event but the amount element does not exist, throwing error',\n )\n throw new Error(\n 'We could not find the configuration required to make a payment. Please contact your administrator to ensure your application configuration has been completed successfully.',\n )\n }\n\n console.log('Found form element for payment submission event', amountElement)\n\n const amount = getRootElementValueById(\n amountElement.id,\n definition.elements,\n submission,\n )\n\n if (!amount) {\n console.log(\n 'Form has a payment submission event but the amount has been entered as 0 or not at all, finishing as normal submission',\n )\n return\n }\n\n if (typeof amount !== 'number') {\n console.log(\n 'Form has a payment submission event but the amount is not a number, throwing error',\n )\n throw new Error(\n 'The configuration required to make a payment is incorrect. Please contact your administrator to ensure your application configuration has been completed successfully.',\n )\n }\n\n const result = {\n paymentSubmissionEvent,\n amount,\n }\n\n return result\n}\n\n/**\n * Retrieve an array of detail items from a form submission payment.\n *\n * #### Example\n *\n * ```js\n * const detailItems =\n * paymentService.getDisplayDetailsFromFormSubmissionPayment(\n * formSubmissionPayment,\n * {\n * formatCurrency,\n * formatDateTime,\n * formatDate,\n * },\n * )\n * ```\n *\n * @param formSubmissionPayment\n * @param options\n * @returns\n */\nexport const getDisplayDetailsFromFormSubmissionPayment = (\n /** The form submission payment to get the details from */\n formSubmissionPayment: SubmissionTypes.FormSubmissionPayment,\n formatters: PaymentDisplayFormatters,\n): PaymentDisplayDetailsResult | undefined => {\n return getPaymentProvider(formSubmissionPayment.type).getDisplayDetails(\n formSubmissionPayment,\n formatters,\n )\n}\n\n/**\n * Map a form submission payment to the Form Store payment property.\n *\n * #### Example\n *\n * ```js\n * const formStorePayment =\n * paymentService.getFormStorePaymentFromFormSubmissionPayment(\n * formSubmissionPayment,\n * )\n * ```\n *\n * @param formSubmissionPayment\n * @returns\n */\nexport function getFormStorePaymentFromFormSubmissionPayment(\n formSubmissionPayment: SubmissionTypes.FormSubmissionPayment,\n): FormStorePayment {\n return getPaymentProvider(formSubmissionPayment.type).getFormStorePayment(\n formSubmissionPayment,\n )\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@oneblink/sdk-core",
3
3
  "description": "OneBlink SDK for JavaScript (works in Browsers and NodeJS)",
4
- "version": "10.0.0-beta.3",
4
+ "version": "10.1.0-beta.1",
5
5
  "author": "OneBlink <developers@oneblink.io> (https://oneblink.io)",
6
6
  "bugs": {
7
7
  "url": "https://github.com/oneblink/sdk-core-js/issues"