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 @@ -