Skip to content

feat: add com.mercadopago.payment.display extension#635

Draft
gforgab wants to merge 1 commit into
Universal-Commerce-Protocol:mainfrom
gforgab:gforgab/payment-display-extension
Draft

feat: add com.mercadopago.payment.display extension#635
gforgab wants to merge 1 commit into
Universal-Commerce-Protocol:mainfrom
gforgab:gforgab/payment-display-extension

Conversation

@gforgab

@gforgab gforgab commented Jul 24, 2026

Copy link
Copy Markdown

What

Adds com.mercadopago.payment.display, a vendor-namespaced Checkout
extension
that models in-session, out-of-band payment methods (e.g.
Pix) as a pure-render Action on top of the generic actions primitive
introduced in #582.

When the buyer picks such a method, the Business surfaces an inert display
artifact (QR image, copy-and-paste code, and/or hosted instructions) as an
outstanding Action on the checkout. The Platform renders it, the buyer pays in
their bank app, and the same Complete Checkout operation resolves by polling
Get Checkout — no redirect, no continue_url.

Why this shape

  • Builds directly on the merged actions primitive (feat: extension-defined Actions primitive #582). Instance is
    { id, config? }; no required field — gating is expressed via a
    recoverable error Message whose path points at the action occurrence,
    per the outcome of the [RFC] Proposal: Modeling 3DS and Step-Up Actions in UCP #517 discussion.
  • Vendor namespace, not core. Consistent with the Tech Council's steer on
    [RFC] Proposal: Modeling 3DS and Step-Up Actions in UCP #517 to keep core small and let independent, community-driven implementations
    land first. Namespace derives from the handler domain (com.mercadopago.*,
    matching com.mercadopago.checkout).
  • Carries an explicit render/trust contract: display data only (no
    PAN/OTP/credentials), image is inert, code is display text, and
    instructions_url is the only loadable field (https origin allowlist).

Scope

  • In-session methods that resolve in seconds (Pix). Out-of-session methods that
    settle after the session ends (boleto, cash vouchers) are out of scope and
    will be proposed separately at the order level (async-payments EP).

Changes

  • source/schemas/shopping/payment_display.json — extension schema.
  • docs/specification/payment-display.md — spec (discovery, schema,
    render/trust contract, resolution flow).
  • mkdocs.yml — nav under Checkout Capability + llmstxt entry.
  • .cspell/custom-words.txt — domain terms.

Related

Opening as draft for early feedback on the extension shape and the
render/trust contract wording before finalizing.

@google-cla

google-cla Bot commented Jul 24, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

Add a vendor-namespaced Checkout extension that models in-session,
out-of-band payment methods (e.g. Pix) as a pure-render Action on top of
the generic `actions` primitive. The Business surfaces an inert display
artifact (QR image, copy-and-paste code, hosted instructions) that the
Platform renders; the same Complete Checkout operation resolves by polling
Get Checkout, with no redirect or continue_url handoff.

- source/schemas/shopping/payment_display.json: extension schema
  (config, action instance, checkout extension); no `required` field —
  gating is expressed via a recoverable Message with a path.
- docs/specification/payment-display.md: spec with discovery, schema,
  render/trust contract, and resolution flow.
- mkdocs.yml: nav entry under Checkout Capability + llmstxt section.
- .cspell/custom-words.txt: domain terms (Pix, boleto, Mercado Pago).
@gforgab
gforgab force-pushed the gforgab/payment-display-extension branch from daf3963 to 6ace89e Compare July 24, 2026 22:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant