I have some similar "Compatibility risk" concerns here to what I have with the Remote Playback API- PaymentRequest is an abstract API made available to web pages, but is responsible for coordinating external services (in Payment Request API, a coordination with a payment service, in Remote Playback, coordination with an remote media device).
At present there don't seem to be well defined, payment methods ("supportedMethods") to interoperate around, and that poses a significant risk to adoptability. "The API described in [the Payment Request API] document forms part of the Payment Request system described in
the Payment Request Architecture document," yet if we go into Payment Request Architecture and look at 2.4 Payment Request Transaction Messages, we read,
"The abstract Payment Request API specification has no intrinsic knowledge of the payment
methods available. When a transaction is enacted by the user through the API a JSON object
containing the relevant information necessary to process the transaction is returned. The
format of this "message" is defined specifically for the payment method and might be private
to that method.",
(
http://wicg.github.io/paymentrequest/specs/architecture.html#payment-transaction-message-specifications)
,
and we are linked to an open issue to create common payment methods (
https://github.com/WICG/paymentrequest/issues/20). This pretty clearly establishes that at present, there are no standard payment transaction messages that can be transacted via the Payment Request API, and that seems like a very high compatibility risk hazard that I'd like to see this Intent to Implement speak to.
What does this Intent to Implement intend to offer? What supportedMethods will the PaymentRequest support? Will any other browsers be able to implement those same payment methods? Will other payment vendors be able to create extensions to offer their own payment methods, or how if at all are they provided for? (this is a
lower priority question to me than knowing whether the supported methods will be directly implementable by others) In the spec there are two completion routes: is the delegated payment algorithm intended to be supported? Is the non-delegated payment algorithm intended to be supported?
Like Push API, and Remote Playback API, the Payment Request API presents in my mind a clear and significant compatibility risk, in that each specify an interface for the front-end while not specifying anything about back end implementation. I'd like to see this Intent to Implement- as these other front-end APIs have- speak some to what the corresponding back-end effort looks like, and how compatibility might be insured there too. Link to a similar discussion in Remote Playback:
https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/Sf1C6blXmUo