v147 · Payments · Web APIs

SPC Auth Flow

Walk through the full Secure Payment Confirmation authentication flow — credential registration, payment challenge, and server-side signature verification — using real WebAuthn API calls with the payment extension.

Capabilities preflight

Before the WebAuthn ceremony, this page performs the Chrome 147 preflight: PaymentRequest.getSecurePaymentConfirmationCapabilities(). It returns a promise for a boolean-keyed record; keys are interpreted lexicographically and omitted keys stay unknown, not false.

Static method checking...
No activation gate auto-run pending
browserBoundKeyHardware unknown
Capability response will appear here...

Register a WebAuthn credential with the payment extension. In a real SPC flow this credential is created by your bank's authenticator. Here we create one in this origin so you can see the full API shape.

Credential output will appear here…

Request a payment authentication challenge from the backend. This corresponds to the bank's server sending a challenge that the authenticator must sign, binding it to the payment instrument and merchant.

Complete Setup first to register a credential, then return here to generate a challenge.
Merchant page
PaymentRequest
credentials.get()
Authenticator
payment challenge
browser
signed assertion
RP server
verify
Challenge output will appear here…

Ask the backend to verify the assertion signature against the public key extracted during registration.

Complete Setup and Challenge first to generate an assertion to verify.
Complete steps ① and ② to verify a signature.

references