59 lines
1.2 KiB
JavaScript
59 lines
1.2 KiB
JavaScript
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);
|
|
});
|