Source code

Revision control

Copy as Markdown

Other Tools

let sender = null;
self.addEventListener('message', e => {
sender = e.source;
if (e.data == 'paymentrequest') {
self.dispatchEvent(new PaymentRequestEvent('paymentrequest', {
methodData: [{
supportedMethods: 'https://example.com/pay'
}],
total: {
currency: 'USD',
value: '100'
},
modifiers: [{
supportedMethods: 'https://example.com/pay'
}]
}));
} else if (e.data == 'canmakepayment') {
self.dispatchEvent(new CanMakePaymentEvent('canmakepayment', {
methodData: [{
supportedMethods: 'https://example.com/pay'
}],
modifiers: [{
supportedMethods: 'https://example.com/pay'
}]
}));
}
});
self.addEventListener('paymentrequest', async e => {
const result = [];
try {
e.respondWith({});
} catch (exception) {
result.push(exception.name);
}
try {
await e.openWindow('payment-app/payment.html');
} catch (exception) {
result.push(exception.name);
}
sender.postMessage(result);
});
self.addEventListener('canmakepayment', async e => {
const result = [];
try {
e.respondWith({});
} catch (exception) {
result.push(exception.name);
}
sender.postMessage(result);
});