Copyright © 2017 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and permissive document license rules apply.
This specification defines payment method identifiers and how they are validated, and, where applicable, minted and formally registered with the W3C. Other specifications (e.g., Payment Request) make use of these identifiers to facilitate monetary transactions on the web platform.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/.
The working group will demonstrate implementation experience by creating a test suite and having at least two independent implementations pass each mandatory test (i.e., each test the corresponds to a MUST requirement of the specification). The working group hopes to demonstrate, in the form of an implementation report, interoperability from two or more vendors on both mobile and desktop web browsers.
There has been no change in dependencies on other workings groups during the development of this specification.
Please file any issues with this specification in the payment method identifiers repository on GitHub.
This document was published by the Web Payments Working Group as a Working Draft. This document is intended to become a W3C Recommendation.
Please see the Working Group's implementation report.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
This document is governed by the 1 March 2017 W3C Process Document.
A payment method identifier is either a:
A URL-based payment method identifier is a URL that is valid as per the steps to validate a URL-based payment method identifier.
Developers wanting to use a URL-based payment method identifier for a third party payment handler are encouraged to read the Payment Method Best Practice document.
The steps to validate a URL-based payment method identifier are given by the following algorithm. The algorithm takes a url URL as input and returns true if the URL is valid:
const good = [
{
supportedMethods: "https://example.com/pay",
},
{
supportedMethods: "https://example.com/pay?version=1",
},
{
supportedMethods: "https://example.com/pay/version/1",
},
];
const bad = [
{
// ❌ Uses http://, a username, and a password.
supportedMethods: "http://username:password@example.com/pay",
},
{
// ❌ Uses unknown URI scheme.
supportedMethods: "unknown://example.com/pay",
},
];
User agents MUST perform comparisons of URL-based payment method identifiers using equals. [URL]
A standardized payment method identifier is a string that represents a standardized payment method.
User agents MAY support zero or more standardized payment method identifiers listed in section 4. Registry of standardized payment methods .
The steps to validate a standardized payment method identifier are given by the following algorithm. The algorithm takes a string as input and returns true if the identifier is valid:
When minting a new standardized payment method identifier for the purpose of standardization, be sure that it conforms to the following
regular expression: [a-z0-9-]+
.
User agents MUST NOT enforce validity or well-formedness of standardized payment method identifiers.
When used in an API, the following method identifiers are all ignored by the user agent. Some user agents might inform developers that identifiers are invalid to help them fix issues.
const good = [
{
supportedMethods: "basic-card",
},
];
const bad = [
{
// ❌ Contains Unicode character outside the valid ranges.
supportedMethods: "💳-card",
},
{
// ❌ Contains uppercase characters.
supportedMethods: "Basic-Card",
},
{
// ❌ Contains Unicode characters outside the valid ranges.
supportedMethods: "¡basic-*-card!",
},
];
For standardized payment method identifiers, user agents MUST compare strings in a case-sensitive manner (code point for code point).
This section is non-normative.
A standardized payment method is a payment method that has undergone standardization at the W3C, and is listed in this registry.
The Working Group has minted the following standardized payment method identifiers:
basic-card
"
There are no known privacy or security concerns to be taken into considerations at this time.