57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
let responseType = 'canMakePayment-true';
|
|
|
|
self.addEventListener('canmakepayment', event => {
|
|
if (event.methodData) {
|
|
const msg = 'Expected no method data.';
|
|
event.respondWith(Promise.reject(new Error(msg)));
|
|
return;
|
|
}
|
|
|
|
if (event.modifiers) {
|
|
const msg = 'Expected no modifiers';
|
|
event.respondWith(Promise.reject(new Error(msg)));
|
|
return;
|
|
}
|
|
|
|
if (event.topOrigin) {
|
|
const msg = `Unexpected topOrigin.`;
|
|
event.respondWith(Promise.reject(new Error(msg)));
|
|
return;
|
|
}
|
|
|
|
if (event.paymentRequestOrigin) {
|
|
const msg = `Unexpected iframe origin.`;
|
|
event.respondWith(Promise.reject(new Error(msg)));
|
|
return;
|
|
}
|
|
|
|
switch (responseType) {
|
|
case 'canMakePayment-true':
|
|
event.respondWith(true);
|
|
break;
|
|
case 'canMakePayment-false':
|
|
event.respondWith(false);
|
|
break;
|
|
case 'canMakePayment-promise-true':
|
|
event.respondWith(Promise.resolve(true));
|
|
break;
|
|
case 'canMakePayment-promise-false':
|
|
event.respondWith(Promise.resolve(false));
|
|
break;
|
|
case 'canMakePayment-custom-error':
|
|
event.respondWith(Promise.reject(new Error('Custom error')));
|
|
break;
|
|
default:
|
|
const msg = `Unrecognized payment method name "${methodName}".`;
|
|
event.respondWith(Promise.reject(new Error(msg)));
|
|
break;
|
|
}
|
|
});
|
|
|
|
self.addEventListener('paymentrequest', event => {
|
|
responseType = event.methodData[0].data.responseType;
|
|
event.respondWith({
|
|
methodName: event.methodData[0].supportedMethods,
|
|
details: {status: 'success'},
|
|
});
|
|
});
|