Eons past, the HTTP status code 402 was reserved for future use; "Payment Required".
Please to god W3C, take 402 and make it part of that standard! I so wish for us all to be able to respond 402 and have a simple standard way to charge.
Payment Request is a JS / client-side API (it's all about getting payment information from the browser to the website), so HTTP codes don't really come into it.
However, there's a proposed server/HTTP specification that does include it. It lacks the same broad support that Payment Request has, so is still in quite an early stage of development - https://www.w3.org/TR/webpayments-http-api/
This is what GNU Taler [0] does. You can send additional headers[1] to decide how the payment will be processed, such as X-Taler-Contract-Url and X-Taler-Offer-Url
Please to god W3C, take 402 and make it part of that standard! I so wish for us all to be able to respond 402 and have a simple standard way to charge.