Re: [w3c/payment-request] Pass SKU instead of Total (#879)

I agree with @adrianhopebailie that Payment Request API should not be directly involved in translating SKUs to prices. SKU is a payment-method specific concept. I think we should keep Payment Request API generic.

I like the `getTotalFromSku()` direction. But here's a missing piece: the merchant still needs to figure out how to implement `getTotalFromSku()`, which involves a cross-origin communication to the payment app. Given that Payment Request API is meant to establish a communication pipe between the merchant and the payment app, can we expand it to support this use case?

What about something like this:
```
const emptyDetails = {} // make 'total' optional, so it can be omitted here
const request = new PaymentRequest([{supportedMethods:'https://play.google.com/store'}], emptyDetails);

// New channel for merchant to query selected payment app. This returns a promise that
// resolves to a payment-method defined blob. Merchant can turn that into a `PaymentDetails`:
let detailsPromise = request.query(
    'https://play.google.com/store',
    {querySkuRequest: { sku: '123456'}}
).then((response) => {
    return {
      total: {
        label: "total",
        amount: {
          currency: response.querySkuTotalResponse.currency,
          value: response.querySkuTotalResponse.amount,
        },
      },
    };
  });

request.show(detailsPromise);
```

To make this work, Payment Handler API will expose a `QueryEvent`, which is triggered on the payment app's service worker when merchant calls `request.query()`.

The obvious concern is that this may be too generic: we're allowing arbitrary exchange of data between merchants and payment apps. On the other hand, a payment app can choose to decline a query from an untrusted merchant, using the merchant validation mechanism.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/payment-request/issues/879#issuecomment-528424637

Received on Thursday, 5 September 2019 15:28:52 UTC