You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: open-qr-standard.md
+28-16
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
**An open standard for the publication of interoperable QR codes for payments and other use cases**
4
4
5
-
**DRAFT**: v0.1.0
5
+
**DRAFT**: v1.0.0
6
6
7
7
**Authors**: James Bligh, Kareem Al-Bassam, Jack Moggach
8
8
@@ -33,6 +33,8 @@ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "S
33
33
|Code Provider|The system that represents the initiating side of the user journey. This is the system that creates and publishes the QR Code. For a point-of-sale payment this would be the merchant checkout system.|
34
34
|Code Consumer|The system that represents the acceptance, or client, side of the user journey. This is the system that scans and processes the QR Code. For a point-of-sale payment this would be the customer’s mobile wallet application.|
35
35
|QR Profile|A profile for defining the format of the various actions and meta data that can be transferred using this standard for a specific type of use case or user journey.|
36
+
|Offer|Details about an offer that may be claimed by a QR Consumer. Includes information about the profiles and capabilities associated with a specific QR Code.|
37
+
|Session|An established connection (a claim on an Offer) between a QR Provider and a QR Consumer.|
36
38
37
39
## Generic Sequence Diagram
38
40
@@ -79,7 +81,7 @@ An example sequence of activity supported by this standard is as follows ([PNG v
@@ -118,23 +120,33 @@ The Code Provider will publish a QR Code that MUST conform with the requirements
118
120
119
121
This QR Code MUST contain a URL in the following format:
120
122
121
-
`https://<provider base>/<QR ID>`
123
+
`https://<provider base>/<Offer ID>`
122
124
123
125
The Code Provider MUST provide a valid web page at the location specified by `<provider base>` with instructions for a user how the QR Code can be successfully used.
124
126
125
-
The `<QR ID>` is used to obtain access to a data entity held by the Code Provider referred to in this standard as a session. QR IDs MAY be single or multiple use depending on the use case being supported.
126
-
127
-
Sessions MUST be single use.
127
+
The `<Offer ID>` is used to obtain access to a data entity held by the Code Provider referred to in this standard as an `Offer`. Offer IDs MAY be single or multiple use depending on the use case being supported.
128
128
129
129
The Code Provider SHOULD superimpose a logo on the QR code to help Customers recognise trusted brands. This logo SHOULD be tested to ensure the logo does not introduce too much error to the QR Code and the QR Code remains readable. In situations where the effect of scanning a QR code is unclear the Code Provider SHOULD provide guidance as to how the QR Code can be successfully used.
130
130
131
-
## Session Actions
131
+
## Offers
132
+
133
+
An Offer is the information associated with a specific QR Code that represnts the profiles that the QR Code allows access to. A Code Consumer obtains the Offer information for a QR Code and then determines how to proceed based on the information the Offer contains and what there service supports.
134
+
135
+
Offers MAY be single use or MAY be multi-use.
136
+
137
+
## Sessions
138
+
139
+
After obtaining the Offer information a Code Consumer may claim that Offer. This will result in a Session being established between the Code Provider and the Code Consumer with the Code Provider being the owner of the Session.
140
+
141
+
Sessions MUST be single use.
142
+
143
+
## Offer and Session Endpoints
132
144
133
-
The Code Provider MUST support a Session Info endpoint that the Code Consumer can call to obtain information about the session using the QR ID obtained from the QR Code. This endpoint SHOULD be idempotent and should not have side effects on the underlying Session.
145
+
The Code Provider MUST support an Offer Info endpoint that the Code Consumer can call to obtain information about the Offer using the Offer ID obtained from the QR Code. This endpoint SHOULD be idempotent and should not have side effects on the underlying Offer.
134
146
135
-
The Code Provider MUST support a Session Claim endpoint that the Code Consumer can use to claim a session for use using a QR ID. This endpoint MUST provide a unique Session ID that can be used for subsequent interactions.
147
+
The Code Provider MUST support an Offer Claim endpoint that the Code Consumer can use to claim a Offer for use using a Offer ID and thus establishing a Session. This endpoint MUST provide a unique Session ID that can be used for subsequent interactions.
136
148
137
-
The Code Provider MUST support a Session Status endpoint to identify the status of a session using a Session ID.
149
+
The Code Provider MUST support a Session Status endpoint to identify the status of a Session using a Session ID.
138
150
139
151
The Code Provider MUST support the ability to perform a callback to the Code Consumer when the status of the Session changes.
Copy file name to clipboardexpand all lines: profiles/core-profile.md
+25-25
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ Note that this profile should read as an addendum to the [Open QR Standard](../o
7
7
8
8
This profile MUST be supported by both Code Providers and Code Consumers.
9
9
10
-
**DRAFT**: v1.0.0
10
+
**DRAFT**: v1.1.0
11
11
12
12
**Authors**: James Bligh, Kareem Al-Bassam, Jack Moggach
13
13
@@ -23,8 +23,8 @@ The supported discovery properties are:
23
23
24
24
| Property | Optionality | Description |
25
25
|----------|-------------|-------------|
26
-
|sessionInfoUri|REQUIRED|URL of the Session Info endpoint hosted by the Code Provider.|
27
-
|sessionClaimUri|REQUIRED|URL of the Session Claim endpoint hosted by the Code Provider.|
26
+
|offerInfoUri|REQUIRED|URL of the Offer Info endpoint hosted by the Code Provider.|
27
+
|offerClaimUri|REQUIRED|URL of the Offer Claim endpoint hosted by the Code Provider.|
28
28
|sessionStatusUri|REQUIRED|URL of the Session Status endpoint hosted by the Code Provider.|
29
29
|jwksUri|REQUIRED|URL of the JWKS endpoint for the Code Provider. MUST include appropriate keys to support the algorithms supported.|
30
30
|signingAlgorithms|REQUIRED|JSON array containing a list of supported JWS [RFC7515] signing algorithms. Values to be taken from the JWA standard [RFC7518]. Only asymmetric algorithms may be supported.|
@@ -35,9 +35,9 @@ The supported discovery properties are:
35
35
36
36
## Code Provider Endpoints
37
37
38
-
### Session Info Endpoint
38
+
### Offer Info Endpoint
39
39
40
-
An API used to obtain information about the session associated with a nominated QR ID.
40
+
An API used to obtain information about the Offer associated with a nominated Offer ID.
41
41
42
42
#### HTTP Method
43
43
@@ -47,13 +47,13 @@ GET
47
47
48
48
| Parameter | Optionality | Description |
49
49
|-----------|-------------|-------------|
50
-
|qr-id|REQUIRED|The QR ID that information is requested for.|
50
+
|offer-id|REQUIRED|The Offer ID that information is requested for.|
51
51
52
52
#### Error Responses
53
53
54
54
HTTP Status: 401, Validation of the provided authorisation JWT failed
55
55
56
-
HTTP Status: 422, The provided QR ID is not known
56
+
HTTP Status: 422, The provided Offer ID is not known
"description": "The expiry time of the QR code. After this time the qr-id cannot be used to claim a session "
110
+
"description": "The expiry time of the QR code. After this time the offer-id cannot be used to claim a session "
111
111
},
112
112
"profiles": {
113
113
"type": "object",
114
-
"description": "An object with details for each of the qr profiles supported by this qr-id. Each property of this object uses the urn of the profile and contains properties defined by the qr profile that the urn denotes",
114
+
"description": "An object with details for each of the qr profiles supported by this offer-id. Each property of this object uses the urn of the profile and contains properties defined by the qr profile that the urn denotes",
"description": "An object with details for each of the qr profiles supported by this qr-id. Each property of this object uses the urn of the profile and contains properties defined by the qr profile that the urn denotes",
185
+
"description": "An object with details for each of the qr profiles supported by this offer-id. Each property of this object uses the urn of the profile and contains properties defined by the qr profile that the urn denotes",
"description": "The session-id created by claiming the session. This ID represents this claim event and must be unique. Can be used for subsequent calls for status"
243
+
"description": "The session-id representing the session created by claiming the offer. This ID represents this claim event and must be unique. Can be used for subsequent calls for status"
244
244
},
245
245
"provider": {
246
246
"type": "string",
247
247
"description": "The unique identifier of the code provider. This is defined as the base location where the discovery document can be found, i.e. ‘https://<provider base>’"
248
248
},
249
249
"profiles": {
250
250
"type": "object",
251
-
"description": "An object with details for each of the qr profiles supported by this qr-id. Each property of this object uses the urn of the profile and contains properties defined by the qr profile that the urn denotes",
251
+
"description": "An object with details for each of the qr profiles supported by this offer-id. Each property of this object uses the urn of the profile and contains properties defined by the qr profile that the urn denotes",
"description": "An object with details for each of the qr profiles supported by this qr-id. Each property of this object uses the urn of the profile and contains properties defined by the qr profile that the urn denotes",
329
+
"description": "An object with details for each of the qr profiles supported by this offer-id. Each property of this object uses the urn of the profile and contains properties defined by the qr profile that the urn denotes",
Copy file name to clipboardexpand all lines: profiles/payment-instruments/eftpos.md
+9-9
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ This payment instrument definition relies upon the [Point-of-sale Payment Profil
7
7
8
8
Support for this payment instrument is optional.
9
9
10
-
**DRAFT**: v0.0.4
10
+
**DRAFT**: v0.0.5
11
11
12
12
**Authors**: Jack Moggach
13
13
@@ -39,9 +39,9 @@ The supported properties are:
39
39
| cardSupported | REQUIRED | Boolean flag indicating if the Code Provider supports payment via card details. |
40
40
| tokenSupported | REQUIRED | Boolean flag indicating if the Code Provider supports payment via an Eftpos card formtoken. |
41
41
42
-
#### Session Info Endpoint
42
+
#### Offer Info Endpoint
43
43
44
-
The following schema defines the content to be returned by the Code Provider in a request to the session info endpoint. This information will be included in the **urn:cds-au:qr:pos-merchant:1** 'profile' property within the 'instrumentTypes' section.
44
+
The following schema defines the content to be returned by the Code Provider in a request to the offer info endpoint. This information will be included in the **urn:cds-au:qr:pos-merchant:1** 'profile' property within the 'instrumentTypes' section.
45
45
46
46
This schema will be returned with an object with the field name of:
"description": "Is 3DS enabled for the given session? This value does not indicate whether or not a 3DS challenge will be triggered - only that it may be triggered."
64
+
"description": "Is 3DS enabled for the given offer? This value does not indicate whether or not a 3DS challenge will be triggered - only that it may be triggered."
65
65
}
66
66
}
67
67
}
68
68
```
69
69
70
-
#### Session Claim Endpoint
70
+
#### Offer Claim Endpoint
71
71
72
-
The following schema defines the content to be returned by the Code Provider in a request to the session claim endpoint. This information will be included in the **urn:cds-au:qr:pos-merchant:1** ‘profile’ property within the ‘instrumentTypes’ section.
72
+
The following schema defines the content to be returned by the Code Provider in a request to the offer claim endpoint. This information will be included in the **urn:cds-au:qr:pos-merchant:1** ‘profile’ property within the ‘instrumentTypes’ section.
73
73
74
74
This schema will be returned with an object with the field name of:
Copy file name to clipboardexpand all lines: profiles/payment-profile.md
+13-13
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ This profile relies upon, and extends the [Core QR Profile definition](./core-pr
9
9
10
10
This profile is optional.
11
11
12
-
**DRAFT**: v1.0.0
12
+
**DRAFT**: v1.1.0
13
13
14
14
**Authors**: James Bligh, Kareem Al-Bassam, Jack Moggach
15
15
@@ -39,16 +39,16 @@ The supported discovery properties are:
39
39
40
40
## Code Provider Endpoints
41
41
42
-
### Session Info Endpoint
42
+
### Offer Info Endpoint
43
43
44
-
The following schema defines the content to be returned by the Code Provider in a request to the session info endpoint under the ‘profiles’ property. This schema will be returned with an object with the field name of the *Code Provider Profile URN*.
44
+
The following schema defines the content to be returned by the Code Provider in a request to the offer info endpoint under the ‘profiles’ property. This schema will be returned with an object with the field name of the *Code Provider Profile URN*.
@@ -78,11 +78,11 @@ Profile specific response schema [JSONSchema]:
78
78
},
79
79
"merchantReference": {
80
80
"type": "string",
81
-
"description": "Optional reference identifier which represents the QR session in a merchant's internal systems."
81
+
"description": "Optional reference identifier which represents the offer in a merchant's internal systems."
82
82
},
83
83
"synchronous": {
84
84
"type": "boolean",
85
-
"description": "Flag indicating that a payment with this QR code will be synchronous and a final status will be provided when the session is claimed. Assumed to be false if absent"
85
+
"description": "Flag indicating that a payment with this QR code will be synchronous and a final status will be provided when the offer is claimed. Assumed to be false if absent"
86
86
},
87
87
"instrumentTypes": {
88
88
"type": "object",
@@ -93,9 +93,9 @@ Profile specific response schema [JSONSchema]:
93
93
}
94
94
```
95
95
96
-
### Session Claim Endpoint
96
+
### Offer Claim Endpoint
97
97
98
-
The following schemas define the content to be included in the request and response payloads for the session claim endpoint under the ‘profiles’ property.
98
+
The following schemas define the content to be included in the request and response payloads for the offer claim endpoint under the ‘profiles’ property.
99
99
100
100
The following schema will be included in the request object with an object with the field name of the *Code Consumer Profile URN*.
101
101
@@ -104,7 +104,7 @@ Profile specific request schema [JSONSchema]:
@@ -126,7 +126,7 @@ Profile specific request schema [JSONSchema]:
126
126
"properties": {
127
127
"type": {
128
128
"type": "string",
129
-
"description": "The type of the instrument to be used for the payment. Additional fields such as tokens or identifiers will be included as defined for the specific instrument type. The instrument type must be one of the types indicated as being supported in the provider discovery document and in the response to a call to session info"
129
+
"description": "The type of the instrument to be used for the payment. Additional fields such as tokens or identifiers will be included as defined for the specific instrument type. The instrument type must be one of the types indicated as being supported in the provider discovery document and in the response to a call to offer info"
130
130
}
131
131
}
132
132
}
@@ -141,7 +141,7 @@ Profile specific response schema [JSONSchema]:
@@ -322,7 +322,7 @@ Profile specific response schema [JSONSchema]:
322
322
323
323
## Code Provider Callback
324
324
325
-
Code Providers which support the Point of Sale Payment MUST be able to callback to a nominated Code Consumer endpoint when information about a claimed Session changes.
325
+
Code Providers which support the Point of Sale Payment MUST be able to callback to a nominated Code Consumer endpoint when information about a Session changes.
326
326
327
327
Code Consumers can optionally include a ‘callbackUri’ within their discovery document. If this value is set the Code Provider MUST send callback requests. The ‘callbackUri’ can be found in the Code Consumer profile with the *Code Provider Profile URN*.
328
328
@@ -346,7 +346,7 @@ The supported discovery properties are:
346
346
|----------|-------------|-------------|
347
347
|loyaltyPrograms|OPTIONAL|Array of strings indicating the loyalty programs supported for payments. The values in the array are string indicators nominated by the loyalty program organisation.|
348
348
|instrumentTypes|OPTIONAL|Map indicating the types of payment instruments supported by the code provider. The keys in the map are string indicators nominated by the organisation that manages the instrument type. Keys follow a URN format and support versions. Metadata about the instrument type may be included in the mapped value object.|
349
-
|callbackUri|OPTIONAL|A URL where the wallet can receive status callbacks. If supplied the merchant should send a POST request to this URL using the ‘Session Status’ schema whenever information about a session is changed.|
349
+
|callbackUri|OPTIONAL|A URL where the wallet can receive status callbacks. If supplied the merchant should send a POST request to this URL using the ‘Session Status’ schema whenever information about a Session is changed.|
0 commit comments