diff --git a/src/layouts/payment-adyen/payment-adyen.vue b/src/layouts/payment-adyen/payment-adyen.vue index 262614235..d71c13a38 100644 --- a/src/layouts/payment-adyen/payment-adyen.vue +++ b/src/layouts/payment-adyen/payment-adyen.vue @@ -111,7 +111,7 @@ export default { next(async (vm) => { vm.setCmsContent(resultMap.cmsContent); - if(hasExistingPiaError) { + if (hasExistingPiaError) { vm.hasPaymentFailureError = true; } }); @@ -203,9 +203,9 @@ export default { debugLog("providerLocation.city:", providerLocation.city, !preReqResult); debugLog("providerLocation.state:", providerLocation.state, !preReqResult); debugLog("providerLocation.zipCode:", providerLocation.zipCode, !preReqResult); - + debugLog("", null, !preReqResult); - + debugLog("isInsuranceSet:", isInsuranceSet, !preReqResult); debugLog("", null, !preReqResult); @@ -216,7 +216,7 @@ export default { debugLog("schedule.endTime:", schedule.endTime, !preReqResult); debugLog("schedule.jobMaxMinutes:", schedule.jobMaxMinutes, !preReqResult); debugLog("schedule.jobMinMinutes:", schedule.jobMinMinutes, !preReqResult); - + debugLog("", null, !preReqResult); debugLog("customerReqs:", customerReqs, !preReqResult); @@ -224,7 +224,7 @@ export default { debugLog("customer.lastName:", customer.lastName, !preReqResult); debugLog("customer.phoneNumber:", customer.phoneNumber, !preReqResult); debugLog("customer.emailAddress:", customer.emailAddress, !preReqResult); - + debugLog("", null, !preReqResult); debugLog("paymentMethodReqs:", paymentMethodReqs, !preReqResult); @@ -405,18 +405,32 @@ export default { console.log(`Result =`); console.log(result); - const stringToLog = `ADYEN PAYMENT NOT AUTHORIZED. Code = ${result?.resultCode}. Id = ${this.sessionId}`; + const wasPaymentCancelled = result?.resultCode === "Cancelled"; - await global.$logger.logError(stringToLog); + if (!wasPaymentCancelled) { + const stringToLog = `ADYEN PAYMENT NOT AUTHORIZED. Code = ${result?.resultCode}. Id = ${this.sessionId}`; - this.hasPaymentFailureError = true; + await global.$logger.logError(stringToLog); + + this.hasPaymentFailureError = true; + } this.dropinComponent?.update(); }, - handleError(error) { - const stringToLog = `ADYEN ERROR. Name = ${error.name}. Details = ${error.message}.`; + async handleError(error) { + console.log(error); - global.$logger.logError(stringToLog); + const wasPaymentCancelled = error?.name === "CANCEL"; + + if (!wasPaymentCancelled) { + const stringToLog = `ADYEN ERROR. Name = ${error.name}. Details = ${error.message}.`; + + await global.$logger.logError(stringToLog); + + this.hasPaymentFailureError = true; + } + + this.dropinComponent?.update(); }, async saveAndSubmitWorkOrder() { diff --git a/src/router/methods/route-logic/adyen-return.js b/src/router/methods/route-logic/adyen-return.js index 1e423e056..e7a901c2e 100644 --- a/src/router/methods/route-logic/adyen-return.js +++ b/src/router/methods/route-logic/adyen-return.js @@ -19,7 +19,16 @@ export async function adyenReturnBeforeEnter(to, from) { try { result = await finalizeAdyenPayment(sessionId, redirectResult); - } catch (error) { + } catch (unexpectedResult) { + // If user cancelled payment, handle without error message + if (unexpectedResult.code === "Cancelled") { + return { + name: routeData.PAYMENT_ADYEN.name, + replace: true, + }; + } + + // Otherwise, failure scenario. // Payment fails, so return user to payment-adyen screen to try again or pay later. return { name: routeData.PAYMENT_ADYEN.name, @@ -108,7 +117,7 @@ function finalizeAdyenPayment(sessionId, redirectResult) { console.log(`Payment failed`); console.log(result); reject({ - paymentFailure: true, + code: result?.resultCode, message: "Payment failed from Adyen", }); }, @@ -116,7 +125,7 @@ function finalizeAdyenPayment(sessionId, redirectResult) { console.log(`Error occured`); console.log(error); reject({ - paymentFailure: false, + code: "Error", message: "Error from Adyen", }); },