Skip to content

Commit 8c6661c

Browse files
authored
docs: fix broken Google Pay Handler link in payment handler guide (#4)
1 parent 5ea2729 commit 8c6661c

1 file changed

Lines changed: 59 additions & 59 deletions

File tree

docs/specification/payment-handler-guide.md

Lines changed: 59 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ section (e.g., `PROCESSING(...)`) represent **logical data flows**, not literal
5656
function calls. Spec authors must map these logical flows to the actual
5757
transport protocol used by their implementation.
5858

59-
```
59+
```text
6060
┌──────────────────────────────────────────────────────────────────────────────┐
6161
│ Payment Handler Framework │
6262
├──────────────────────────────────────────────────────────────────────────────┤
@@ -95,17 +95,17 @@ Specifications **MUST** explicitly document these field mappings.
9595

9696
**Standard Participants:**
9797

98-
| Participant | Role |
99-
|:------------|:-----|
98+
| Participant | Role |
99+
| :----------- | :-------------------------------------------------------------- |
100100
| **Business** | Advertises handler configuration, processes payment instruments |
101101
| **Platform** | Discovers handlers, acquires payment instruments, submits checkout |
102102

103103
**Extended Participants** (example handler-specific participants):
104104

105-
| Participant | Example Role |
106-
|:------------|:-------------|
105+
| Participant | Example Role |
106+
| :------------ | :-------------------------------------------------- |
107107
| **Tokenizer** | Stores raw credentials and issues token credentials |
108-
| **PSP** | Processes payments on behalf of business using the checkout instrument |
108+
| **PSP** | Processes payments on behalf of business using the checkout instrument |
109109

110110
### Prerequisites
111111

@@ -114,14 +114,14 @@ complete before participating in the handler's flows.
114114

115115
**Signature:**
116116

117-
```
117+
```text
118118
PREREQUISITES(participant, onboarding_input) → prerequisites_output
119119
```
120120

121-
| Field | Description |
122-
|:------|:------------|
123-
| `participant` | The participant being onboarded (business, platform, etc.) |
124-
| `onboarding_input` | What the participant provides during setup |
121+
| Field | Description |
122+
| :--------------------- | :----------------------------------------------------- |
123+
| `participant` | The participant being onboarded (business, platform, etc.) |
124+
| `onboarding_input` | What the participant provides during setup |
125125
| `prerequisites_output` | The identity and any additional configuration received |
126126

127127
**Prerequisites Output:**
@@ -154,14 +154,14 @@ this handler and enable platforms to invoke it.
154154

155155
**Signature:**
156156

157-
```
157+
```text
158158
HANDLER_DECLARATION(prerequisites_output) → handler_declaration
159159
```
160160

161-
| Field | Description |
162-
|:------|:------------|
163-
| `prerequisites_output` | The identity and configuration from business prerequisites |
164-
| `handler_declaration` | The complete handler object advertised in `payment.handlers[]` |
161+
| Field | Description |
162+
| :--------------------- | :------------------------------------------------------------- |
163+
| `prerequisites_output` | The identity and configuration from business prerequisites |
164+
| `handler_declaration` | The complete handler object advertised in `payment.handlers[]` |
165165

166166
**Output Structure:**
167167

@@ -223,9 +223,9 @@ vs. Production). It is recommended to include this in the config schema to
223223

224224
**Base Instrument Schemas:**
225225

226-
| Schema | Description |
227-
|:-------|:------------|
228-
| [`payment_instrument.json`](https://ucp.dev/schemas/shopping/types/payment_instrument.json) | Base: id, handler_id, type, credential, billing_address |
226+
| Schema | Description |
227+
| :-------------------------------------------------------------------------------------------- | :-------------------------------------------------- |
228+
| [`payment_instrument.json`](https://ucp.dev/schemas/shopping/types/payment_instrument.json) | Base: id, handler_id, type, credential, billing_address |
229229
| [`card_payment_instrument.json`](https://ucp.dev/schemas/shopping/types/card_payment_instrument.json) | Card display: brand, last_digits, expiry |
230230

231231
UCP provides base schemas for universal payment instruments like `card`. Spec
@@ -253,10 +253,10 @@ handler-specific display data.
253253

254254
**Base Credential Schemas:**
255255

256-
| Schema | Description |
257-
|:-------|:------------|
256+
| Schema | Description |
257+
| :---------------------------------------------------------------------------------------- | :------------------------- |
258258
| [`payment_credential.json`](https://ucp.dev/schemas/shopping/types/payment_credential.json) | Base: type discriminator only |
259-
| [`token_credential.json`](https://ucp.dev/schemas/shopping/types/token_credential.json) | Token: type + token string |
259+
| [`token_credential.json`](https://ucp.dev/schemas/shopping/types/token_credential.json) | Token: type + token string |
260260

261261
UCP provides base schemas for universal payment credentials like `card` and
262262
`token`. Authors **MAY** extend these schemas to include handler-specific
@@ -289,7 +289,7 @@ that can be submitted to the business's checkout.
289289

290290
**Signature:**
291291

292-
```
292+
```text
293293
INSTRUMENT_ACQUISITION(
294294
platform_prerequisites_output,
295295
handler_declaration,
@@ -298,13 +298,13 @@ INSTRUMENT_ACQUISITION(
298298
) → checkout_instrument
299299
```
300300

301-
| Field | Description |
302-
|:------|:------------|
301+
| Field | Description |
302+
| :------------------------------ | :----------------------------------------------------- |
303303
| `platform_prerequisites_output` | platform's prerequisites output (config), if prerequisites were required |
304-
| `handler_declaration.config` | Handler-specific configuration from the business |
305-
| `binding` | **(See 2.6)** Context for binding the credential to a specific checkout |
306-
| `buyer_input` | Buyer's payment selection or credentials |
307-
| `checkout_instrument` | The payment instrument to submit at checkout |
304+
| `handler_declaration.config` | Handler-specific configuration from the business |
305+
| `binding` | **(See 2.6)** Context for binding the credential to a specific checkout |
306+
| `buyer_input` | Buyer's payment selection or credentials |
307+
| `checkout_instrument` | The payment instrument to submit at checkout |
308308

309309
Payment handler specifications do NOT need to define a formal process for
310310
instrument acquisition. Instead, the specification **SHOULD** clearly document:
@@ -321,7 +321,7 @@ process a received payment instrument and complete the transaction.
321321

322322
**Signature:**
323323

324-
```
324+
```text
325325
PROCESSING(
326326
identity,
327327
checkout_instrument,
@@ -330,13 +330,13 @@ PROCESSING(
330330
) → processing_result
331331
```
332332

333-
| Field | Description |
334-
|:------|:------------|
335-
| `identity` | The processing participant's `PaymentIdentity` |
333+
| Field | Description |
334+
| :-------------------- | :---------------------------------------- |
335+
| `identity` | The processing participant's `PaymentIdentity` |
336336
| `checkout_instrument` | The instrument received from the platform |
337-
| `binding` | The binding context for verification |
338-
| `transaction_context` | Checkout totals, line items, etc. |
339-
| `processing_result` | Success/failure with payment details |
337+
| `binding` | The binding context for verification |
338+
| `transaction_context` | Checkout totals, line items, etc. |
339+
| `processing_result` | Success/failure with payment details |
340340

341341
#### Error Handling
342342

@@ -347,8 +347,8 @@ error messages to the buyer regardless of the underlying processor.
347347

348348
### Key Definitions
349349

350-
| Term | Definition |
351-
|:-----|:-----------|
350+
| Term | Definition |
351+
| :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
352352
| **Binding** | A cryptographic or logical association of a payment instrument to a specific checkout transaction and business identity. This prevents replay attacks where a valid credential intended for Business A is intercepted and used at Business B. |
353353

354354
---
@@ -427,44 +427,44 @@ specifications:
427427

428428
### Schema Design
429429

430-
| Practice | Description |
431-
|:---------|:------------|
432-
| **Extend, don't reinvent** | Use `allOf` to compose base schemas. Don't redefine `brand`, `last_digits`, etc. |
433-
| **Use const for discriminators** | Define `credential.type` as a `const` to identify credential types unambiguously. |
434-
| **Validate early** | Publish schemas at stable URLs before finalizing the spec so implementers can validate. |
435-
| **Include Expiry** | When designing token credentials, always include `expiry` or `ttl`. |
430+
| Practice | Description |
431+
| :------------------------------- | :----------------------------------------------------------------------------------- |
432+
| **Extend, don't reinvent** | Use `allOf` to compose base schemas. Don't redefine `brand`, `last_digits`, etc. |
433+
| **Use const for discriminators** | Define `credential.type` as a `const` to identify credential types unambiguously. |
434+
| **Validate early** | Publish schemas at stable URLs before finalizing the spec so implementers can validate. |
435+
| **Include Expiry** | When designing token credentials, always include `expiry` or `ttl`. |
436436

437437
### Documentation
438438

439-
| Practice | Description |
440-
|:---------|:------------|
441-
| **Show, don't just tell** | Include complete JSON examples for every schema and protocol step. |
442-
| **Document error cases** | Specify what errors can occur and how participants should handle them. |
443-
| **Version independently** | The handler version evolves independently of UCP core versions. |
439+
| Practice | Description |
440+
| :------------------------ | :-------------------------------------------------------------------- |
441+
| **Show, don't just tell** | Include complete JSON examples for every schema and protocol step. |
442+
| **Document error cases** | Specify what errors can occur and how participants should handle them. |
443+
| **Version independently** | The handler version evolves independently of UCP core versions. |
444444

445445
### Security
446446

447-
| Practice | Description |
448-
|:---------|:------------|
449-
| **Require binding** | Always tie credentials to a specific checkout via `binding`. |
447+
| Practice | Description |
448+
| :----------------------------- | :--------------------------------------------------------------------------- |
449+
| **Require binding** | Always tie credentials to a specific checkout via `binding`. |
450450
| **Minimize credential exposure** | Design flows so raw credentials (PANs, etc.) touch as few systems as possible. |
451-
| **Specify token lifetimes** | Document whether tokens are single-use, time-limited, or session-scoped. |
451+
| **Specify token lifetimes** | Document whether tokens are single-use, time-limited, or session-scoped. |
452452

453453
### Maintainability
454454

455-
| Practice | Description |
456-
|:---------|:------------|
457-
| **Host schemas at stable URLs** | Schema URLs should not change; use versioned paths if needed. |
458-
| **Fail gracefully** | Define clear error responses for common failure scenarios. |
459-
| **Link to examples** | Reference existing handler specs and the [Tokenization Guide](tokenization-guide.md) for common flows. |
455+
| Practice | Description |
456+
| :------------------------------ | :--------------------------------------------------------------------------------------------------- |
457+
| **Host schemas at stable URLs** | Schema URLs should not change; use versioned paths if needed. |
458+
| **Fail gracefully** | Define clear error responses for common failure scenarios. |
459+
| **Link to examples** | Reference existing handler specs and the [Tokenization Guide](tokenization-guide.md) for common flows. |
460460

461461
---
462462

463463
## See Also
464464

465465
- **[Tokenization Guide](tokenization-guide.md)** — Guide for building
466466
tokenization payment handlers
467-
- **[Google Pay Handler](https://developers.google.com/merchant/ucp/guides/gpay_payment_handler.md){ target="_blank" }**
467+
- **[Google Pay Handler](https://developers.google.com/merchant/ucp/guides/google-pay-payment-handler){ target="_blank" }**
468468
— Handler for Google Pay integration
469469
- **[Shop Pay Handler](https://shopify.dev/docs/agents/checkout/shop-pay-handler){ target="_blank" }**
470470
— Handler for Shop Pay integration

0 commit comments

Comments
 (0)