diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 8f163704d..2767306a6 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -75,6 +75,7 @@ stages:
steps:
- checkout: self
clean: true
+ - bash: cp public/applepay/apple-developer-merchantid-domain-association-nonprod.txt public/.well-known/apple-developer-merchantid-domain-association.txt
- template: templates/digital/step-build-vue.yml@AzureDevOps
parameters:
buildOutputDir: dist
@@ -134,6 +135,7 @@ stages:
steps:
- checkout: self
clean: true
+ - bash: cp public/applepay/apple-developer-merchantid-domain-association-nonprod.txt public/.well-known/apple-developer-merchantid-domain-association.txt
- template: templates/digital/step-build-vue.yml@AzureDevOps
parameters:
buildOutputDir: dist
@@ -193,6 +195,7 @@ stages:
steps:
- checkout: self
clean: true
+ - bash: cp public/applepay/apple-developer-merchantid-domain-association-nonprod.txt public/.well-known/apple-developer-merchantid-domain-association.txt
- template: templates/digital/step-build-vue.yml@AzureDevOps
parameters:
buildOutputDir: dist
@@ -252,6 +255,7 @@ stages:
steps:
- checkout: self
clean: true
+ - bash: cp public/applepay/apple-developer-merchantid-domain-association-prod.txt public/.well-known/apple-developer-merchantid-domain-association.txt
- template: templates/digital/step-build-vue.yml@AzureDevOps
parameters:
buildOutputDir: dist
@@ -296,4 +300,4 @@ stages:
parameters:
dependsOn: prodBuildDeployment
userName: SafeliteAzureDevops
- userEmail: githubazuredevops@safelite.com
+ userEmail: githubazuredevops@safelite.com
\ No newline at end of file
diff --git a/public/.well-known/placeholder.txt b/public/.well-known/placeholder.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/public/applepay/apple-developer-merchantid-domain-association-nonprod.txt b/public/applepay/apple-developer-merchantid-domain-association-nonprod.txt
new file mode 100644
index 000000000..f358f5b28
--- /dev/null
+++ b/public/applepay/apple-developer-merchantid-domain-association-nonprod.txt
@@ -0,0 +1,74 @@
+MIIQaQYJKoZIhvcNAQcCoIIQWjCCEFYCAQExCzAJBgUrDgMCGgUAMHgGCSqGSIb3DQEHAaBrBGl7
+InRlYW1JZCI6IlY4SFNZMzlOWjUiLCJkb21haW4iOiJ3d3ctdGVzdDIuc2FmZWxpdGUuY29tIiwi
+ZGF0ZUNyZWF0ZWQiOiIyMDI0LTA3LTE4LDE0OjU1OjA1IiwidmVyc2lvbiI6MX2ggg0_MIIENDCC
+AxygAwIBAgIIY_BW8s8iV_MwDQYJKoZIhvcNAQELBQAwczEtMCsGA1UEAwwkQXBwbGUgaVBob25l
+IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
+eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwHhcNMjQwMTMwMTgzMjA1WhcNMjkw
+MTI4MTgzMjA0WjBZMTUwMwYDVQQDDCxBcHBsZSBpUGhvbmUgT1MgUHJvdmlzaW9uaW5nIFByb2Zp
+bGUgU2lnbmluZzETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQC1FX_kJQ1chXPiyq7cbeqNGGn-pv_c_cwpLk2qcBWJD79H31jO
+WFlKCB2xoQ229iBxUncHfWR_QmmLKHvyw0A9s3CBF8nkhi2ZVzd1wNTjtjcc2Dcm7kAsi3Hw7xRj
+TOS_0S-HUEUdpxJxkbQX9sNJQHBt64923LXzwWH5JKwxWb5X_kqWxYoAlse5CjmYUeqATgKGEejt
+eO1HxmV6-LAL1Ycpfmab7T296Dm6fUhkO-eIB1-efCGWkBQAV0BlJq7bo4O8jRv3o4VjOjf0rtDO
+FG8RVCdSsGjLtGs-0gDEORTorEdwUlY2X54rPlOZpuOA0lN4N7tz35kMtxySmq9lAgMBAAGjgeUw
+geIwDAYDVR0TAQH_BAIwADAfBgNVHSMEGDAWgBRv8ZUYYlzgyPHF7WwYyeDTZFKYIDBABggrBgEF
+BQcBAQQ0MDIwMAYIKwYBBQUHMAGGJGh0dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3NwMDMtYWlwY2Ew
+NzAvBgNVHR8EKDAmMCSgIqAghh5odHRwOi8vY3JsLmFwcGxlLmNvbS9haXBjYS5jcmwwHQYDVR0O
+BBYEFCkAQ-DGkwX04nv_NdJ5BvpUl3YjMA4GA1UdDwEB_wQEAwIHgDAPBgkqhkiG92NkBjoEAgUA
+MA0GCSqGSIb3DQEBCwUAA4IBAQBA51NbANKWAu-nYD7W27ilNY9YRzstmIC5_nOz1o_RTQR_Zbps
+s1G8bzM-53F6OgL8MFI2ummWpXfSL2k_bX6Y_FtCYkoyWdF-rVexy0WeCkjeRgc1G14DGy5ontva
+qGzENwiFoECYoxI4cBANSDVkhZNWBzfZ2lY4cCWo4U9oVyxYDBoWSd4_JTZzWNzlX3koj7kLA7vh
+nPUW53hsEk_BsH5x10qy_tEBNOKPbh4vC3q0wbEyhk6_W5iEaE9nh0_Anrq0MfQJtIo91t4QKkvE
+jcNN1OrFYpmYGevd0X3H99npvad4XiYUX2Pmf0Ro8ChhvcDhFeBAq_9h6HvAOUoMMIIERDCCAyyg
+AwIBAgIIXGPK5Eo3U8kwDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFw
+cGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQD
+Ew1BcHBsZSBSb290IENBMB4XDTE3MDUxMDIxMjczMFoXDTMwMTIzMTAwMDAwMFowczEtMCsGA1UE
+AwwkQXBwbGUgaVBob25lIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJRWoBDz6DBIbH_L_cXvAege4XMHNjJi7ePXokzZM-
+TzlHunW-88DS8Vmiqx_-CoY82S2aB_IOa7kpkRpfIgqL8XJYBa5MS0TFeaeAPLCI4IwMJ4RdGeWH
+GTbL48V2t7D0QXJR9AVcg0uibaZRuPEm33terWUMxrKYUYy7fRtMwU7ICMfS7WQLtN0bjU9AfRuP
+SJaSW_PQmH7ZvKQZDplhu0FdAcxbd3p9JNDc01P_w9zFlCy2Wk2OGCM5vdnGUj7R8vQliqEqh_3Y
+DEYpUf_tF2yJJWuHv4ppFJ93n8MVt2iziEW9hOYGAkFkD60qKLgVyeCsp4q6cgQ0sniM-LKFAgMB
+AAGjgewwgekwDwYDVR0TAQH_BAUwAwEB_zAfBgNVHSMEGDAWgBQr0GlHlHYJ_vRrjS5ApvdHTX8I
+XjBEBggrBgEFBQcBAQQ4MDYwNAYIKwYBBQUHMAGGKGh0dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3Nw
+MDMtYXBwbGVyb290Y2EwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL2NybC5hcHBsZS5jb20vcm9v
+dC5jcmwwHQYDVR0OBBYEFG_xlRhiXODI8cXtbBjJ4NNkUpggMA4GA1UdDwEB_wQEAwIBBjAQBgoq
+hkiG92NkBgISBAIFADANBgkqhkiG9w0BAQsFAAOCAQEAOs-smI2-kiAhCa2V87FcIfo2LVcgRHRz
+ZJIIs5as922X-ls0OCfPEkbTPBHwB8mZkLHR6BEJpeOla2xjCD-eJfrVmZxM5uXOjrJNaOyLq6Oi
+T4oRFT7cFCscxkS2b2fFW0-VKS2HXD_cgx53T-3aVKct5xOBwWPEVAsbSwpqKCII1DeSfH9nKF-v
+PT-3rFkdODRkWu4zShlCRCnEyhhr4cFTLS30TcIV9jMyGHjxJm-KTeuUTKPo_w-zA4tl2usu2GVQ
+n9yfit8xqIRU3FJSQdKyEx0xRkeIXz7uw_KMIwSV66yKPoJsBp8u44tDmmJbNA30mc8s7rpyhhkj
+pfyOtTCCBLswggOjoAMCAQICAQIwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCVVMxEzARBgNV
+BAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYw
+FAYDVQQDEw1BcHBsZSBSb290IENBMB4XDTA2MDQyNTIxNDAzNloXDTM1MDIwOTIxNDAzNlowYjEL
+MAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmlj
+YXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEA5JGpCR-R2x5HUOsF7V55hC3rNqJXTFXsixmJ3vlLbPUHqyIwAugYPvhQ
+CdN_QaiY-dHKZpwkaxHQo7vkGyrDH5WeegykR4tb1BY3M8vED03OFGnRyRly9V0O1X9fm_IlA7pV
+j01dDfFkNSMVSxVZHbOU9_acns9QusFYUGePCLQg98usLCBvcLY_ATCMt0PPD5098ytJKBrI_s61
+uQ7ZXhzWyz21Oq30Dw4AkguxIRYudNU8DdtiFqujcZJHU1XBry9Bs_j743DN5qNMRX4fTGtQlkGJ
+xHRiCxCDQYczioGxMFjsWgQyjGizjx3eZXP_Z15lvEnYdp8zFGWhd5TJLQIDAQABo4IBejCCAXYw
+DgYDVR0PAQH_BAQDAgEGMA8GA1UdEwEB_wQFMAMBAf8wHQYDVR0OBBYEFCvQaUeUdgn-9GuNLkCm
+90dNfwheMB8GA1UdIwQYMBaAFCvQaUeUdgn-9GuNLkCm90dNfwheMIIBEQYDVR0gBIIBCDCCAQQw
+ggEABgkqhkiG92NkBQEwgfIwKgYIKwYBBQUHAgEWHmh0dHBzOi8vd3d3LmFwcGxlLmNvbS9hcHBs
+ZWNhLzCBwwYIKwYBBQUHAgIwgbYagbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFu
+eSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy
+ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2Vy
+dGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjANBgkqhkiG9w0BAQUFAAOCAQEAXDaZTC14
+t-2Mm9zzd5vydtJ3ME_BH4WDhRuZPUc38qmbQI4s1LGQEti-9HOb7tJkD8t5TzTYoj75eP9ryAfs
+fTmDi1Mg0zjEsb-aTwpr_yv8WacFCXwXQFYRHnTTt4sjO0ej1W8k4uvRt3DfD0XhJ8rxbXjt57UX
+F6jcfiI1yiXV2Q_Wa9SiJCMR96Gsj3OBYMYbWwkvkrL4REjwYDieFfU9JmcgijNq9w2Cz97roy_5
+U2pbZMBjM3f3OgcsVuvaDyEO2rpzGU-12TZ_wYdV2aeZuTJC-9jVcZ5-oVK3G72TQiQSKscPHbZN
+nF5jyEuAF1CqitXa5PzQCQc3sHV1ITGCAoUwggKBAgEBMH8wczEtMCsGA1UEAwwkQXBwbGUgaVBo
+b25lIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhv
+cml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMCCGPwVvLPIlfzMAkGBSsOAwIa
+BQCggdwwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwNzE4MTQ1
+NTA1WjAjBgkqhkiG9w0BCQQxFgQUYwvDx1yr56NtJEdxh--NMv9wqDEwKQYJKoZIhvcNAQk0MRww
+GjAJBgUrDgMCGgUAoQ0GCSqGSIb3DQEBAQUAMFIGCSqGSIb3DQEJDzFFMEMwCgYIKoZIhvcNAwcw
+DgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMA0G
+CSqGSIb3DQEBAQUABIIBAJ6WUgCnMMT4q4LQjeOOpLWsXJRdns3b5aBEKoK3NIetn3I_bWo0wmX3
+Rxuy29Ljv_0bGC0PfcXyBXWtg1LQ4EzUpgpVK_IeZrlX6HcKwxgZwkejwVg009kTYNir-otXP1AM
+YNfXsPA-woLAbo_Hx0MrN1EHgejqO8x5c9s7LpQQGJpVsD9Rq6sZ4VJftMtuTz4XwvU3Qypj7_RF
+Drhh-MekYg6qG7aJMzOuftkDx2BWL7Sld77ViX1Qt8zZpyoI4RW4MIxH50ERwVYlpaoHYdnit3Ct
+RZki8aS0kxFdxVY0pePF0k6h-5GbwceXATkXM4UY0-fAXqk11QevHKT8was
diff --git a/public/applepay/apple-developer-merchantid-domain-association-prod.txt b/public/applepay/apple-developer-merchantid-domain-association-prod.txt
new file mode 100644
index 000000000..f358f5b28
--- /dev/null
+++ b/public/applepay/apple-developer-merchantid-domain-association-prod.txt
@@ -0,0 +1,74 @@
+MIIQaQYJKoZIhvcNAQcCoIIQWjCCEFYCAQExCzAJBgUrDgMCGgUAMHgGCSqGSIb3DQEHAaBrBGl7
+InRlYW1JZCI6IlY4SFNZMzlOWjUiLCJkb21haW4iOiJ3d3ctdGVzdDIuc2FmZWxpdGUuY29tIiwi
+ZGF0ZUNyZWF0ZWQiOiIyMDI0LTA3LTE4LDE0OjU1OjA1IiwidmVyc2lvbiI6MX2ggg0_MIIENDCC
+AxygAwIBAgIIY_BW8s8iV_MwDQYJKoZIhvcNAQELBQAwczEtMCsGA1UEAwwkQXBwbGUgaVBob25l
+IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
+eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwHhcNMjQwMTMwMTgzMjA1WhcNMjkw
+MTI4MTgzMjA0WjBZMTUwMwYDVQQDDCxBcHBsZSBpUGhvbmUgT1MgUHJvdmlzaW9uaW5nIFByb2Zp
+bGUgU2lnbmluZzETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQC1FX_kJQ1chXPiyq7cbeqNGGn-pv_c_cwpLk2qcBWJD79H31jO
+WFlKCB2xoQ229iBxUncHfWR_QmmLKHvyw0A9s3CBF8nkhi2ZVzd1wNTjtjcc2Dcm7kAsi3Hw7xRj
+TOS_0S-HUEUdpxJxkbQX9sNJQHBt64923LXzwWH5JKwxWb5X_kqWxYoAlse5CjmYUeqATgKGEejt
+eO1HxmV6-LAL1Ycpfmab7T296Dm6fUhkO-eIB1-efCGWkBQAV0BlJq7bo4O8jRv3o4VjOjf0rtDO
+FG8RVCdSsGjLtGs-0gDEORTorEdwUlY2X54rPlOZpuOA0lN4N7tz35kMtxySmq9lAgMBAAGjgeUw
+geIwDAYDVR0TAQH_BAIwADAfBgNVHSMEGDAWgBRv8ZUYYlzgyPHF7WwYyeDTZFKYIDBABggrBgEF
+BQcBAQQ0MDIwMAYIKwYBBQUHMAGGJGh0dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3NwMDMtYWlwY2Ew
+NzAvBgNVHR8EKDAmMCSgIqAghh5odHRwOi8vY3JsLmFwcGxlLmNvbS9haXBjYS5jcmwwHQYDVR0O
+BBYEFCkAQ-DGkwX04nv_NdJ5BvpUl3YjMA4GA1UdDwEB_wQEAwIHgDAPBgkqhkiG92NkBjoEAgUA
+MA0GCSqGSIb3DQEBCwUAA4IBAQBA51NbANKWAu-nYD7W27ilNY9YRzstmIC5_nOz1o_RTQR_Zbps
+s1G8bzM-53F6OgL8MFI2ummWpXfSL2k_bX6Y_FtCYkoyWdF-rVexy0WeCkjeRgc1G14DGy5ontva
+qGzENwiFoECYoxI4cBANSDVkhZNWBzfZ2lY4cCWo4U9oVyxYDBoWSd4_JTZzWNzlX3koj7kLA7vh
+nPUW53hsEk_BsH5x10qy_tEBNOKPbh4vC3q0wbEyhk6_W5iEaE9nh0_Anrq0MfQJtIo91t4QKkvE
+jcNN1OrFYpmYGevd0X3H99npvad4XiYUX2Pmf0Ro8ChhvcDhFeBAq_9h6HvAOUoMMIIERDCCAyyg
+AwIBAgIIXGPK5Eo3U8kwDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFw
+cGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQD
+Ew1BcHBsZSBSb290IENBMB4XDTE3MDUxMDIxMjczMFoXDTMwMTIzMTAwMDAwMFowczEtMCsGA1UE
+AwwkQXBwbGUgaVBob25lIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJRWoBDz6DBIbH_L_cXvAege4XMHNjJi7ePXokzZM-
+TzlHunW-88DS8Vmiqx_-CoY82S2aB_IOa7kpkRpfIgqL8XJYBa5MS0TFeaeAPLCI4IwMJ4RdGeWH
+GTbL48V2t7D0QXJR9AVcg0uibaZRuPEm33terWUMxrKYUYy7fRtMwU7ICMfS7WQLtN0bjU9AfRuP
+SJaSW_PQmH7ZvKQZDplhu0FdAcxbd3p9JNDc01P_w9zFlCy2Wk2OGCM5vdnGUj7R8vQliqEqh_3Y
+DEYpUf_tF2yJJWuHv4ppFJ93n8MVt2iziEW9hOYGAkFkD60qKLgVyeCsp4q6cgQ0sniM-LKFAgMB
+AAGjgewwgekwDwYDVR0TAQH_BAUwAwEB_zAfBgNVHSMEGDAWgBQr0GlHlHYJ_vRrjS5ApvdHTX8I
+XjBEBggrBgEFBQcBAQQ4MDYwNAYIKwYBBQUHMAGGKGh0dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3Nw
+MDMtYXBwbGVyb290Y2EwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL2NybC5hcHBsZS5jb20vcm9v
+dC5jcmwwHQYDVR0OBBYEFG_xlRhiXODI8cXtbBjJ4NNkUpggMA4GA1UdDwEB_wQEAwIBBjAQBgoq
+hkiG92NkBgISBAIFADANBgkqhkiG9w0BAQsFAAOCAQEAOs-smI2-kiAhCa2V87FcIfo2LVcgRHRz
+ZJIIs5as922X-ls0OCfPEkbTPBHwB8mZkLHR6BEJpeOla2xjCD-eJfrVmZxM5uXOjrJNaOyLq6Oi
+T4oRFT7cFCscxkS2b2fFW0-VKS2HXD_cgx53T-3aVKct5xOBwWPEVAsbSwpqKCII1DeSfH9nKF-v
+PT-3rFkdODRkWu4zShlCRCnEyhhr4cFTLS30TcIV9jMyGHjxJm-KTeuUTKPo_w-zA4tl2usu2GVQ
+n9yfit8xqIRU3FJSQdKyEx0xRkeIXz7uw_KMIwSV66yKPoJsBp8u44tDmmJbNA30mc8s7rpyhhkj
+pfyOtTCCBLswggOjoAMCAQICAQIwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCVVMxEzARBgNV
+BAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYw
+FAYDVQQDEw1BcHBsZSBSb290IENBMB4XDTA2MDQyNTIxNDAzNloXDTM1MDIwOTIxNDAzNlowYjEL
+MAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmlj
+YXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEA5JGpCR-R2x5HUOsF7V55hC3rNqJXTFXsixmJ3vlLbPUHqyIwAugYPvhQ
+CdN_QaiY-dHKZpwkaxHQo7vkGyrDH5WeegykR4tb1BY3M8vED03OFGnRyRly9V0O1X9fm_IlA7pV
+j01dDfFkNSMVSxVZHbOU9_acns9QusFYUGePCLQg98usLCBvcLY_ATCMt0PPD5098ytJKBrI_s61
+uQ7ZXhzWyz21Oq30Dw4AkguxIRYudNU8DdtiFqujcZJHU1XBry9Bs_j743DN5qNMRX4fTGtQlkGJ
+xHRiCxCDQYczioGxMFjsWgQyjGizjx3eZXP_Z15lvEnYdp8zFGWhd5TJLQIDAQABo4IBejCCAXYw
+DgYDVR0PAQH_BAQDAgEGMA8GA1UdEwEB_wQFMAMBAf8wHQYDVR0OBBYEFCvQaUeUdgn-9GuNLkCm
+90dNfwheMB8GA1UdIwQYMBaAFCvQaUeUdgn-9GuNLkCm90dNfwheMIIBEQYDVR0gBIIBCDCCAQQw
+ggEABgkqhkiG92NkBQEwgfIwKgYIKwYBBQUHAgEWHmh0dHBzOi8vd3d3LmFwcGxlLmNvbS9hcHBs
+ZWNhLzCBwwYIKwYBBQUHAgIwgbYagbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFu
+eSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy
+ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2Vy
+dGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjANBgkqhkiG9w0BAQUFAAOCAQEAXDaZTC14
+t-2Mm9zzd5vydtJ3ME_BH4WDhRuZPUc38qmbQI4s1LGQEti-9HOb7tJkD8t5TzTYoj75eP9ryAfs
+fTmDi1Mg0zjEsb-aTwpr_yv8WacFCXwXQFYRHnTTt4sjO0ej1W8k4uvRt3DfD0XhJ8rxbXjt57UX
+F6jcfiI1yiXV2Q_Wa9SiJCMR96Gsj3OBYMYbWwkvkrL4REjwYDieFfU9JmcgijNq9w2Cz97roy_5
+U2pbZMBjM3f3OgcsVuvaDyEO2rpzGU-12TZ_wYdV2aeZuTJC-9jVcZ5-oVK3G72TQiQSKscPHbZN
+nF5jyEuAF1CqitXa5PzQCQc3sHV1ITGCAoUwggKBAgEBMH8wczEtMCsGA1UEAwwkQXBwbGUgaVBo
+b25lIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhv
+cml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMCCGPwVvLPIlfzMAkGBSsOAwIa
+BQCggdwwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwNzE4MTQ1
+NTA1WjAjBgkqhkiG9w0BCQQxFgQUYwvDx1yr56NtJEdxh--NMv9wqDEwKQYJKoZIhvcNAQk0MRww
+GjAJBgUrDgMCGgUAoQ0GCSqGSIb3DQEBAQUAMFIGCSqGSIb3DQEJDzFFMEMwCgYIKoZIhvcNAwcw
+DgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMA0G
+CSqGSIb3DQEBAQUABIIBAJ6WUgCnMMT4q4LQjeOOpLWsXJRdns3b5aBEKoK3NIetn3I_bWo0wmX3
+Rxuy29Ljv_0bGC0PfcXyBXWtg1LQ4EzUpgpVK_IeZrlX6HcKwxgZwkejwVg009kTYNir-otXP1AM
+YNfXsPA-woLAbo_Hx0MrN1EHgejqO8x5c9s7LpQQGJpVsD9Rq6sZ4VJftMtuTz4XwvU3Qypj7_RF
+Drhh-MekYg6qG7aJMzOuftkDx2BWL7Sld77ViX1Qt8zZpyoI4RW4MIxH50ERwVYlpaoHYdnit3Ct
+RZki8aS0kxFdxVY0pePF0k6h-5GbwceXATkXM4UY0-fAXqk11QevHKT8was
diff --git a/public/css/hop-styling.css b/public/css/hop-styling.css
index 22b1b842c..5ef43ea39 100644
--- a/public/css/hop-styling.css
+++ b/public/css/hop-styling.css
@@ -210,9 +210,6 @@ body .cc-error-container #alert-message {
#fmg-checkout-shared .form-group .list-group.radio .list-group-item label {
padding: 12px 20px;
}
-#fmg-checkout-shared #afterpayParentDiv {
- display: none;
-}
#fmg-checkout-shared #applepay-and-paypal-container {
display: inline-flex;
width: 100%;
diff --git a/public/scss/hop-styling.scss b/public/scss/hop-styling.scss
index bf61cecf7..2a87f1a3b 100644
--- a/public/scss/hop-styling.scss
+++ b/public/scss/hop-styling.scss
@@ -237,10 +237,6 @@ body {
}
}
- #afterpayParentDiv {
- display: none;
- }
-
#applepay-and-paypal-container {
display: inline-flex;
width: 100%;
diff --git a/src/constants/query-strings.js b/src/constants/query-strings.js
index a3b3c732c..ca04c2937 100644
--- a/src/constants/query-strings.js
+++ b/src/constants/query-strings.js
@@ -33,6 +33,9 @@ const queryStrings = {
SERVICE_ZIP: "servicezip",
EMAIL: "email",
IS_INSURANCE: "isinsurance",
+ VIN_SELECTION: "vinselection",
+ PACKAGE_SELECTION: "packageselection",
+ NUMBER_OF_CHIPS: "numberofchips",
};
export { queryStrings };
diff --git a/src/constants/store-actions.js b/src/constants/store-actions.js
index 0001daf6a..acb06c41d 100644
--- a/src/constants/store-actions.js
+++ b/src/constants/store-actions.js
@@ -96,7 +96,8 @@ const storeActions = {
CREATE_SUBMITTED_ORDER: "createSubmittedOrder",
RESET_SUBMITTED_ORDER: "resetSubmittedOrder",
- RESET_IS_LEAD_GEN: "resetIsLeadGen",
+ RESET_LEADGEN_STATE: "resetLeadGenState",
+ CREATE_LEADGEN_STATE: "createLeadGenState",
};
export { storeActions };
diff --git a/src/constants/store-mutations.js b/src/constants/store-mutations.js
index f78b970c3..d63d3369b 100644
--- a/src/constants/store-mutations.js
+++ b/src/constants/store-mutations.js
@@ -88,6 +88,28 @@ const storeMutations = {
// EXPERIMENT MUTATIONS
UPDATE_EXPERIMENTS: "updateExperiments",
UPDATE_TRIGGERED_SITE_ENTRY: "updateTriggeredSiteEntry",
+
+ // LEADGEN MUTATIONS
+ UPDATE_LEAD_GEN_YEAR: "updateLeadGenYear",
+ UPDATE_LEAD_GEN_MAKE: "updateLeadGenMake",
+ UPDATE_LEAD_GEN_MODEL: "updateLeadGenModel",
+ UPDATE_LEAD_GEN_STYLE: "updateLeadGenStyle",
+ UPDATE_LEAD_GEN_IS_REPAIR: "updateLeadGenIsRepair",
+ UPDATE_LEAD_GEN_NUMBER_OF_CHIPS: "updateLeadGenNumberOfChips",
+ UPDATE_LEAD_GEN_DAMAGE_TYPE: "updateLeadGenDamageType",
+ UPDATE_LEAD_GEN_ZIP_CODE: "updateLeadGenZipCode",
+ UPDATE_LEAD_GEN_EMAIL_ADDRESS: "updateLeadGenEmailAddress",
+ UPDATE_LEAD_GEN_IS_INSURANCE: "updateLeadGenIsInsurance",
+ UPDATE_LEAD_GEN_VIN_SELECTION: "updateLeadGenVinSelection",
+ UPDATE_LEAD_GEN_PACKAGE_SELECTION: "updateLeadGenPackageSelection",
+
+ //RESET LEADGEN MUTATIONS
+ RESET_LEADGEN_VEHICLE_STATE: "resetLeadGenVehicleState",
+ RESETL_EADGEN_DAMAGE_STATE: "resetLeadGenDamageState",
+ RESET_LEADGEN_ESTIMATE_STATE: "resetLeadGenEstimateState",
+ RESET_LEADGEN_SERVICEZIP_STATE: "resetLeadGenServiceZipState",
+ RESET_LEADGEN_QUOTE_STATE: "resetLeadGenQuoteState",
+ RESET_IS_LEADGEN: "resetIsLeadGen",
};
export { storeMutations };
diff --git a/src/helpers/service-package-helper.js b/src/helpers/service-package-helper.js
index cab883cc6..310a87e0e 100644
--- a/src/helpers/service-package-helper.js
+++ b/src/helpers/service-package-helper.js
@@ -230,6 +230,15 @@ export function getHighestFullySatisfiedTier(glassToReplace, availableLineItems,
return highestSatisfiedPackage;
}
+export function getPackageNameByType(packageType) {
+ const package_names = {
+ glassonly: packageNames.TIER_ONE,
+ standard: packageNames.TIER_TWO,
+ premium: packageNames.TIER_THREE,
+ };
+ return package_names[packageType] || null;
+}
+
function maxTier(tierA, tierB) {
if (tierA === packageNames.TIER_THREE || tierB === packageNames.TIER_THREE) {
return packageNames.TIER_THREE;
diff --git a/src/layouts/address-lookup/address-lookup.vue b/src/layouts/address-lookup/address-lookup.vue
index 68a9e001c..9655b3b87 100644
--- a/src/layouts/address-lookup/address-lookup.vue
+++ b/src/layouts/address-lookup/address-lookup.vue
@@ -119,7 +119,7 @@ import { settleAllPromises } from "@/helpers/layout-helper";
import { storeActions } from "@/constants/store-actions";
import { routerParams } from "@/router/router-constants/router-params";
import { getDamageString, isGlassAvailableForCarId } from "@/helpers/damage-helper";
-
+import baseMixin from "@/mixins/base-mixin.js";
import store from "@/store";
import vinPagesMixin from "@/mixins/vin-pages-mixin";
@@ -150,6 +150,10 @@ export default {
// Call the "next" function to complete the transition to this page.
next((vm) => {
vm.setCmsContent(resultMap.cmsContent);
+ if (store.getters.isLeadGen) {
+ baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE);
+ baseMixin.methods.hideFmgLoadingModal();
+ }
});
},
data() {
diff --git a/src/layouts/estimate/estimate.spec.js b/src/layouts/estimate/estimate.spec.js
index 14752e171..3ea0babd1 100644
--- a/src/layouts/estimate/estimate.spec.js
+++ b/src/layouts/estimate/estimate.spec.js
@@ -12,6 +12,7 @@ import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
import baseMixin from "../../mixins/base-mixin";
import { vinLookupMethodSelections } from "@/constants/vin-lookup-method-selections.js";
import { experimentSettings } from "@/constants/experiments";
+import { nextTick } from "vue";
// Mock our module for promises.
jest.mock("@/helpers/layout-helper.js", () => ({
@@ -213,20 +214,18 @@ describe("estimate.vue", () => {
});
describe("estimate.vue", () => {
- test("should call forwardButtonAction if isLeadGen is true", async () => {
- // update store with isLeadGen as true
+ test("should call forwardButtonAction if isLeadGen is true and form is valid", async () => {
store.commit(storeMutations.UPDATE_IS_LEAD_GEN, true);
+ store.commit(storeMutations.UPDATE_LEAD_GEN_VIN_SELECTION, "decline");
// Set up the component
const { wrapper } = setupMocks({});
+
wrapper.vm.forwardButtonAction = jest.fn();
+
const nextFunction = jest.fn((c) => {
c(wrapper.vm);
});
-
- // Set selectedVinLookupMethod to decline
- wrapper.setData({ selectedVinLookupMethod: vinLookupMethodSelections.DECLINE });
-
// Call the method that contains the if-else logic
await estimate.beforeRouteEnter.call(
wrapper.vm,
@@ -234,7 +233,12 @@ describe("estimate.vue", () => {
undefined,
nextFunction
);
+ await wrapper.vm.$nextTick();
+
expect(nextFunction).toHaveBeenCalled();
+ expect(baseMixin.methods.isFormValid).toHaveBeenCalled();
+ expect(baseMixin.methods.isFormValid()).toBe(true);
+ await wrapper.vm.$nextTick();
expect(wrapper.vm.forwardButtonAction).toHaveBeenCalled();
});
});
@@ -247,6 +251,7 @@ function setupMocks({
{ Name: "Provide my VIN manually Most specific to your vehicle" },
{ Name: "Provide my license plate # Most accurate VIN match" },
{ Name: "Provide my home address Most convenient VIN match" },
+ { Name: "I'd rather not share my VIN" },
],
FunnelFooterWidget = { ForwardButtonText: "test txt" },
mountOptionsMockData = {
@@ -280,7 +285,7 @@ function setupMocks({
const apiPromise = Promise.resolve({ cmsContent });
settleAllPromises.mockImplementation(() => apiPromise);
fetchCmsContentForPage.mockImplementation(() => Promise.resolve());
-
+ baseMixin.methods.isFormValid = jest.fn().mockReturnValue(true);
const mountOptions = getMountOptions({
...mountOptionsMockData,
mixins: [baseMixin, mockMixin],
diff --git a/src/layouts/estimate/estimate.vue b/src/layouts/estimate/estimate.vue
index 913520626..dcd47cca4 100644
--- a/src/layouts/estimate/estimate.vue
+++ b/src/layouts/estimate/estimate.vue
@@ -63,6 +63,7 @@ import { navigateToHeritageFunnel } from "@/helpers/heritage-integration/navigat
import { saveSession } from "@/helpers/heritage-integration/order-helper.js";
import baseMixin from "@/mixins/base-mixin.js";
import { queryStrings } from "@/constants/query-strings";
+import { nextTick } from "vue";
// Define Validation Rules
defineRule("zip-required", required(errorMessages.SERVICE_ZIP_REQUIRED));
@@ -128,7 +129,7 @@ export default {
const resultMap = await settleAllPromises(promiseResultMap);
- next((vm) => {
+ next(async (vm) => {
if (resultMap.cmsContent.FunnelFooterWidget.ForwardButtonText.includes("|")) {
const forwardTextOption =
resultMap.cmsContent.FunnelFooterWidget.ForwardButtonText.split("|");
@@ -146,10 +147,24 @@ export default {
vm.setCmsContent(resultMap.cmsContent);
if (store.getters.isLeadGen) {
- vm.selectedVinLookupMethod = vinLookupMethodSelections.DECLINE;
- vm.forwardButtonAction();
+ if (store.getters.leadGenEstimate.vinSelection) {
+ vm.selectedVinLookupMethod = vinPagesMixin.methods.getVinlookupMethod(
+ store.getters.leadGenEstimate.vinSelection
+ );
+ await nextTick();
+ const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm);
+ if (isValid) {
+ vm.forwardButtonAction();
+ } else {
+ baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE);
+ baseMixin.methods.hideFmgLoadingModal();
+ }
+ } else {
+ baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE);
+ baseMixin.methods.hideFmgLoadingModal();
+ }
} else {
- baseMixin.methods.dispatchStoreAction(storeActions.RESET_IS_LEAD_GEN);
+ baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE);
baseMixin.methods.hideFmgLoadingModal();
}
});
diff --git a/src/layouts/insurance-company/insurance-company.vue b/src/layouts/insurance-company/insurance-company.vue
index 8cdec3afa..bf8765b40 100644
--- a/src/layouts/insurance-company/insurance-company.vue
+++ b/src/layouts/insurance-company/insurance-company.vue
@@ -77,7 +77,7 @@ export default {
vm.setCmsContent(resultMap.cmsContent);
vm.originalList = resultMap.insuranceCompanyList;
if (store.getters.isLeadGen) {
- baseMixin.methods.dispatchStoreAction(storeActions.RESET_IS_LEAD_GEN);
+ baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE);
baseMixin.methods.hideFmgLoadingModal();
}
});
diff --git a/src/layouts/license-plate-lookup/license-plate-lookup.vue b/src/layouts/license-plate-lookup/license-plate-lookup.vue
index c0c94ecb7..4a87d639f 100644
--- a/src/layouts/license-plate-lookup/license-plate-lookup.vue
+++ b/src/layouts/license-plate-lookup/license-plate-lookup.vue
@@ -112,7 +112,7 @@ import { getDamageString, isGlassAvailableForCarId } from "@/helpers/damage-help
import { routerParams } from "@/router/router-constants/router-params";
import { required, regex } from "@/helpers/validation-rules";
import { Form, defineRule } from "vee-validate";
-
+import baseMixin from "@/mixins/base-mixin.js";
import store from "@/store";
import vinPagesMixin from "@/mixins/vin-pages-mixin";
@@ -148,6 +148,10 @@ export default {
// Call the "next" function to complete the transition to this page.
next((vm) => {
vm.setCmsContent(resultMap.cmsContent);
+ if (store.getters.isLeadGen) {
+ baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE);
+ baseMixin.methods.hideFmgLoadingModal();
+ }
});
},
props: {
diff --git a/src/layouts/part-questions/part-questions.vue b/src/layouts/part-questions/part-questions.vue
index 9249a5a57..58be51c27 100644
--- a/src/layouts/part-questions/part-questions.vue
+++ b/src/layouts/part-questions/part-questions.vue
@@ -56,7 +56,7 @@ export default {
next((vm) => {
vm.setCmsContent(resultMap.cmsContent);
if (store.getters.isLeadGen) {
- baseMixin.methods.dispatchStoreAction(storeActions.RESET_IS_LEAD_GEN);
+ baseMixin.methods.dispatchStoreAction(storeActions.RESET_LEADGEN_STATE);
baseMixin.methods.hideFmgLoadingModal();
}
});
diff --git a/src/layouts/payment-method/payment-method-question/payment-method-question.spec.js b/src/layouts/payment-method/payment-method-question/payment-method-question.spec.js
index 96a9d02b9..ad959fdf9 100644
--- a/src/layouts/payment-method/payment-method-question/payment-method-question.spec.js
+++ b/src/layouts/payment-method/payment-method-question/payment-method-question.spec.js
@@ -109,8 +109,9 @@ function generateDefaultProps() {
return {
modelValue: "modelValue",
hasRecal: false,
- isApplePay: true,
+ showApplePay: true,
isInsurance: false,
+ isPiaEnabled: true,
};
}
diff --git a/src/layouts/payment-method/payment-method-question/payment-method-question.vue b/src/layouts/payment-method/payment-method-question/payment-method-question.vue
index e8122d0ef..9991e6093 100644
--- a/src/layouts/payment-method/payment-method-question/payment-method-question.vue
+++ b/src/layouts/payment-method/payment-method-question/payment-method-question.vue
@@ -10,8 +10,9 @@
isRequired
:validationRules="validationRules"
:hasRecal="hasRecal"
- :isApplePay="isApplePay"
+ :showApplePay="showApplePay"
:isInsurance="isInsurance"
+ :isPiaEnabled="isPiaEnabled"
v-model="selectedMethod"
textPosition="text-start" />
@@ -20,6 +21,7 @@
-