v148 · Web APIs · Capabilities Demo
Capabilities Demo
Calls PaymentRequest.getSecurePaymentConfirmationCapabilities() and displays what Chrome reports for this device — SPC support and authenticator availability.
SPC requires a platform authenticator (Face ID, Touch ID, Windows Hello) and a previously enrolled WebAuthn credential tied to a payment instrument. The capabilities API tells you whether the device can support SPC before you build the payment flow.
device capabilities
PaymentRequest.getSecurePaymentConfirmationCapabilities()
API available
Checking…
spcSupported
—
authenticatorAttachment
—
what to do based on the result
spcSupported: true
- Show SPC payment sheet during checkout
- Offer biometric step-up for high-value transactions
- Register new WebAuthn credential for faster future payments
- Skip OTP/password step-up for enrolled users
spcSupported: false
- Fall back to SMS OTP or password step-up
- Offer to enrol a platform authenticator if the OS supports it
- Use traditional 3DS challenge flow
- Prompt user to try on a biometric-capable device
integration code
async function checkSPCAndRoute() {
if (!('getSecurePaymentConfirmationCapabilities' in PaymentRequest)) {
// Pre-Chrome 148: use canMakePayment() as a fallback probe
return useFallbackAuth();
}
const caps = await PaymentRequest
.getSecurePaymentConfirmationCapabilities();
if (!caps.spcSupported) {
return useFallbackAuth();
}
// Device supports SPC — check for enrolled credential
const hasCredential = await checkEnrolledCredential(userId);
if (hasCredential) {
return showSPCPaymentSheet(transactionDetails);
} else {
return enrollAndPay(userId, transactionDetails);
}
}
see also
implementation reference
Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗