app-can-make-payment.js (1560B)
1 let responseType = 'canMakePayment-true'; 2 3 self.addEventListener('canmakepayment', event => { 4 if (event.methodData) { 5 const msg = 'Expected no method data.'; 6 event.respondWith(Promise.reject(new Error(msg))); 7 return; 8 } 9 10 if (event.modifiers) { 11 const msg = 'Expected no modifiers'; 12 event.respondWith(Promise.reject(new Error(msg))); 13 return; 14 } 15 16 if (event.topOrigin) { 17 const msg = `Unexpected topOrigin.`; 18 event.respondWith(Promise.reject(new Error(msg))); 19 return; 20 } 21 22 if (event.paymentRequestOrigin) { 23 const msg = `Unexpected iframe origin.`; 24 event.respondWith(Promise.reject(new Error(msg))); 25 return; 26 } 27 28 switch (responseType) { 29 case 'canMakePayment-true': 30 event.respondWith(true); 31 break; 32 case 'canMakePayment-false': 33 event.respondWith(false); 34 break; 35 case 'canMakePayment-promise-true': 36 event.respondWith(Promise.resolve(true)); 37 break; 38 case 'canMakePayment-promise-false': 39 event.respondWith(Promise.resolve(false)); 40 break; 41 case 'canMakePayment-custom-error': 42 event.respondWith(Promise.reject(new Error('Custom error'))); 43 break; 44 default: 45 const msg = `Unrecognized payment method name "${methodName}".`; 46 event.respondWith(Promise.reject(new Error(msg))); 47 break; 48 } 49 }); 50 51 self.addEventListener('paymentrequest', event => { 52 responseType = event.methodData[0].data.responseType; 53 event.respondWith({ 54 methodName: event.methodData[0].supportedMethods, 55 details: {status: 'success'}, 56 }); 57 });