Adding safety check when initializing ApplePay (#2212)

* fix: apple pay inside iframe

* fix: changeset
This commit is contained in:
Guilherme Ribeiro
2023-06-08 14:55:16 +02:00
committed by GitHub
parent a2fa99bd71
commit b2a0be4341
3 changed files with 18 additions and 4 deletions

View File

@@ -0,0 +1,5 @@
---
'@adyen/adyen-web': patch
---
Fixes issue which ApplePay crashes Drop-in when initialized within iframe

View File

@@ -136,8 +136,12 @@ class ApplePayElement extends UIElement<ApplePayElementProps> {
return Promise.reject(new AdyenCheckoutError('IMPLEMENTATION_ERROR', 'clientKey was not provided'));
}
if (window.ApplePaySession && ApplePaySession.canMakePayments() && ApplePaySession.supportsVersion(this.props.version)) {
return Promise.resolve(true);
try {
if (window.ApplePaySession && ApplePaySession.canMakePayments() && ApplePaySession.supportsVersion(this.props.version)) {
return Promise.resolve(true);
}
} catch (error) {
console.warn(error);
}
return Promise.reject(new AdyenCheckoutError('ERROR', 'Apple Pay is not available on this device'));

View File

@@ -1,10 +1,15 @@
export function resolveSupportedVersion(latestVersion) {
export function resolveSupportedVersion(latestVersion: number): number | null {
const versions = [];
for (let i = latestVersion; i > 0; i--) {
versions.push(i);
}
return versions.find(v => v && window.ApplePaySession && ApplePaySession.supportsVersion(v));
try {
return versions.find(v => v && window.ApplePaySession && ApplePaySession.supportsVersion(v));
} catch (error) {
console.warn(error);
return null;
}
}
export function mapBrands(brands) {