@oneblink/apps-react 11.1.2-beta.2 → 11.2.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.
- package/dist/PaymentReceipt.js +12 -8
- package/dist/PaymentReceipt.js.map +1 -1
- package/dist/apps/payment-service.d.ts +2 -7
- package/dist/apps/payment-service.js +17 -14
- package/dist/apps/payment-service.js.map +1 -1
- package/dist/apps/scheduling-service.js +0 -1
- package/dist/apps/scheduling-service.js.map +1 -1
- package/dist/apps/services/api/payment.d.ts +8 -4
- package/dist/apps/services/api/payment.js +5 -6
- package/dist/apps/services/api/payment.js.map +1 -1
- package/dist/apps/services/payment-providers/BPOINTPaymentProvider.d.ts +1 -13
- package/dist/apps/services/payment-providers/BPOINTPaymentProvider.js +0 -14
- package/dist/apps/services/payment-providers/BPOINTPaymentProvider.js.map +1 -1
- package/dist/apps/services/payment-providers/CPPayPaymentProvider.d.ts +1 -11
- package/dist/apps/services/payment-providers/CPPayPaymentProvider.js +0 -9
- package/dist/apps/services/payment-providers/CPPayPaymentProvider.js.map +1 -1
- package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.d.ts +1 -14
- package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.js +0 -15
- package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.js.map +1 -1
- package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.d.ts +1 -5
- package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.js +0 -12
- package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.js.map +1 -1
- package/dist/apps/services/submit.js +7 -8
- package/dist/apps/services/submit.js.map +1 -1
- package/dist/apps/types/payments.d.ts +0 -10
- package/dist/apps/types/payments.js.map +1 -1
- package/dist/form-elements/FormElementCalculation.js +22 -193
- package/dist/form-elements/FormElementCalculation.js.map +1 -1
- package/package.json +2 -4
|
@@ -1,20 +1,10 @@
|
|
|
1
1
|
import { SubmissionEventTypes } from '@oneblink/types';
|
|
2
|
-
import {
|
|
2
|
+
import { PaymentProvider } from '../../types/payments';
|
|
3
3
|
import { FormSubmissionResult } from '../../types/submissions';
|
|
4
4
|
declare class CPPayPaymentProvider implements PaymentProvider<SubmissionEventTypes.CPPaySubmissionEvent> {
|
|
5
5
|
constructor(paymentSubmissionEvent: SubmissionEventTypes.CPPaySubmissionEvent, formSubmissionResult: FormSubmissionResult);
|
|
6
6
|
paymentSubmissionEvent: SubmissionEventTypes.CPPaySubmissionEvent;
|
|
7
7
|
formSubmissionResult: FormSubmissionResult;
|
|
8
|
-
preparePaymentConfiguration(basePayload: BasePaymentConfigurationPayload): {
|
|
9
|
-
path: string;
|
|
10
|
-
payload: {
|
|
11
|
-
integrationGatewayId: string;
|
|
12
|
-
amount: number;
|
|
13
|
-
redirectUrl: string;
|
|
14
|
-
submissionId: string | null;
|
|
15
|
-
paymentFormUrl?: string;
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
8
|
verifyPaymentTransaction(query: Record<string, unknown>): Promise<{
|
|
19
9
|
receiptItems: import("../../types/payments").PaymentReceiptItem[];
|
|
20
10
|
transaction: {
|
|
@@ -6,15 +6,6 @@ class CPPayPaymentProvider {
|
|
|
6
6
|
this.paymentSubmissionEvent = paymentSubmissionEvent;
|
|
7
7
|
this.formSubmissionResult = formSubmissionResult;
|
|
8
8
|
}
|
|
9
|
-
preparePaymentConfiguration(basePayload) {
|
|
10
|
-
return {
|
|
11
|
-
path: `/forms/${this.formSubmissionResult.definition.id}/cp-pay-payment`,
|
|
12
|
-
payload: {
|
|
13
|
-
...basePayload,
|
|
14
|
-
integrationGatewayId: this.paymentSubmissionEvent.configuration.gatewayId,
|
|
15
|
-
},
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
9
|
async verifyPaymentTransaction(query) {
|
|
19
10
|
var _a, _b, _c, _d;
|
|
20
11
|
const { transactionId, externalReferenceId: submissionId } = query;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CPPayPaymentProvider.js","sourceRoot":"","sources":["../../../../src/apps/services/payment-providers/CPPayPaymentProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CPPayPaymentProvider.js","sourceRoot":"","sources":["../../../../src/apps/services/payment-providers/CPPayPaymentProvider.ts"],"names":[],"mappings":"AAGA,OAAO,iBAAiB,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACL,yBAAyB,EACzB,iCAAiC,EACjC,+BAA+B,EAC/B,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AAExB,MAAM,oBAAoB;IACxB,YACE,sBAAiE,EACjE,oBAA0C;QAE1C,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAA;QACpD,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAA;IAClD,CAAC;IAKD,KAAK,CAAC,wBAAwB,CAAC,KAA8B;;QAC3D,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;QAClE,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;YACvD,MAAM,IAAI,iBAAiB,CACzB,mFAAmF,CACpF,CAAA;QACH,CAAC;QACD,IAAI,IAAI,CAAC,oBAAoB,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YAC5D,MAAM,IAAI,iBAAiB,CACzB,+EAA+E,CAChF,CAAA;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAEhD,UAAU,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,sBAAsB,EAAE;YACzE,aAAa;YACb,oBAAoB,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS;SAC1E,CAAC,CAAA;QACF,qCAAqC;QACrC,2BAA2B,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,EAAE;YACnE,aAAa;YACb,oBAAoB,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS;SAC1E,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,OAAO,CAAC,IAAI,CACV,0DAA0D,EAC1D,KAAK,CACN,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,OAAO;YACL,YAAY,EAAE,mBAAmB,CAAC;gBAChC,+BAA+B,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;gBACvE;oBACE,SAAS,EAAE,oCAAoC;oBAC/C,cAAc,EAAE,wCAAwC;oBACxD,IAAI,EAAE,eAAe;oBACrB,KAAK,EAAE,gBAAgB;oBACvB,KAAK,EAAE,aAAa;oBACpB,oBAAoB,EAAE,IAAI;iBAC3B;gBACD,iCAAiC,CAC/B,CAAA,MAAA,WAAW,CAAC,MAAM,0CAAE,QAAQ;oBAC1B,CAAC,CAAC,kBAAkB,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE;oBACjD,CAAC,CAAC,IAAI,CACT;gBACD,yBAAyB,CAAC,MAAA,WAAW,CAAC,MAAM,0CAAE,MAAM,CAAC;aACtD,CAAC;YACF,WAAW,EAAE;gBACX,SAAS,EAAE,CAAA,MAAA,WAAW,CAAC,MAAM,0CAAE,YAAY,MAAK,SAAS;gBACzD,YAAY,EAAE,MAAA,WAAW,CAAC,MAAM,0CAAE,SAAS;aAC5C;YACD,gBAAgB,EAAE,IAAI,CAAC,oBAAoB;SAC5C,CAAA;IACH,CAAC;CACF;AAED,eAAe,oBAAoB,CAAA","sourcesContent":["import { SubmissionEventTypes } from '@oneblink/types'\nimport { PaymentProvider } from '../../types/payments'\nimport { FormSubmissionResult } from '../../types/submissions'\nimport OneBlinkAppsError from '../errors/oneBlinkAppsError'\nimport {\n acknowledgeCPPayTransaction,\n verifyPaymentTransaction,\n} from '../api/payment'\nimport { components } from '@oneblink/types/typescript/cp-pay/swagger.v2'\nimport {\n generateAmountReceiptItem,\n generateCreditCardMaskReceiptItem,\n generateSubmissionIdReceiptItem,\n prepareReceiptItems,\n} from './receipt-items'\n\nclass CPPayPaymentProvider implements PaymentProvider<SubmissionEventTypes.CPPaySubmissionEvent> {\n constructor(\n paymentSubmissionEvent: SubmissionEventTypes.CPPaySubmissionEvent,\n formSubmissionResult: FormSubmissionResult,\n ) {\n this.paymentSubmissionEvent = paymentSubmissionEvent\n this.formSubmissionResult = formSubmissionResult\n }\n\n paymentSubmissionEvent: SubmissionEventTypes.CPPaySubmissionEvent\n formSubmissionResult: FormSubmissionResult\n\n async verifyPaymentTransaction(query: Record<string, unknown>) {\n const { transactionId, externalReferenceId: submissionId } = query\n if (typeof transactionId !== 'string' || !submissionId) {\n throw new OneBlinkAppsError(\n 'Transactions can not be verified unless navigating here directly after a payment.',\n )\n }\n if (this.formSubmissionResult.submissionId !== submissionId) {\n throw new OneBlinkAppsError(\n 'It looks like you are attempting to view a receipt for the incorrect payment.',\n )\n }\n\n const transaction = await verifyPaymentTransaction<\n components['schemas']['TransactionDetailsViewModelResponseEnvelope']\n >(`/forms/${this.formSubmissionResult.definition.id}/cp-pay-verification`, {\n transactionId,\n integrationGatewayId: this.paymentSubmissionEvent.configuration.gatewayId,\n })\n // Asynchronously acknowledge receipt\n acknowledgeCPPayTransaction(this.formSubmissionResult.definition.id, {\n transactionId,\n integrationGatewayId: this.paymentSubmissionEvent.configuration.gatewayId,\n }).catch((error) => {\n console.warn(\n 'Error while attempting to acknowledge CP Pay transaction',\n error,\n )\n })\n\n return {\n receiptItems: prepareReceiptItems([\n generateSubmissionIdReceiptItem(this.formSubmissionResult.submissionId),\n {\n className: 'ob-payment-receipt__transaction-id',\n valueClassName: 'cypress-payment-receipt-transaction-id',\n icon: 'shopping_cart',\n label: 'Transaction Id',\n value: transactionId,\n allowCopyToClipboard: true,\n },\n generateCreditCardMaskReceiptItem(\n transaction.result?.lastFour\n ? `xxxx xxxx xxxx ${transaction.result.lastFour}`\n : null,\n ),\n generateAmountReceiptItem(transaction.result?.amount),\n ]),\n transaction: {\n isSuccess: transaction.result?.responseType === 'Success',\n errorMessage: transaction.result?.errorCode,\n },\n submissionResult: this.formSubmissionResult,\n }\n }\n}\n\nexport default CPPayPaymentProvider\n"]}
|
|
@@ -1,23 +1,10 @@
|
|
|
1
1
|
import { SubmissionEventTypes } from '@oneblink/types';
|
|
2
|
-
import {
|
|
2
|
+
import { PaymentProvider } from '../../types/payments';
|
|
3
3
|
import { FormSubmissionResult } from '../../types/submissions';
|
|
4
4
|
declare class NSWGovPayPaymentProvider implements PaymentProvider<SubmissionEventTypes.NSWGovPaySubmissionEvent> {
|
|
5
5
|
constructor(paymentSubmissionEvent: SubmissionEventTypes.NSWGovPaySubmissionEvent, formSubmissionResult: FormSubmissionResult);
|
|
6
6
|
paymentSubmissionEvent: SubmissionEventTypes.NSWGovPaySubmissionEvent;
|
|
7
7
|
formSubmissionResult: FormSubmissionResult;
|
|
8
|
-
preparePaymentConfiguration(basePayload: BasePaymentConfigurationPayload): {
|
|
9
|
-
path: string;
|
|
10
|
-
payload: {
|
|
11
|
-
integrationPrimaryAgencyId: string;
|
|
12
|
-
productDescription: string;
|
|
13
|
-
customerReference: string | undefined;
|
|
14
|
-
subAgencyCode: string | undefined;
|
|
15
|
-
amount: number;
|
|
16
|
-
redirectUrl: string;
|
|
17
|
-
submissionId: string | null;
|
|
18
|
-
paymentFormUrl?: string;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
8
|
verifyPaymentTransaction(query: Record<string, unknown>): Promise<{
|
|
22
9
|
receiptItems: import("../../types/payments").PaymentReceiptItem[];
|
|
23
10
|
transaction: {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import replaceInjectablesWithSubmissionValues from '../replaceInjectablesWithSubmissionValues';
|
|
2
1
|
import OneBlinkAppsError from '../errors/oneBlinkAppsError';
|
|
3
2
|
import { generateAmountReceiptItem, generateCreditCardMaskReceiptItem, generateReceiptItem, generateSubmissionIdReceiptItem, prepareReceiptItems, } from './receipt-items';
|
|
4
3
|
import { localisationService } from '../..';
|
|
@@ -7,20 +6,6 @@ class NSWGovPayPaymentProvider {
|
|
|
7
6
|
this.paymentSubmissionEvent = paymentSubmissionEvent;
|
|
8
7
|
this.formSubmissionResult = formSubmissionResult;
|
|
9
8
|
}
|
|
10
|
-
preparePaymentConfiguration(basePayload) {
|
|
11
|
-
return {
|
|
12
|
-
path: `/forms/${this.formSubmissionResult.definition.id}/nsw-gov-pay-payment`,
|
|
13
|
-
payload: {
|
|
14
|
-
...basePayload,
|
|
15
|
-
integrationPrimaryAgencyId: this.paymentSubmissionEvent.configuration.primaryAgencyId,
|
|
16
|
-
productDescription: replaceInjectablesWithSubmissionValues(this.paymentSubmissionEvent.configuration.productDescription, this.formSubmissionResult).text,
|
|
17
|
-
customerReference: this.paymentSubmissionEvent.configuration.customerReference &&
|
|
18
|
-
replaceInjectablesWithSubmissionValues(this.paymentSubmissionEvent.configuration.customerReference, this.formSubmissionResult).text,
|
|
19
|
-
subAgencyCode: this.paymentSubmissionEvent.configuration.subAgencyCode &&
|
|
20
|
-
replaceInjectablesWithSubmissionValues(this.paymentSubmissionEvent.configuration.subAgencyCode, this.formSubmissionResult).text,
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
9
|
async verifyPaymentTransaction(query) {
|
|
25
10
|
const { submissionId, isSuccess, errorMessage, paymentReference, completionReference, bankReference, paymentMethod, cardLast4Digits, bPayBillerCode, bPayCrn, bPayProcessingDate, amount, surcharge, surchargeGst, } = query;
|
|
26
11
|
if (!submissionId || !isSuccess || !paymentReference) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NSWGovPayPaymentProvider.js","sourceRoot":"","sources":["../../../../src/apps/services/payment-providers/NSWGovPayPaymentProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { SubmissionEventTypes, SubmissionTypes } from '@oneblink/types'\nimport {\n BasePaymentConfigurationPayload,\n PaymentProvider,\n} from '../../types/payments'\nimport { FormSubmissionResult } from '../../types/submissions'\nimport replaceInjectablesWithSubmissionValues from '../replaceInjectablesWithSubmissionValues'\nimport OneBlinkAppsError from '../errors/oneBlinkAppsError'\nimport {\n generateAmountReceiptItem,\n generateCreditCardMaskReceiptItem,\n generateReceiptItem,\n generateSubmissionIdReceiptItem,\n prepareReceiptItems,\n} from './receipt-items'\nimport { localisationService } from '../..'\n\nclass NSWGovPayPaymentProvider implements PaymentProvider<SubmissionEventTypes.NSWGovPaySubmissionEvent> {\n constructor(\n paymentSubmissionEvent: SubmissionEventTypes.NSWGovPaySubmissionEvent,\n formSubmissionResult: FormSubmissionResult,\n ) {\n this.paymentSubmissionEvent = paymentSubmissionEvent\n this.formSubmissionResult = formSubmissionResult\n }\n\n paymentSubmissionEvent: SubmissionEventTypes.NSWGovPaySubmissionEvent\n formSubmissionResult: FormSubmissionResult\n\n preparePaymentConfiguration(basePayload: BasePaymentConfigurationPayload) {\n return {\n path: `/forms/${this.formSubmissionResult.definition.id}/nsw-gov-pay-payment`,\n payload: {\n ...basePayload,\n integrationPrimaryAgencyId:\n this.paymentSubmissionEvent.configuration.primaryAgencyId,\n productDescription: replaceInjectablesWithSubmissionValues(\n this.paymentSubmissionEvent.configuration.productDescription,\n this.formSubmissionResult,\n ).text,\n customerReference:\n this.paymentSubmissionEvent.configuration.customerReference &&\n replaceInjectablesWithSubmissionValues(\n this.paymentSubmissionEvent.configuration.customerReference,\n this.formSubmissionResult,\n ).text,\n subAgencyCode:\n this.paymentSubmissionEvent.configuration.subAgencyCode &&\n replaceInjectablesWithSubmissionValues(\n this.paymentSubmissionEvent.configuration.subAgencyCode,\n this.formSubmissionResult,\n ).text,\n },\n }\n }\n\n async verifyPaymentTransaction(query: Record<string, unknown>) {\n const {\n submissionId,\n isSuccess,\n errorMessage,\n paymentReference,\n completionReference,\n bankReference,\n paymentMethod,\n cardLast4Digits,\n bPayBillerCode,\n bPayCrn,\n bPayProcessingDate,\n amount,\n surcharge,\n surchargeGst,\n } = query as {\n submissionId?: string\n isSuccess?: string\n errorMessage?: string\n paymentReference?: string\n completionReference?: string\n bankReference?: string\n paymentMethod?: string\n bPayBillerCode?: string\n bPayCrn?: string\n bPayProcessingDate?: string\n cardLast4Digits?: string\n amount?: string\n surcharge?: string\n surchargeGst?: string\n }\n\n if (!submissionId || !isSuccess || !paymentReference) {\n throw new OneBlinkAppsError(\n 'Transactions can not be verified unless navigating here directly after a payment.',\n )\n }\n\n if (this.formSubmissionResult.submissionId !== submissionId) {\n throw new OneBlinkAppsError(\n 'It looks like you are attempting to view a receipt for the incorrect payment.',\n )\n }\n\n return {\n receiptItems: prepareReceiptItems([\n generateSubmissionIdReceiptItem(this.formSubmissionResult.submissionId),\n generateReceiptItem({\n className: 'ob-payment-receipt__completion-reference',\n valueClassName: 'cypress-payment-receipt-completion-reference',\n icon: 'check_circle',\n label: 'Completion Reference',\n value: completionReference,\n allowCopyToClipboard: true,\n }),\n {\n className: 'ob-payment-receipt__payment-reference',\n valueClassName: 'cypress-payment-receipt-payment-reference',\n icon: 'shopping_cart',\n label: 'Payment Reference',\n value: paymentReference,\n allowCopyToClipboard: true,\n },\n generateReceiptItem({\n className: 'ob-payment-receipt__bank-reference',\n valueClassName: 'cypress-payment-receipt-bank-reference',\n icon: 'account_balance',\n label: 'Bank Reference',\n value: bankReference,\n allowCopyToClipboard: true,\n }),\n generateReceiptItem({\n className: 'ob-payment-payment-method',\n valueClassName: 'cypress-payment-receipt-payment-method',\n icon: 'account_balance_wallet',\n label: 'Payment Method',\n value: getPaymentMethodLabel(paymentMethod),\n allowCopyToClipboard: false,\n }),\n generateCreditCardMaskReceiptItem(\n cardLast4Digits ? `xxxx xxxx xxxx ${cardLast4Digits}` : null,\n ),\n generateReceiptItem({\n className: 'ob-payment-receipt__bpay-biller-code',\n valueClassName: 'cypress-payment-receipt-bpay-biller-code',\n icon: 'account_balance',\n label: 'BPay Biller Code',\n value: bPayBillerCode,\n allowCopyToClipboard: true,\n }),\n generateReceiptItem({\n className: 'ob-payment-receipt__bpay-crn',\n valueClassName: 'cypress-payment-receipt-bpay-crn',\n icon: 'account_balance',\n label: 'BPay Reference',\n value: bPayCrn,\n allowCopyToClipboard: true,\n }),\n generateReceiptItem({\n className: 'ob-payment-receipt__bpay-processing-date',\n valueClassName: 'cypress-payment-receipt-bpay-processing-date',\n icon: 'account_balance',\n label: 'BPay Processing Date',\n value: formatBPayProcessingDate(bPayProcessingDate),\n allowCopyToClipboard: false,\n }),\n generateAmountReceiptItem(\n typeof amount === 'string' ? parseFloat(amount) : undefined,\n ),\n generateReceiptItem({\n className: 'ob-payment-receipt__surcharge',\n valueClassName: 'cypress-payment-receipt-surcharge',\n icon: 'price_check',\n label: 'Surcharge Amount',\n value:\n typeof surcharge === 'string'\n ? localisationService.formatCurrency(parseFloat(surcharge))\n : undefined,\n allowCopyToClipboard: false,\n }),\n generateReceiptItem({\n className: 'ob-payment-receipt__surcharge-gst',\n valueClassName: 'cypress-payment-receipt-surcharge-gst',\n icon: 'price_check',\n label: 'Surcharge GST',\n value:\n typeof surchargeGst === 'string'\n ? localisationService.formatCurrency(parseFloat(surchargeGst))\n : undefined,\n allowCopyToClipboard: false,\n }),\n ]),\n transaction: {\n isSuccess: isSuccess === 'true',\n errorMessage,\n },\n submissionResult: this.formSubmissionResult,\n }\n }\n}\n\nfunction getPaymentMethodLabel(paymentMethod: string | undefined) {\n switch (\n paymentMethod as NonNullable<\n NonNullable<\n SubmissionTypes.NSWGovPayPayment['paymentTransaction']\n >['agencyCompletionPayment']\n >['paymentMethod']\n ) {\n case 'PAYID': {\n return 'PayID'\n }\n case 'CARD': {\n return 'Credit Card'\n }\n case 'PAYPAL': {\n return 'PayPal'\n }\n case 'BPAY': {\n return 'BPay'\n }\n default: {\n return paymentMethod\n }\n }\n}\n\nfunction formatBPayProcessingDate(bPayProcessingDate: string | undefined) {\n if (bPayProcessingDate) {\n const date = localisationService.generateDate({\n daysOffset: undefined,\n value: bPayProcessingDate,\n })\n if (date) {\n return localisationService.formatDate(date)\n }\n }\n}\n\nexport default NSWGovPayPaymentProvider\n"]}
|
|
1
|
+
{"version":3,"file":"NSWGovPayPaymentProvider.js","sourceRoot":"","sources":["../../../../src/apps/services/payment-providers/NSWGovPayPaymentProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { SubmissionEventTypes, SubmissionTypes } from '@oneblink/types'\nimport { PaymentProvider } from '../../types/payments'\nimport { FormSubmissionResult } from '../../types/submissions'\nimport OneBlinkAppsError from '../errors/oneBlinkAppsError'\nimport {\n generateAmountReceiptItem,\n generateCreditCardMaskReceiptItem,\n generateReceiptItem,\n generateSubmissionIdReceiptItem,\n prepareReceiptItems,\n} from './receipt-items'\nimport { localisationService } from '../..'\n\nclass NSWGovPayPaymentProvider implements PaymentProvider<SubmissionEventTypes.NSWGovPaySubmissionEvent> {\n constructor(\n paymentSubmissionEvent: SubmissionEventTypes.NSWGovPaySubmissionEvent,\n formSubmissionResult: FormSubmissionResult,\n ) {\n this.paymentSubmissionEvent = paymentSubmissionEvent\n this.formSubmissionResult = formSubmissionResult\n }\n\n paymentSubmissionEvent: SubmissionEventTypes.NSWGovPaySubmissionEvent\n formSubmissionResult: FormSubmissionResult\n\n async verifyPaymentTransaction(query: Record<string, unknown>) {\n const {\n submissionId,\n isSuccess,\n errorMessage,\n paymentReference,\n completionReference,\n bankReference,\n paymentMethod,\n cardLast4Digits,\n bPayBillerCode,\n bPayCrn,\n bPayProcessingDate,\n amount,\n surcharge,\n surchargeGst,\n } = query as {\n submissionId?: string\n isSuccess?: string\n errorMessage?: string\n paymentReference?: string\n completionReference?: string\n bankReference?: string\n paymentMethod?: string\n bPayBillerCode?: string\n bPayCrn?: string\n bPayProcessingDate?: string\n cardLast4Digits?: string\n amount?: string\n surcharge?: string\n surchargeGst?: string\n }\n\n if (!submissionId || !isSuccess || !paymentReference) {\n throw new OneBlinkAppsError(\n 'Transactions can not be verified unless navigating here directly after a payment.',\n )\n }\n\n if (this.formSubmissionResult.submissionId !== submissionId) {\n throw new OneBlinkAppsError(\n 'It looks like you are attempting to view a receipt for the incorrect payment.',\n )\n }\n\n return {\n receiptItems: prepareReceiptItems([\n generateSubmissionIdReceiptItem(this.formSubmissionResult.submissionId),\n generateReceiptItem({\n className: 'ob-payment-receipt__completion-reference',\n valueClassName: 'cypress-payment-receipt-completion-reference',\n icon: 'check_circle',\n label: 'Completion Reference',\n value: completionReference,\n allowCopyToClipboard: true,\n }),\n {\n className: 'ob-payment-receipt__payment-reference',\n valueClassName: 'cypress-payment-receipt-payment-reference',\n icon: 'shopping_cart',\n label: 'Payment Reference',\n value: paymentReference,\n allowCopyToClipboard: true,\n },\n generateReceiptItem({\n className: 'ob-payment-receipt__bank-reference',\n valueClassName: 'cypress-payment-receipt-bank-reference',\n icon: 'account_balance',\n label: 'Bank Reference',\n value: bankReference,\n allowCopyToClipboard: true,\n }),\n generateReceiptItem({\n className: 'ob-payment-payment-method',\n valueClassName: 'cypress-payment-receipt-payment-method',\n icon: 'account_balance_wallet',\n label: 'Payment Method',\n value: getPaymentMethodLabel(paymentMethod),\n allowCopyToClipboard: false,\n }),\n generateCreditCardMaskReceiptItem(\n cardLast4Digits ? `xxxx xxxx xxxx ${cardLast4Digits}` : null,\n ),\n generateReceiptItem({\n className: 'ob-payment-receipt__bpay-biller-code',\n valueClassName: 'cypress-payment-receipt-bpay-biller-code',\n icon: 'account_balance',\n label: 'BPay Biller Code',\n value: bPayBillerCode,\n allowCopyToClipboard: true,\n }),\n generateReceiptItem({\n className: 'ob-payment-receipt__bpay-crn',\n valueClassName: 'cypress-payment-receipt-bpay-crn',\n icon: 'account_balance',\n label: 'BPay Reference',\n value: bPayCrn,\n allowCopyToClipboard: true,\n }),\n generateReceiptItem({\n className: 'ob-payment-receipt__bpay-processing-date',\n valueClassName: 'cypress-payment-receipt-bpay-processing-date',\n icon: 'account_balance',\n label: 'BPay Processing Date',\n value: formatBPayProcessingDate(bPayProcessingDate),\n allowCopyToClipboard: false,\n }),\n generateAmountReceiptItem(\n typeof amount === 'string' ? parseFloat(amount) : undefined,\n ),\n generateReceiptItem({\n className: 'ob-payment-receipt__surcharge',\n valueClassName: 'cypress-payment-receipt-surcharge',\n icon: 'price_check',\n label: 'Surcharge Amount',\n value:\n typeof surcharge === 'string'\n ? localisationService.formatCurrency(parseFloat(surcharge))\n : undefined,\n allowCopyToClipboard: false,\n }),\n generateReceiptItem({\n className: 'ob-payment-receipt__surcharge-gst',\n valueClassName: 'cypress-payment-receipt-surcharge-gst',\n icon: 'price_check',\n label: 'Surcharge GST',\n value:\n typeof surchargeGst === 'string'\n ? localisationService.formatCurrency(parseFloat(surchargeGst))\n : undefined,\n allowCopyToClipboard: false,\n }),\n ]),\n transaction: {\n isSuccess: isSuccess === 'true',\n errorMessage,\n },\n submissionResult: this.formSubmissionResult,\n }\n }\n}\n\nfunction getPaymentMethodLabel(paymentMethod: string | undefined) {\n switch (\n paymentMethod as NonNullable<\n NonNullable<\n SubmissionTypes.NSWGovPayPayment['paymentTransaction']\n >['agencyCompletionPayment']\n >['paymentMethod']\n ) {\n case 'PAYID': {\n return 'PayID'\n }\n case 'CARD': {\n return 'Credit Card'\n }\n case 'PAYPAL': {\n return 'PayPal'\n }\n case 'BPAY': {\n return 'BPay'\n }\n default: {\n return paymentMethod\n }\n }\n}\n\nfunction formatBPayProcessingDate(bPayProcessingDate: string | undefined) {\n if (bPayProcessingDate) {\n const date = localisationService.generateDate({\n daysOffset: undefined,\n value: bPayProcessingDate,\n })\n if (date) {\n return localisationService.formatDate(date)\n }\n }\n}\n\nexport default NSWGovPayPaymentProvider\n"]}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { SubmissionEventTypes } from '@oneblink/types';
|
|
2
|
-
import {
|
|
2
|
+
import { PaymentProvider } from '../../types/payments';
|
|
3
3
|
import { FormSubmissionResult } from '../../types/submissions';
|
|
4
4
|
export default class WestpacQuickStreamPaymentProvider implements PaymentProvider<SubmissionEventTypes.WestpacQuickStreamSubmissionEvent> {
|
|
5
5
|
constructor(paymentSubmissionEvent: SubmissionEventTypes.WestpacQuickStreamSubmissionEvent, formSubmissionResult: FormSubmissionResult);
|
|
6
6
|
formSubmissionResult: FormSubmissionResult;
|
|
7
7
|
paymentSubmissionEvent: SubmissionEventTypes.WestpacQuickStreamSubmissionEvent;
|
|
8
|
-
preparePaymentConfiguration(payload: BasePaymentConfigurationPayload): {
|
|
9
|
-
path: string;
|
|
10
|
-
payload: BasePaymentConfigurationPayload;
|
|
11
|
-
};
|
|
12
8
|
verifyPaymentTransaction(query: Record<string, unknown>): Promise<{
|
|
13
9
|
receiptItems: import("../../types/payments").PaymentReceiptItem[];
|
|
14
10
|
transaction: {
|
|
@@ -7,18 +7,6 @@ export default class WestpacQuickStreamPaymentProvider {
|
|
|
7
7
|
this.formSubmissionResult = formSubmissionResult;
|
|
8
8
|
this.paymentSubmissionEvent = paymentSubmissionEvent;
|
|
9
9
|
}
|
|
10
|
-
preparePaymentConfiguration(payload) {
|
|
11
|
-
if (!payload.submissionId) {
|
|
12
|
-
throw new Error('Westpac QuickStream Payments require the "submissionId" option.');
|
|
13
|
-
}
|
|
14
|
-
if (!payload.paymentFormUrl) {
|
|
15
|
-
throw new Error('Westpac QuickStream Payments require the "paymentFormUrl" option.');
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
path: `/forms/${this.formSubmissionResult.definition.id}/westpac-quick-stream-payment`,
|
|
19
|
-
payload,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
10
|
async verifyPaymentTransaction(query) {
|
|
23
11
|
const { paymentReferenceNumber, receiptNumber, maskedCardNumber4Digits, summaryCode, responseDescription, totalAmount, } = query;
|
|
24
12
|
if (!paymentReferenceNumber ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WestpacQuickStreamPaymentProvider.js","sourceRoot":"","sources":["../../../../src/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { SubmissionEventTypes } from '@oneblink/types'\nimport {\n BasePaymentConfigurationPayload,\n PaymentProvider,\n} from '../../types/payments'\nimport { FormSubmissionResult } from '../../types/submissions'\nimport replaceInjectablesWithSubmissionValues from '../replaceInjectablesWithSubmissionValues'\nimport OneBlinkAppsError from '../errors/oneBlinkAppsError'\nimport {\n generateAmountReceiptItem,\n generateCreditCardMaskReceiptItem,\n generateSubmissionIdReceiptItem,\n prepareReceiptItems,\n} from './receipt-items'\nimport {\n cancelWestpacQuickStreamPayment,\n completeWestpacQuickStreamTransaction,\n getCustomFormPaymentConfiguration,\n} from '../api/payment'\n\nexport default class WestpacQuickStreamPaymentProvider\n implements\n PaymentProvider<SubmissionEventTypes.WestpacQuickStreamSubmissionEvent>\n{\n constructor(\n paymentSubmissionEvent: SubmissionEventTypes.WestpacQuickStreamSubmissionEvent,\n formSubmissionResult: FormSubmissionResult,\n ) {\n this.formSubmissionResult = formSubmissionResult\n this.paymentSubmissionEvent = paymentSubmissionEvent\n }\n\n formSubmissionResult: FormSubmissionResult\n paymentSubmissionEvent: SubmissionEventTypes.WestpacQuickStreamSubmissionEvent\n\n preparePaymentConfiguration(payload: BasePaymentConfigurationPayload) {\n if (!payload.submissionId) {\n throw new Error(\n 'Westpac QuickStream Payments require the \"submissionId\" option.',\n )\n }\n if (!payload.paymentFormUrl) {\n throw new Error(\n 'Westpac QuickStream Payments require the \"paymentFormUrl\" option.',\n )\n }\n return {\n path: `/forms/${this.formSubmissionResult.definition.id}/westpac-quick-stream-payment`,\n payload,\n }\n }\n\n async verifyPaymentTransaction(query: Record<string, unknown>) {\n const {\n paymentReferenceNumber,\n receiptNumber,\n maskedCardNumber4Digits,\n summaryCode,\n responseDescription,\n totalAmount,\n } = query as {\n paymentReferenceNumber?: string\n receiptNumber?: string\n maskedCardNumber4Digits?: string\n summaryCode?: string\n responseDescription?: string\n totalAmount?: string\n }\n if (\n !paymentReferenceNumber ||\n !receiptNumber ||\n !summaryCode ||\n !responseDescription ||\n !totalAmount\n ) {\n throw new OneBlinkAppsError(\n 'Transactions can not be verified unless navigating here directly after a payment.',\n )\n }\n if (this.formSubmissionResult.submissionId !== paymentReferenceNumber) {\n throw new OneBlinkAppsError(\n 'It looks like you are attempting to view a receipt for the incorrect payment.',\n )\n }\n\n return {\n receiptItems: prepareReceiptItems([\n generateSubmissionIdReceiptItem(this.formSubmissionResult.submissionId),\n {\n className: 'ob-payment-receipt__transaction-id',\n valueClassName: 'cypress-payment-receipt-transaction-id',\n icon: 'shopping_cart',\n label: 'Receipt Number',\n value: receiptNumber,\n allowCopyToClipboard: true,\n },\n generateCreditCardMaskReceiptItem(maskedCardNumber4Digits),\n generateAmountReceiptItem(parseFloat(totalAmount)),\n ]),\n transaction: {\n isSuccess: summaryCode === '0',\n errorMessage: responseDescription,\n },\n submissionResult: this.formSubmissionResult,\n }\n }\n}\n\nexport async function getPaymentFormConfiguration({\n formSubmissionResult,\n formSubmissionPaymentId,\n paymentSubmissionEvent,\n abortSignal,\n}: {\n formSubmissionResult: FormSubmissionResult\n formSubmissionPaymentId: string\n paymentSubmissionEvent: SubmissionEventTypes.WestpacQuickStreamSubmissionEvent\n abortSignal: AbortSignal\n}): Promise<{\n supplierBusinessCode: string\n publishableApiKey: string\n isTestMode: boolean\n}> {\n const { supplierBusinessCode, publishableApiKey, isTestMode } =\n await getCustomFormPaymentConfiguration<{\n supplierBusinessCode: string\n publishableApiKey: string\n isTestMode: boolean\n }>(\n `/forms/${formSubmissionResult.definition.id}/westpac-quick-stream-payment/${formSubmissionPaymentId}`,\n {\n integrationEnvironmentId:\n paymentSubmissionEvent.configuration.environmentId,\n },\n abortSignal,\n )\n\n return {\n supplierBusinessCode,\n publishableApiKey,\n isTestMode,\n }\n}\n\nexport async function completeTransaction({\n formSubmissionPaymentId,\n formSubmissionResult,\n paymentSubmissionEvent,\n singleUseTokenId,\n captchaSiteKey,\n captchaToken,\n abortSignal,\n}: {\n formSubmissionPaymentId: string\n formSubmissionResult: FormSubmissionResult\n paymentSubmissionEvent: SubmissionEventTypes.WestpacQuickStreamSubmissionEvent\n singleUseTokenId: string\n captchaSiteKey: string\n captchaToken: string\n abortSignal?: AbortSignal\n}) {\n if (!formSubmissionResult.payment) {\n throw new Error(\n '\"formSubmissionResult.payment\" must have a value to complete transactions',\n )\n }\n\n const { formSubmissionPayment } = await completeWestpacQuickStreamTransaction(\n formSubmissionResult.definition.id,\n {\n formSubmissionPaymentId,\n singleUseTokenId,\n integrationEnvironmentId:\n paymentSubmissionEvent.configuration.environmentId,\n customerReferenceNumber: replaceInjectablesWithSubmissionValues(\n paymentSubmissionEvent.configuration.customerReferenceNumber,\n formSubmissionResult,\n ).text,\n principalAmount: formSubmissionResult.payment.amount,\n recaptcha: {\n siteKey: captchaSiteKey,\n token: captchaToken,\n },\n },\n abortSignal,\n )\n\n const url = new URL(formSubmissionResult.payment.paymentReceiptUrl)\n if (\n formSubmissionPayment.type === 'WESTPAC_QUICK_STREAM' &&\n formSubmissionPayment.paymentTransaction\n ) {\n url.searchParams.append(\n 'paymentReferenceNumber',\n formSubmissionPayment.paymentTransaction.paymentReferenceNumber,\n )\n url.searchParams.append(\n 'receiptNumber',\n formSubmissionPayment.paymentTransaction.receiptNumber,\n )\n url.searchParams.append(\n 'totalAmount',\n formSubmissionPayment.paymentTransaction.totalAmount.amount.toString(),\n )\n url.searchParams.append(\n 'summaryCode',\n formSubmissionPayment.paymentTransaction.summaryCode,\n )\n url.searchParams.append(\n 'responseDescription',\n formSubmissionPayment.paymentTransaction.responseDescription,\n )\n if (\n formSubmissionPayment.paymentTransaction.creditCard\n ?.maskedCardNumber4Digits\n ) {\n url.searchParams.append(\n 'maskedCardNumber4Digits',\n formSubmissionPayment.paymentTransaction.creditCard\n ?.maskedCardNumber4Digits,\n )\n }\n }\n\n return {\n formSubmissionPayment,\n paymentReceiptUrl: url.href,\n }\n}\n\nexport async function cancelPayment({\n formSubmissionPaymentId,\n formSubmissionResult,\n abortSignal,\n}: {\n formSubmissionPaymentId: string\n formSubmissionResult: FormSubmissionResult\n abortSignal?: AbortSignal\n}) {\n if (!formSubmissionResult.payment) {\n throw new Error(\n '\"formSubmissionResult.payment\" must have a value to cancel payments',\n )\n }\n\n await cancelWestpacQuickStreamPayment(\n formSubmissionResult.definition.id,\n formSubmissionPaymentId,\n abortSignal,\n )\n\n const url = new URL(formSubmissionResult.payment.paymentReceiptUrl)\n if (formSubmissionResult.submissionId) {\n url.searchParams.append(\n 'paymentReferenceNumber',\n formSubmissionResult.submissionId,\n )\n }\n url.searchParams.append('receiptNumber', formSubmissionPaymentId)\n url.searchParams.append(\n 'totalAmount',\n formSubmissionResult.payment.amount.toString(),\n )\n url.searchParams.append('summaryCode', '1')\n url.searchParams.append('responseDescription', 'Payment Cancelled')\n\n return {\n paymentReceiptUrl: url.href,\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"WestpacQuickStreamPaymentProvider.js","sourceRoot":"","sources":["../../../../src/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { SubmissionEventTypes } from '@oneblink/types'\nimport { PaymentProvider } from '../../types/payments'\nimport { FormSubmissionResult } from '../../types/submissions'\nimport replaceInjectablesWithSubmissionValues from '../replaceInjectablesWithSubmissionValues'\nimport OneBlinkAppsError from '../errors/oneBlinkAppsError'\nimport {\n generateAmountReceiptItem,\n generateCreditCardMaskReceiptItem,\n generateSubmissionIdReceiptItem,\n prepareReceiptItems,\n} from './receipt-items'\nimport {\n cancelWestpacQuickStreamPayment,\n completeWestpacQuickStreamTransaction,\n getCustomFormPaymentConfiguration,\n} from '../api/payment'\n\nexport default class WestpacQuickStreamPaymentProvider implements PaymentProvider<SubmissionEventTypes.WestpacQuickStreamSubmissionEvent> {\n constructor(\n paymentSubmissionEvent: SubmissionEventTypes.WestpacQuickStreamSubmissionEvent,\n formSubmissionResult: FormSubmissionResult,\n ) {\n this.formSubmissionResult = formSubmissionResult\n this.paymentSubmissionEvent = paymentSubmissionEvent\n }\n\n formSubmissionResult: FormSubmissionResult\n paymentSubmissionEvent: SubmissionEventTypes.WestpacQuickStreamSubmissionEvent\n\n async verifyPaymentTransaction(query: Record<string, unknown>) {\n const {\n paymentReferenceNumber,\n receiptNumber,\n maskedCardNumber4Digits,\n summaryCode,\n responseDescription,\n totalAmount,\n } = query as {\n paymentReferenceNumber?: string\n receiptNumber?: string\n maskedCardNumber4Digits?: string\n summaryCode?: string\n responseDescription?: string\n totalAmount?: string\n }\n if (\n !paymentReferenceNumber ||\n !receiptNumber ||\n !summaryCode ||\n !responseDescription ||\n !totalAmount\n ) {\n throw new OneBlinkAppsError(\n 'Transactions can not be verified unless navigating here directly after a payment.',\n )\n }\n if (this.formSubmissionResult.submissionId !== paymentReferenceNumber) {\n throw new OneBlinkAppsError(\n 'It looks like you are attempting to view a receipt for the incorrect payment.',\n )\n }\n\n return {\n receiptItems: prepareReceiptItems([\n generateSubmissionIdReceiptItem(this.formSubmissionResult.submissionId),\n {\n className: 'ob-payment-receipt__transaction-id',\n valueClassName: 'cypress-payment-receipt-transaction-id',\n icon: 'shopping_cart',\n label: 'Receipt Number',\n value: receiptNumber,\n allowCopyToClipboard: true,\n },\n generateCreditCardMaskReceiptItem(maskedCardNumber4Digits),\n generateAmountReceiptItem(parseFloat(totalAmount)),\n ]),\n transaction: {\n isSuccess: summaryCode === '0',\n errorMessage: responseDescription,\n },\n submissionResult: this.formSubmissionResult,\n }\n }\n}\n\nexport async function getPaymentFormConfiguration({\n formSubmissionResult,\n formSubmissionPaymentId,\n paymentSubmissionEvent,\n abortSignal,\n}: {\n formSubmissionResult: FormSubmissionResult\n formSubmissionPaymentId: string\n paymentSubmissionEvent: SubmissionEventTypes.WestpacQuickStreamSubmissionEvent\n abortSignal: AbortSignal\n}): Promise<{\n supplierBusinessCode: string\n publishableApiKey: string\n isTestMode: boolean\n}> {\n const { supplierBusinessCode, publishableApiKey, isTestMode } =\n await getCustomFormPaymentConfiguration<{\n supplierBusinessCode: string\n publishableApiKey: string\n isTestMode: boolean\n }>(\n `/forms/${formSubmissionResult.definition.id}/westpac-quick-stream-payment/${formSubmissionPaymentId}`,\n {\n integrationEnvironmentId:\n paymentSubmissionEvent.configuration.environmentId,\n },\n abortSignal,\n )\n\n return {\n supplierBusinessCode,\n publishableApiKey,\n isTestMode,\n }\n}\n\nexport async function completeTransaction({\n formSubmissionPaymentId,\n formSubmissionResult,\n paymentSubmissionEvent,\n singleUseTokenId,\n captchaSiteKey,\n captchaToken,\n abortSignal,\n}: {\n formSubmissionPaymentId: string\n formSubmissionResult: FormSubmissionResult\n paymentSubmissionEvent: SubmissionEventTypes.WestpacQuickStreamSubmissionEvent\n singleUseTokenId: string\n captchaSiteKey: string\n captchaToken: string\n abortSignal?: AbortSignal\n}) {\n if (!formSubmissionResult.payment) {\n throw new Error(\n '\"formSubmissionResult.payment\" must have a value to complete transactions',\n )\n }\n\n const { formSubmissionPayment } = await completeWestpacQuickStreamTransaction(\n formSubmissionResult.definition.id,\n {\n formSubmissionPaymentId,\n singleUseTokenId,\n integrationEnvironmentId:\n paymentSubmissionEvent.configuration.environmentId,\n customerReferenceNumber: replaceInjectablesWithSubmissionValues(\n paymentSubmissionEvent.configuration.customerReferenceNumber,\n formSubmissionResult,\n ).text,\n principalAmount: formSubmissionResult.payment.amount,\n recaptcha: {\n siteKey: captchaSiteKey,\n token: captchaToken,\n },\n },\n abortSignal,\n )\n\n const url = new URL(formSubmissionResult.payment.paymentReceiptUrl)\n if (\n formSubmissionPayment.type === 'WESTPAC_QUICK_STREAM' &&\n formSubmissionPayment.paymentTransaction\n ) {\n url.searchParams.append(\n 'paymentReferenceNumber',\n formSubmissionPayment.paymentTransaction.paymentReferenceNumber,\n )\n url.searchParams.append(\n 'receiptNumber',\n formSubmissionPayment.paymentTransaction.receiptNumber,\n )\n url.searchParams.append(\n 'totalAmount',\n formSubmissionPayment.paymentTransaction.totalAmount.amount.toString(),\n )\n url.searchParams.append(\n 'summaryCode',\n formSubmissionPayment.paymentTransaction.summaryCode,\n )\n url.searchParams.append(\n 'responseDescription',\n formSubmissionPayment.paymentTransaction.responseDescription,\n )\n if (\n formSubmissionPayment.paymentTransaction.creditCard\n ?.maskedCardNumber4Digits\n ) {\n url.searchParams.append(\n 'maskedCardNumber4Digits',\n formSubmissionPayment.paymentTransaction.creditCard\n ?.maskedCardNumber4Digits,\n )\n }\n }\n\n return {\n formSubmissionPayment,\n paymentReceiptUrl: url.href,\n }\n}\n\nexport async function cancelPayment({\n formSubmissionPaymentId,\n formSubmissionResult,\n abortSignal,\n}: {\n formSubmissionPaymentId: string\n formSubmissionResult: FormSubmissionResult\n abortSignal?: AbortSignal\n}) {\n if (!formSubmissionResult.payment) {\n throw new Error(\n '\"formSubmissionResult.payment\" must have a value to cancel payments',\n )\n }\n\n await cancelWestpacQuickStreamPayment(\n formSubmissionResult.definition.id,\n formSubmissionPaymentId,\n abortSignal,\n )\n\n const url = new URL(formSubmissionResult.payment.paymentReceiptUrl)\n if (formSubmissionResult.submissionId) {\n url.searchParams.append(\n 'paymentReferenceNumber',\n formSubmissionResult.submissionId,\n )\n }\n url.searchParams.append('receiptNumber', formSubmissionPaymentId)\n url.searchParams.append(\n 'totalAmount',\n formSubmissionResult.payment.amount.toString(),\n )\n url.searchParams.append('summaryCode', '1')\n url.searchParams.append('responseDescription', 'Payment Cancelled')\n\n return {\n paymentReceiptUrl: url.href,\n }\n}\n"]}
|
|
@@ -18,15 +18,15 @@ function notifyJobSubmittedIfApplicable(formSubmission) {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
export default async function submit({ formSubmission, isPendingQueueEnabled, paymentReceiptUrl, paymentFormUrl, schedulingUrlConfiguration, onProgress, shouldRunServerValidation, shouldRunExternalIdGeneration, abortSignal, pendingTimestamp, alwaysSubmitViaPendingQueue, completionTimestamp, }) {
|
|
21
|
-
const
|
|
21
|
+
const paymentSubmissionEvent = checkForPaymentSubmissionEvent(formSubmission, completionTimestamp);
|
|
22
22
|
const schedulingSubmissionEvent = checkForSchedulingSubmissionEvent(formSubmission, completionTimestamp);
|
|
23
23
|
try {
|
|
24
24
|
if (pendingTimestamp) {
|
|
25
25
|
await deletePendingQueueSubmission(pendingTimestamp);
|
|
26
26
|
}
|
|
27
27
|
if (isOffline() || alwaysSubmitViaPendingQueue) {
|
|
28
|
-
if (
|
|
29
|
-
console.log('Offline or always submitting via pending queue - form has a payment/scheduling submission event that has not been processed yet, return offline', {
|
|
28
|
+
if (paymentSubmissionEvent || schedulingSubmissionEvent) {
|
|
29
|
+
console.log('Offline or always submitting via pending queue - form has a payment/scheduling submission event that has not been processed yet, return offline', { paymentSubmissionEvent, schedulingSubmissionEvent });
|
|
30
30
|
return Object.assign({}, formSubmission, {
|
|
31
31
|
isOffline: true,
|
|
32
32
|
isInPendingQueue: false,
|
|
@@ -65,8 +65,8 @@ export default async function submit({ formSubmission, isPendingQueueEnabled, pa
|
|
|
65
65
|
}
|
|
66
66
|
const attachmentsStillUploading = checkIfAttachmentsAreUploading(formSubmission.definition, formSubmission.submission);
|
|
67
67
|
if (attachmentsStillUploading) {
|
|
68
|
-
if (
|
|
69
|
-
console.log('Attachments still uploading - form has a payment/scheduling submission event that has not been processed yet, return isUploading', {
|
|
68
|
+
if (paymentSubmissionEvent || schedulingSubmissionEvent) {
|
|
69
|
+
console.log('Attachments still uploading - form has a payment/scheduling submission event that has not been processed yet, return isUploading', { paymentSubmissionEvent, schedulingSubmissionEvent });
|
|
70
70
|
return Object.assign({}, formSubmission, {
|
|
71
71
|
isOffline: false,
|
|
72
72
|
isInPendingQueue: false,
|
|
@@ -160,11 +160,10 @@ export default async function submit({ formSubmission, isPendingQueueEnabled, pa
|
|
|
160
160
|
preventPayment: data.preventPayment,
|
|
161
161
|
});
|
|
162
162
|
}
|
|
163
|
-
else if (
|
|
163
|
+
else if (paymentSubmissionEvent &&
|
|
164
164
|
paymentReceiptUrl &&
|
|
165
165
|
!data.preventPayment) {
|
|
166
166
|
formSubmissionResult.payment = await handlePaymentSubmissionEvent({
|
|
167
|
-
...paymentSubmissionEventConfiguration,
|
|
168
167
|
formSubmissionResult,
|
|
169
168
|
paymentReceiptUrl,
|
|
170
169
|
paymentFormUrl,
|
|
@@ -189,7 +188,7 @@ export default async function submit({ formSubmission, isPendingQueueEnabled, pa
|
|
|
189
188
|
if (error.isOffline) {
|
|
190
189
|
if (!isPendingQueueEnabled ||
|
|
191
190
|
schedulingSubmissionEvent ||
|
|
192
|
-
|
|
191
|
+
paymentSubmissionEvent) {
|
|
193
192
|
console.warn('Offline error thrown - app or form does not support pending queue, return offline', error);
|
|
194
193
|
return Object.assign({}, formSubmission, {
|
|
195
194
|
isOffline: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../src/apps/services/submit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,sBAAsB,CAAA;AAQ7B,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,OAAO,MAAM,YAAY,CAAA;AAChC,OAAO,oBAAoB,MAAM,0BAA0B,CAAA;AAC3D,OAAO,kBAAkB,MAAM,qBAAqB,CAAA;AACpD,OAAO,iBAAiB,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEnD,SAAS,8BAA8B,CAAC,cAA8B;IACpE,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;QACzB,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;AACH,CAAC;AAkBD,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,MAAM,CAAC,EACnC,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,0BAA0B,EAC1B,UAAU,EACV,yBAAyB,EACzB,6BAA6B,EAC7B,WAAW,EACX,gBAAgB,EAChB,2BAA2B,EAC3B,mBAAmB,GAGpB;IACC,MAAM,mCAAmC,GAAG,8BAA8B,CACxE,cAAc,EACd,mBAAmB,CACpB,CAAA;IAED,MAAM,yBAAyB,GAAG,iCAAiC,CACjE,cAAc,EACd,mBAAmB,CACpB,CAAA;IAED,IAAI,CAAC;QACH,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,4BAA4B,CAAC,gBAAgB,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,SAAS,EAAE,IAAI,2BAA2B,EAAE,CAAC;YAC/C,IAAI,mCAAmC,IAAI,yBAAyB,EAAE,CAAC;gBACrE,OAAO,CAAC,GAAG,CACT,iJAAiJ,EACjJ,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,CACnE,CAAA;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE;oBACvC,SAAS,EAAE,IAAI;oBACf,gBAAgB,EAAE,KAAK;oBACvB,mBAAmB,EAAE,IAAI;oBACzB,YAAY,EAAE,IAAI;oBAClB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,IAAI;oBAChB,sBAAsB,EAAE,KAAK;iBAC9B,CAAC,CAAA;YACJ,CAAC;YAED,IAAI,CAAC,2BAA2B,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC3D,OAAO,CAAC,GAAG,CACT,8DAA8D,CAC/D,CAAA;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE;oBACvC,SAAS,EAAE,IAAI;oBACf,gBAAgB,EAAE,KAAK;oBACvB,mBAAmB,EAAE,IAAI;oBACzB,YAAY,EAAE,IAAI;oBAClB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,IAAI;oBAChB,sBAAsB,EAAE,KAAK;iBAC9B,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,CAAC,GAAG,CACT,uFAAuF,CACxF,CAAA;YACD,MAAM,+BAA+B,CAAC,cAAc,CAAC,CAAA;YACrD,8BAA8B,CAAC,cAAc,CAAC,CAAA;YAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE;gBACvC,SAAS,EAAE,SAAS,EAAE;gBACtB,gBAAgB,EAAE,IAAI;gBACtB,mBAAmB,EAAE,IAAI;gBACzB,YAAY,EAAE,IAAI;gBAClB,OAAO,EAAE,IAAI;gBACb,cAAc,EAAE,KAAK;gBACrB,UAAU,EAAE,IAAI;gBAChB,sBAAsB,EAAE,KAAK;aAC9B,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,yBAAyB,GAAG,8BAA8B,CAC9D,cAAc,CAAC,UAAU,EACzB,cAAc,CAAC,UAAU,CAC1B,CAAA;QAED,IAAI,yBAAyB,EAAE,CAAC;YAC9B,IAAI,mCAAmC,IAAI,yBAAyB,EAAE,CAAC;gBACrE,OAAO,CAAC,GAAG,CACT,kIAAkI,EAClI,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,CACnE,CAAA;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE;oBACvC,SAAS,EAAE,KAAK;oBAChB,gBAAgB,EAAE,KAAK;oBACvB,mBAAmB,EAAE,IAAI;oBACzB,YAAY,EAAE,IAAI;oBAClB,OAAO,EAAE,IAAI;oBACb,cAAc,EAAE,KAAK;oBACrB,UAAU,EAAE,IAAI;oBAChB,sBAAsB,EAAE,IAAI;iBAC7B,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,CAAC,GAAG,CACT,oEAAoE,CACrE,CAAA;YACD,MAAM,+BAA+B,CAAC,cAAc,CAAC,CAAA;YACrD,8BAA8B,CAAC,cAAc,CAAC,CAAA;YAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE;gBACvC,SAAS,EAAE,KAAK;gBAChB,gBAAgB,EAAE,IAAI;gBACtB,mBAAmB,EAAE,IAAI;gBACzB,YAAY,EAAE,IAAI;gBAClB,OAAO,EAAE,IAAI;gBACb,cAAc,EAAE,KAAK;gBACrB,UAAU,EAAE,IAAI;gBAChB,sBAAsB,EAAE,IAAI;aAC7B,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,yBAAyB,EAAE,CAAC;YAC9B,MAAM,kBAAkB,CAAC,cAAc,CAAC,CAAA;QAC1C,CAAC;QACD,IAAI,6BAA6B,EAAE,CAAC;YAClC,MAAM,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,cAAc,CAAC,CAAA;YACnE,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;gBAChC,cAAc,CAAC,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAA;YACzD,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,oBAAoB,CACrC,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,WAAW,CACZ,CAAA;QAED,MAAM,4BAA4B,GAAG,GAAG,EAAE;;YACxC,MAAM,gBAAgB,GACpB,MAAA,cAAc,CAAC,UAAU,CAAC,qBAAqB,0CAAE,gBAAgB,CAAA;YACnE,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC9C,OAAO;oBACL,wBAAwB,EAAE,SAAS;oBACnC,sBAAsB,EAAE,SAAS;iBAClC,CAAA;YACH,CAAC;YACD,IAAI,gBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACzD,0BAA0B;gBAC1B,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,UAAU,cAAc,CAAC,UAAU,CAAC,EAAE,gBAAgB,IAAI,CAAC,YAAY,6BAA6B,IAAI,CAAC,cAAc,EAAE,CAAA;gBACjK,OAAO;oBACL,wBAAwB,EAAE,GAAG;oBAC7B,sBAAsB,EAAE;wBACtB;4BACE,EAAE,EAAE,SAAS;4BACb,aAAa,EAAE,gBAAgB;4BAC/B,GAAG;yBACJ;qBACF;iBACF,CAAA;YACH,CAAC;YAED,OAAO;gBACL,wBAAwB,EAAE,SAAS;gBACnC,sBAAsB,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE;oBAChE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,UAAU,cAAc,CAAC,UAAU,CAAC,EAAE,gBAAgB,IAAI,CAAC,YAAY,6BAA6B,IAAI,CAAC,cAAc,oBAAoB,gBAAgB,CAAC,EAAE,EAAE,CAAA;oBACxM,OAAO;wBACL,GAAG,gBAAgB;wBACnB,GAAG;qBACJ,CAAA;gBACH,CAAC,CAAC;aACH,CAAA;QACH,CAAC,CAAA;QAED,MAAM,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,GACxD,4BAA4B,EAAE,CAAA;QAEhC,MAAM,oBAAoB,GAAyB;YACjD,GAAG,cAAc;YACjB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,KAAK;YAChB,gBAAgB,EAAE,KAAK;YACvB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,sBAAsB,EAAE,KAAK;YAC7B,wBAAwB;YACxB,sBAAsB;YACtB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACpD,CAAA;QAED,IAAI,yBAAyB,IAAI,0BAA0B,EAAE,CAAC;YAC5D,oBAAoB,CAAC,UAAU,GAAG,MAAM,+BAA+B,CAAC;gBACtE,oBAAoB;gBACpB,yBAAyB;gBACzB,0BAA0B;gBAC1B,iBAAiB;gBACjB,cAAc;gBACd,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC,CAAA;QACJ,CAAC;aAAM,IACL,mCAAmC;YACnC,iBAAiB;YACjB,CAAC,IAAI,CAAC,cAAc,EACpB,CAAC;YACD,oBAAoB,CAAC,OAAO,GAAG,MAAM,4BAA4B,CAAC;gBAChE,GAAG,mCAAmC;gBACtC,oBAAoB;gBACpB,iBAAiB;gBACjB,cAAc;aACf,CAAC,CAAA;QACJ,CAAC;QAED,kDAAkD;QAClD,IAAI,cAAc,CAAC,qBAAqB,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YACtE,MAAM,0BAA0B,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAA;YACtE,UAAU,CAAC;gBACT,UAAU,EAAE,cAAc,CAAC,UAAU;gBACrC,UAAU,EAAE,KAAK;aAClB,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,cAAc,CAAC,iBAAiB,EAAE,CAAC;YACrC,MAAM,qBAAqB,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAA;QAC/D,CAAC;QAED,8BAA8B,CAAC,cAAc,CAAC,CAAA;QAE9C,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IAAC,OAAO,KAAkC,EAAE,CAAC;QAC5C,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpB,IACE,CAAC,qBAAqB;oBACtB,yBAAyB;oBACzB,mCAAmC,EACnC,CAAC;oBACD,OAAO,CAAC,IAAI,CACV,mFAAmF,EACnF,KAAK,CACN,CAAA;oBACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE;wBACvC,SAAS,EAAE,IAAI;wBACf,gBAAgB,EAAE,KAAK;wBACvB,mBAAmB,EAAE,IAAI;wBACzB,YAAY,EAAE,IAAI;wBAClB,OAAO,EAAE,IAAI;wBACb,UAAU,EAAE,IAAI;wBAChB,sBAAsB,EAAE,KAAK;wBAC7B,cAAc,EAAE,KAAK;qBACtB,CAAC,CAAA;gBACJ,CAAC;gBAED,OAAO,CAAC,IAAI,CACV,6DAA6D,EAC7D,KAAK,CACN,CAAA;gBACD,MAAM,+BAA+B,CAAC,cAAc,CAAC,CAAA;gBACrD,8BAA8B,CAAC,cAAc,CAAC,CAAA;gBAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE;oBACvC,SAAS,EAAE,IAAI;oBACf,gBAAgB,EAAE,IAAI;oBACtB,mBAAmB,EAAE,IAAI;oBACzB,YAAY,EAAE,IAAI;oBAClB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,IAAI;oBAChB,sBAAsB,EAAE,KAAK;oBAC7B,cAAc,EAAE,KAAK;iBACtB,CAAC,CAAA;YACJ,CAAC;YAED,6CAA6C;YAC7C,4CAA4C;YAC5C,MAAM,KAAK,CAAA;QACb,CAAC;QAED,MAAM,IAAI,iBAAiB,CACzB,8FAA8F,EAC9F;YACE,KAAK,EAAE,kBAAkB;YACzB,aAAa,EAAE,KAAc;SAC9B,CACF,CAAA;IACH,CAAC;AACH,CAAC","sourcesContent":["import { isOffline } from '../offline-service'\nimport {\n addFormSubmissionToPendingQueue,\n deletePendingQueueSubmission,\n} from './pending-queue'\nimport {\n checkForPaymentSubmissionEvent,\n handlePaymentSubmissionEvent,\n} from '../payment-service'\nimport { removeLocalDraftSubmission } from './draft-data-store'\nimport { removePrefillFormData } from '../prefill-service'\nimport {\n handleSchedulingSubmissionEvent,\n checkForSchedulingSubmissionEvent,\n} from './schedulingHandlers'\nimport {\n FormSubmission,\n FormSubmissionResult,\n ProgressListener,\n ProgressListenerEvent,\n} from '../types/submissions'\nimport { SchedulingUrlConfiguration } from '../types/scheduling'\nimport { checkIfAttachmentsAreUploading } from '../attachments-service'\nimport tenants from '../tenants'\nimport externalIdGeneration from './external-id-generation'\nimport serverValidateForm from './server-validation'\nimport OneBlinkAppsError from './errors/oneBlinkAppsError'\nimport { uploadFormSubmission } from './api/submissions'\nimport { syncDrafts } from '../draft-service'\nimport { notifyJobSubmitted } from '../job-service'\n\nfunction notifyJobSubmittedIfApplicable(formSubmission: FormSubmission) {\n if (formSubmission.jobId) {\n notifyJobSubmitted(formSubmission.jobId)\n }\n}\n\ntype SubmissionParams = {\n formSubmission: FormSubmission\n isPendingQueueEnabled: boolean\n shouldRunServerValidation: boolean\n shouldRunExternalIdGeneration: boolean\n paymentReceiptUrl: string | undefined\n paymentFormUrl: string | undefined\n schedulingUrlConfiguration?: SchedulingUrlConfiguration\n pendingTimestamp?: string\n alwaysSubmitViaPendingQueue?: boolean\n onProgress?: ProgressListener\n abortSignal?: AbortSignal\n}\n\nexport { SubmissionParams, ProgressListener, ProgressListenerEvent }\n\nexport default async function submit({\n formSubmission,\n isPendingQueueEnabled,\n paymentReceiptUrl,\n paymentFormUrl,\n schedulingUrlConfiguration,\n onProgress,\n shouldRunServerValidation,\n shouldRunExternalIdGeneration,\n abortSignal,\n pendingTimestamp,\n alwaysSubmitViaPendingQueue,\n completionTimestamp,\n}: SubmissionParams & {\n completionTimestamp: string\n}): Promise<FormSubmissionResult> {\n const paymentSubmissionEventConfiguration = checkForPaymentSubmissionEvent(\n formSubmission,\n completionTimestamp,\n )\n\n const schedulingSubmissionEvent = checkForSchedulingSubmissionEvent(\n formSubmission,\n completionTimestamp,\n )\n\n try {\n if (pendingTimestamp) {\n await deletePendingQueueSubmission(pendingTimestamp)\n }\n if (isOffline() || alwaysSubmitViaPendingQueue) {\n if (paymentSubmissionEventConfiguration || schedulingSubmissionEvent) {\n console.log(\n 'Offline or always submitting via pending queue - form has a payment/scheduling submission event that has not been processed yet, return offline',\n { paymentSubmissionEventConfiguration, schedulingSubmissionEvent },\n )\n return Object.assign({}, formSubmission, {\n isOffline: true,\n isInPendingQueue: false,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n scheduling: null,\n isUploadingAttachments: false,\n })\n }\n\n if (!alwaysSubmitViaPendingQueue && !isPendingQueueEnabled) {\n console.log(\n 'Offline - app does not support pending queue, return offline',\n )\n return Object.assign({}, formSubmission, {\n isOffline: true,\n isInPendingQueue: false,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n scheduling: null,\n isUploadingAttachments: false,\n })\n }\n\n console.log(\n 'Offline or always submitting via pending queue - saving submission to pending queue..',\n )\n await addFormSubmissionToPendingQueue(formSubmission)\n notifyJobSubmittedIfApplicable(formSubmission)\n return Object.assign({}, formSubmission, {\n isOffline: isOffline(),\n isInPendingQueue: true,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n preventPayment: false,\n scheduling: null,\n isUploadingAttachments: false,\n })\n }\n\n const attachmentsStillUploading = checkIfAttachmentsAreUploading(\n formSubmission.definition,\n formSubmission.submission,\n )\n\n if (attachmentsStillUploading) {\n if (paymentSubmissionEventConfiguration || schedulingSubmissionEvent) {\n console.log(\n 'Attachments still uploading - form has a payment/scheduling submission event that has not been processed yet, return isUploading',\n { paymentSubmissionEventConfiguration, schedulingSubmissionEvent },\n )\n return Object.assign({}, formSubmission, {\n isOffline: false,\n isInPendingQueue: false,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n preventPayment: false,\n scheduling: null,\n isUploadingAttachments: true,\n })\n }\n console.log(\n 'Attachments still uploading - saving submission to pending queue..',\n )\n await addFormSubmissionToPendingQueue(formSubmission)\n notifyJobSubmittedIfApplicable(formSubmission)\n return Object.assign({}, formSubmission, {\n isOffline: false,\n isInPendingQueue: true,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n preventPayment: false,\n scheduling: null,\n isUploadingAttachments: true,\n })\n }\n\n if (shouldRunServerValidation) {\n await serverValidateForm(formSubmission)\n }\n if (shouldRunExternalIdGeneration) {\n const externalIdResult = await externalIdGeneration(formSubmission)\n if (externalIdResult.externalId) {\n formSubmission.externalId = externalIdResult.externalId\n }\n }\n\n const data = await uploadFormSubmission(\n formSubmission,\n completionTimestamp,\n onProgress,\n abortSignal,\n )\n\n const getDownloadSubmissionPdfUrls = () => {\n const allowPDFDownload =\n formSubmission.definition.postSubmissionReceipt?.allowPDFDownload\n if (!data.pdfAccessToken || !allowPDFDownload) {\n return {\n downloadSubmissionPdfUrl: undefined,\n downloadSubmissionPdfs: undefined,\n }\n }\n if (allowPDFDownload && !Array.isArray(allowPDFDownload)) {\n // Cater for legacy config\n const url = `${tenants.current.apiOrigin}/forms/${formSubmission.definition.id}/submissions/${data.submissionId}/pdf-document?accessToken=${data.pdfAccessToken}`\n return {\n downloadSubmissionPdfUrl: url,\n downloadSubmissionPdfs: [\n {\n id: 'default',\n configuration: allowPDFDownload,\n url,\n },\n ],\n }\n }\n\n return {\n downloadSubmissionPdfUrl: undefined,\n downloadSubmissionPdfs: allowPDFDownload.map((pdfConfiguration) => {\n const url = `${tenants.current.apiOrigin}/forms/${formSubmission.definition.id}/submissions/${data.submissionId}/pdf-document?accessToken=${data.pdfAccessToken}&configurationId=${pdfConfiguration.id}`\n return {\n ...pdfConfiguration,\n url,\n }\n }),\n }\n }\n\n const { downloadSubmissionPdfUrl, downloadSubmissionPdfs } =\n getDownloadSubmissionPdfUrls()\n\n const formSubmissionResult: FormSubmissionResult = {\n ...formSubmission,\n payment: null,\n scheduling: null,\n isOffline: false,\n isInPendingQueue: false,\n submissionTimestamp: data.submissionTimestamp,\n submissionId: data.submissionId,\n isUploadingAttachments: false,\n downloadSubmissionPdfUrl,\n downloadSubmissionPdfs,\n attachmentsAccessToken: data.attachmentsAccessToken,\n }\n\n if (schedulingSubmissionEvent && schedulingUrlConfiguration) {\n formSubmissionResult.scheduling = await handleSchedulingSubmissionEvent({\n formSubmissionResult,\n schedulingSubmissionEvent,\n schedulingUrlConfiguration,\n paymentReceiptUrl,\n paymentFormUrl,\n preventPayment: data.preventPayment,\n })\n } else if (\n paymentSubmissionEventConfiguration &&\n paymentReceiptUrl &&\n !data.preventPayment\n ) {\n formSubmissionResult.payment = await handlePaymentSubmissionEvent({\n ...paymentSubmissionEventConfiguration,\n formSubmissionResult,\n paymentReceiptUrl,\n paymentFormUrl,\n })\n }\n\n //currently cannot have drafts without a forms app\n if (formSubmission.formSubmissionDraftId && formSubmission.formsAppId) {\n await removeLocalDraftSubmission(formSubmission.formSubmissionDraftId)\n syncDrafts({\n formsAppId: formSubmission.formsAppId,\n throwError: false,\n })\n }\n if (formSubmission.preFillFormDataId) {\n await removePrefillFormData(formSubmission.preFillFormDataId)\n }\n\n notifyJobSubmittedIfApplicable(formSubmission)\n\n return formSubmissionResult\n } catch (error: OneBlinkAppsError | unknown) {\n if (error instanceof OneBlinkAppsError) {\n if (error.isOffline) {\n if (\n !isPendingQueueEnabled ||\n schedulingSubmissionEvent ||\n paymentSubmissionEventConfiguration\n ) {\n console.warn(\n 'Offline error thrown - app or form does not support pending queue, return offline',\n error,\n )\n return Object.assign({}, formSubmission, {\n isOffline: true,\n isInPendingQueue: false,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n scheduling: null,\n isUploadingAttachments: false,\n preventPayment: false,\n })\n }\n\n console.warn(\n 'Offline error thrown - saving submission to pending queue..',\n error,\n )\n await addFormSubmissionToPendingQueue(formSubmission)\n notifyJobSubmittedIfApplicable(formSubmission)\n return Object.assign({}, formSubmission, {\n isOffline: true,\n isInPendingQueue: true,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n scheduling: null,\n isUploadingAttachments: false,\n preventPayment: false,\n })\n }\n\n // If the error has already been handled as a\n // OneBlinkAppsError, we can throw it as is.\n throw error\n }\n\n throw new OneBlinkAppsError(\n 'An error has occurred with your submission, please contact Support if this problem persists.',\n {\n title: 'Unexpected Error',\n originalError: error as Error,\n },\n )\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../src/apps/services/submit.ts"],"names":[],"mappings":"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","sourcesContent":["import { isOffline } from '../offline-service'\nimport {\n addFormSubmissionToPendingQueue,\n deletePendingQueueSubmission,\n} from './pending-queue'\nimport {\n checkForPaymentSubmissionEvent,\n handlePaymentSubmissionEvent,\n} from '../payment-service'\nimport { removeLocalDraftSubmission } from './draft-data-store'\nimport { removePrefillFormData } from '../prefill-service'\nimport {\n handleSchedulingSubmissionEvent,\n checkForSchedulingSubmissionEvent,\n} from './schedulingHandlers'\nimport {\n FormSubmission,\n FormSubmissionResult,\n ProgressListener,\n ProgressListenerEvent,\n} from '../types/submissions'\nimport { SchedulingUrlConfiguration } from '../types/scheduling'\nimport { checkIfAttachmentsAreUploading } from '../attachments-service'\nimport tenants from '../tenants'\nimport externalIdGeneration from './external-id-generation'\nimport serverValidateForm from './server-validation'\nimport OneBlinkAppsError from './errors/oneBlinkAppsError'\nimport { uploadFormSubmission } from './api/submissions'\nimport { syncDrafts } from '../draft-service'\nimport { notifyJobSubmitted } from '../job-service'\n\nfunction notifyJobSubmittedIfApplicable(formSubmission: FormSubmission) {\n if (formSubmission.jobId) {\n notifyJobSubmitted(formSubmission.jobId)\n }\n}\n\ntype SubmissionParams = {\n formSubmission: FormSubmission\n isPendingQueueEnabled: boolean\n shouldRunServerValidation: boolean\n shouldRunExternalIdGeneration: boolean\n paymentReceiptUrl: string | undefined\n paymentFormUrl: string | undefined\n schedulingUrlConfiguration?: SchedulingUrlConfiguration\n pendingTimestamp?: string\n alwaysSubmitViaPendingQueue?: boolean\n onProgress?: ProgressListener\n abortSignal?: AbortSignal\n}\n\nexport { SubmissionParams, ProgressListener, ProgressListenerEvent }\n\nexport default async function submit({\n formSubmission,\n isPendingQueueEnabled,\n paymentReceiptUrl,\n paymentFormUrl,\n schedulingUrlConfiguration,\n onProgress,\n shouldRunServerValidation,\n shouldRunExternalIdGeneration,\n abortSignal,\n pendingTimestamp,\n alwaysSubmitViaPendingQueue,\n completionTimestamp,\n}: SubmissionParams & {\n completionTimestamp: string\n}): Promise<FormSubmissionResult> {\n const paymentSubmissionEvent = checkForPaymentSubmissionEvent(\n formSubmission,\n completionTimestamp,\n )\n\n const schedulingSubmissionEvent = checkForSchedulingSubmissionEvent(\n formSubmission,\n completionTimestamp,\n )\n\n try {\n if (pendingTimestamp) {\n await deletePendingQueueSubmission(pendingTimestamp)\n }\n if (isOffline() || alwaysSubmitViaPendingQueue) {\n if (paymentSubmissionEvent || schedulingSubmissionEvent) {\n console.log(\n 'Offline or always submitting via pending queue - form has a payment/scheduling submission event that has not been processed yet, return offline',\n { paymentSubmissionEvent, schedulingSubmissionEvent },\n )\n return Object.assign({}, formSubmission, {\n isOffline: true,\n isInPendingQueue: false,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n scheduling: null,\n isUploadingAttachments: false,\n })\n }\n\n if (!alwaysSubmitViaPendingQueue && !isPendingQueueEnabled) {\n console.log(\n 'Offline - app does not support pending queue, return offline',\n )\n return Object.assign({}, formSubmission, {\n isOffline: true,\n isInPendingQueue: false,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n scheduling: null,\n isUploadingAttachments: false,\n })\n }\n\n console.log(\n 'Offline or always submitting via pending queue - saving submission to pending queue..',\n )\n await addFormSubmissionToPendingQueue(formSubmission)\n notifyJobSubmittedIfApplicable(formSubmission)\n return Object.assign({}, formSubmission, {\n isOffline: isOffline(),\n isInPendingQueue: true,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n preventPayment: false,\n scheduling: null,\n isUploadingAttachments: false,\n })\n }\n\n const attachmentsStillUploading = checkIfAttachmentsAreUploading(\n formSubmission.definition,\n formSubmission.submission,\n )\n\n if (attachmentsStillUploading) {\n if (paymentSubmissionEvent || schedulingSubmissionEvent) {\n console.log(\n 'Attachments still uploading - form has a payment/scheduling submission event that has not been processed yet, return isUploading',\n { paymentSubmissionEvent, schedulingSubmissionEvent },\n )\n return Object.assign({}, formSubmission, {\n isOffline: false,\n isInPendingQueue: false,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n preventPayment: false,\n scheduling: null,\n isUploadingAttachments: true,\n })\n }\n console.log(\n 'Attachments still uploading - saving submission to pending queue..',\n )\n await addFormSubmissionToPendingQueue(formSubmission)\n notifyJobSubmittedIfApplicable(formSubmission)\n return Object.assign({}, formSubmission, {\n isOffline: false,\n isInPendingQueue: true,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n preventPayment: false,\n scheduling: null,\n isUploadingAttachments: true,\n })\n }\n\n if (shouldRunServerValidation) {\n await serverValidateForm(formSubmission)\n }\n if (shouldRunExternalIdGeneration) {\n const externalIdResult = await externalIdGeneration(formSubmission)\n if (externalIdResult.externalId) {\n formSubmission.externalId = externalIdResult.externalId\n }\n }\n\n const data = await uploadFormSubmission(\n formSubmission,\n completionTimestamp,\n onProgress,\n abortSignal,\n )\n\n const getDownloadSubmissionPdfUrls = () => {\n const allowPDFDownload =\n formSubmission.definition.postSubmissionReceipt?.allowPDFDownload\n if (!data.pdfAccessToken || !allowPDFDownload) {\n return {\n downloadSubmissionPdfUrl: undefined,\n downloadSubmissionPdfs: undefined,\n }\n }\n if (allowPDFDownload && !Array.isArray(allowPDFDownload)) {\n // Cater for legacy config\n const url = `${tenants.current.apiOrigin}/forms/${formSubmission.definition.id}/submissions/${data.submissionId}/pdf-document?accessToken=${data.pdfAccessToken}`\n return {\n downloadSubmissionPdfUrl: url,\n downloadSubmissionPdfs: [\n {\n id: 'default',\n configuration: allowPDFDownload,\n url,\n },\n ],\n }\n }\n\n return {\n downloadSubmissionPdfUrl: undefined,\n downloadSubmissionPdfs: allowPDFDownload.map((pdfConfiguration) => {\n const url = `${tenants.current.apiOrigin}/forms/${formSubmission.definition.id}/submissions/${data.submissionId}/pdf-document?accessToken=${data.pdfAccessToken}&configurationId=${pdfConfiguration.id}`\n return {\n ...pdfConfiguration,\n url,\n }\n }),\n }\n }\n\n const { downloadSubmissionPdfUrl, downloadSubmissionPdfs } =\n getDownloadSubmissionPdfUrls()\n\n const formSubmissionResult: FormSubmissionResult = {\n ...formSubmission,\n payment: null,\n scheduling: null,\n isOffline: false,\n isInPendingQueue: false,\n submissionTimestamp: data.submissionTimestamp,\n submissionId: data.submissionId,\n isUploadingAttachments: false,\n downloadSubmissionPdfUrl,\n downloadSubmissionPdfs,\n attachmentsAccessToken: data.attachmentsAccessToken,\n }\n\n if (schedulingSubmissionEvent && schedulingUrlConfiguration) {\n formSubmissionResult.scheduling = await handleSchedulingSubmissionEvent({\n formSubmissionResult,\n schedulingSubmissionEvent,\n schedulingUrlConfiguration,\n paymentReceiptUrl,\n paymentFormUrl,\n preventPayment: data.preventPayment,\n })\n } else if (\n paymentSubmissionEvent &&\n paymentReceiptUrl &&\n !data.preventPayment\n ) {\n formSubmissionResult.payment = await handlePaymentSubmissionEvent({\n formSubmissionResult,\n paymentReceiptUrl,\n paymentFormUrl,\n })\n }\n\n //currently cannot have drafts without a forms app\n if (formSubmission.formSubmissionDraftId && formSubmission.formsAppId) {\n await removeLocalDraftSubmission(formSubmission.formSubmissionDraftId)\n syncDrafts({\n formsAppId: formSubmission.formsAppId,\n throwError: false,\n })\n }\n if (formSubmission.preFillFormDataId) {\n await removePrefillFormData(formSubmission.preFillFormDataId)\n }\n\n notifyJobSubmittedIfApplicable(formSubmission)\n\n return formSubmissionResult\n } catch (error: OneBlinkAppsError | unknown) {\n if (error instanceof OneBlinkAppsError) {\n if (error.isOffline) {\n if (\n !isPendingQueueEnabled ||\n schedulingSubmissionEvent ||\n paymentSubmissionEvent\n ) {\n console.warn(\n 'Offline error thrown - app or form does not support pending queue, return offline',\n error,\n )\n return Object.assign({}, formSubmission, {\n isOffline: true,\n isInPendingQueue: false,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n scheduling: null,\n isUploadingAttachments: false,\n preventPayment: false,\n })\n }\n\n console.warn(\n 'Offline error thrown - saving submission to pending queue..',\n error,\n )\n await addFormSubmissionToPendingQueue(formSubmission)\n notifyJobSubmittedIfApplicable(formSubmission)\n return Object.assign({}, formSubmission, {\n isOffline: true,\n isInPendingQueue: true,\n submissionTimestamp: null,\n submissionId: null,\n payment: null,\n scheduling: null,\n isUploadingAttachments: false,\n preventPayment: false,\n })\n }\n\n // If the error has already been handled as a\n // OneBlinkAppsError, we can throw it as is.\n throw error\n }\n\n throw new OneBlinkAppsError(\n 'An error has occurred with your submission, please contact Support if this problem persists.',\n {\n title: 'Unexpected Error',\n originalError: error as Error,\n },\n )\n }\n}\n"]}
|
|
@@ -28,18 +28,8 @@ export type VerifiedPaymentTransaction = {
|
|
|
28
28
|
export type HandlePaymentResult = VerifiedPaymentTransaction & {
|
|
29
29
|
schedulingBooking: SchedulingBooking | undefined;
|
|
30
30
|
};
|
|
31
|
-
export type BasePaymentConfigurationPayload = {
|
|
32
|
-
amount: number;
|
|
33
|
-
redirectUrl: string;
|
|
34
|
-
submissionId: string | null;
|
|
35
|
-
paymentFormUrl?: string;
|
|
36
|
-
};
|
|
37
31
|
export interface PaymentProvider<T extends SubmissionEventTypes.FormPaymentEvent> {
|
|
38
32
|
formSubmissionResult: FormSubmissionResult;
|
|
39
33
|
paymentSubmissionEvent: T;
|
|
40
|
-
preparePaymentConfiguration(basePayload: BasePaymentConfigurationPayload): {
|
|
41
|
-
path: string;
|
|
42
|
-
payload: BasePaymentConfigurationPayload;
|
|
43
|
-
};
|
|
44
34
|
verifyPaymentTransaction(query: Record<string, unknown>): Promise<VerifiedPaymentTransaction>;
|
|
45
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payments.js","sourceRoot":"","sources":["../../../src/apps/types/payments.ts"],"names":[],"mappings":"","sourcesContent":["import { SubmissionEventTypes } from '@oneblink/types'\nimport { FormSubmissionResult } from './submissions'\nimport { SchedulingBooking } from '../scheduling-service'\n\nexport type PaymentReceiptItem = {\n /** The label to represent the value */\n label: string\n /** The value to display */\n value: string\n /** A CSS class to add to the HTML element container */\n className?: string\n /** A CSS class to add to the HTML element containing the value */\n valueClassName?: string\n /** A [material icon](https://fonts.google.com/icons) */\n icon?: string\n /** Display a button on the receipt item to copy the value to the clipboard */\n allowCopyToClipboard: boolean\n}\n\nexport type VerifiedPaymentTransaction = {\n receiptItems: PaymentReceiptItem[]\n transaction: {\n /** `true` if the transaction was successful */\n isSuccess: boolean\n /** The error message to display if `isSuccess` is `false` */\n errorMessage: string | undefined | null\n }\n submissionResult: FormSubmissionResult\n}\n\nexport type HandlePaymentResult = VerifiedPaymentTransaction & {\n schedulingBooking: SchedulingBooking | undefined\n}\n\nexport
|
|
1
|
+
{"version":3,"file":"payments.js","sourceRoot":"","sources":["../../../src/apps/types/payments.ts"],"names":[],"mappings":"","sourcesContent":["import { SubmissionEventTypes } from '@oneblink/types'\nimport { FormSubmissionResult } from './submissions'\nimport { SchedulingBooking } from '../scheduling-service'\n\nexport type PaymentReceiptItem = {\n /** The label to represent the value */\n label: string\n /** The value to display */\n value: string\n /** A CSS class to add to the HTML element container */\n className?: string\n /** A CSS class to add to the HTML element containing the value */\n valueClassName?: string\n /** A [material icon](https://fonts.google.com/icons) */\n icon?: string\n /** Display a button on the receipt item to copy the value to the clipboard */\n allowCopyToClipboard: boolean\n}\n\nexport type VerifiedPaymentTransaction = {\n receiptItems: PaymentReceiptItem[]\n transaction: {\n /** `true` if the transaction was successful */\n isSuccess: boolean\n /** The error message to display if `isSuccess` is `false` */\n errorMessage: string | undefined | null\n }\n submissionResult: FormSubmissionResult\n}\n\nexport type HandlePaymentResult = VerifiedPaymentTransaction & {\n schedulingBooking: SchedulingBooking | undefined\n}\n\nexport interface PaymentProvider<\n T extends SubmissionEventTypes.FormPaymentEvent,\n> {\n formSubmissionResult: FormSubmissionResult\n paymentSubmissionEvent: T\n\n verifyPaymentTransaction(\n query: Record<string, unknown>,\n ): Promise<VerifiedPaymentTransaction>\n}\n"]}
|