Currently, Secure Payment Confirmation (SPC) is designed to streamline authentication during a payment transaction and to produce cryptographic evidence that the user has confirmed transaction details. The specification ensures that critical payment information, such as the payeeName, payeeOrigin, and total amount, is presented to the user and subsequently included in the CollectedClientData dictionary, which cannot be tampered with via JavaScript. This provides a strong foundation for confirming user consent to a payment.
To enhance dispute protection, particularly against "friendly fraud," and to more explicitly confirm the buyer's intent to purchase specific items, I would like to explore the inclusion of detailed order information. This would provide payment networks with incontrovertible cryptographic evidence that the buyer confirmed the specific products or services displayed to them, going beyond just the total amount. This aligns with the goal of SPC to reduce authentication friction yet decrease fraud during checkout by making the confirmed transaction details more comprehensive and transparent.
Use Cases
This enhancement would be particularly beneficial for:
- One-click checkouts. In scenarios where user interaction is minimal, presenting a clear, cryptographically linked summary of the items being purchased directly within the SPC UX would provide a strong record of buyer intent, reducing ambiguity and potential for disputes.
- Agentic checkouts. When product selection is performed on behalf of the buyer, the ability for the user to confirm a detailed list of items via SPC directly addresses the need for transparency and explicit consent for the entire order.
Proposed Modifications
To integrate order information, modifications would be required across the
SecurePaymentConfirmationRequest dictionary (for the request),
AuthenticationExtensionsPaymentInputs and CollectedClientAdditionalPaymentData dictionaries (for cryptographic linking), and
- Transaction confirmation UX (for display).
Payment Confirmation Request changes
A new optional member, such as lineItems, should be added to the SecurePaymentConfirmationRequest dictionary. This member would be a sequence of dictionaries, each representing a single product or service being purchased.
Payment Inputs and Payment Data changes
For the lineItems to be cryptographically linked to the authentication assertion, they must be included in the AuthenticationExtensionsPaymentInputs dictionary. This ensures that the order details are passed as part of the payment-specific data.
Consequently, lineItems would also need to be a member of the CollectedClientAdditionalPaymentData dictionary. This crucial step ensures that the order information is signed along with other transaction details and returned to the Relying Party for verification, providing the necessary cryptographic evidence of user intent.
Display in Transaction Confirmation UX
The user interface presented to the user for transaction confirmation currently includes the payeeName, payeeOrigin, total, instrument details, and payment entities logos. The lineItems must be prominently displayed within this user interface, providing the user with a clear, receipt-like summary of the items they are consenting to purchase.
While the specification intentionally does not require a User Agent to display a particular user interface to preserve implementation choice, similar to the non-normative UX guidelines for payeeName and payeeOrigin, recommendations could be developed for lineItems.
These guidelines would focus on:
- Clarity and readability. Ensuring each line item is presented clearly, with
itemName and quantity easily discernible.
- Consistency across platforms. Providing guidance for displaying line items effectively on different screen sizes, such as mobile and desktop, while maintaining a consistent user experience.
- Truncation strategies. Offering best practices for truncating long itemName or description strings to fit available screen space, without losing critical information, akin to how
payeeName and payeeOrigin are handled.
Verification by Relying Party
When a Relying Party receives the PublicKeyCredential returned from a successful SPC invocation, it already performs a series of verification steps. This process would be extended to include the lineItems too.
Currently, Secure Payment Confirmation (SPC) is designed to streamline authentication during a payment transaction and to produce cryptographic evidence that the user has confirmed transaction details. The specification ensures that critical payment information, such as the
payeeName,payeeOrigin, andtotalamount, is presented to the user and subsequently included in theCollectedClientDatadictionary, which cannot be tampered with via JavaScript. This provides a strong foundation for confirming user consent to a payment.To enhance dispute protection, particularly against "friendly fraud," and to more explicitly confirm the buyer's intent to purchase specific items, I would like to explore the inclusion of detailed order information. This would provide payment networks with incontrovertible cryptographic evidence that the buyer confirmed the specific products or services displayed to them, going beyond just the
totalamount. This aligns with the goal of SPC to reduce authentication friction yet decrease fraud during checkout by making the confirmed transaction details more comprehensive and transparent.Use Cases
This enhancement would be particularly beneficial for:
Proposed Modifications
To integrate order information, modifications would be required across the
SecurePaymentConfirmationRequestdictionary (for the request),AuthenticationExtensionsPaymentInputsandCollectedClientAdditionalPaymentDatadictionaries (for cryptographic linking), andPayment Confirmation Request changes
A new optional member, such as
lineItems, should be added to theSecurePaymentConfirmationRequestdictionary. This member would be a sequence of dictionaries, each representing a single product or service being purchased.Payment Inputs and Payment Data changes
For the
lineItemsto be cryptographically linked to the authentication assertion, they must be included in theAuthenticationExtensionsPaymentInputsdictionary. This ensures that the order details are passed as part of the payment-specific data.Consequently,
lineItemswould also need to be a member of theCollectedClientAdditionalPaymentDatadictionary. This crucial step ensures that the order information is signed along with other transaction details and returned to the Relying Party for verification, providing the necessary cryptographic evidence of user intent.Display in Transaction Confirmation UX
The user interface presented to the user for transaction confirmation currently includes the
payeeName,payeeOrigin,total, instrument details, and payment entities logos. ThelineItemsmust be prominently displayed within this user interface, providing the user with a clear, receipt-like summary of the items they are consenting to purchase.While the specification intentionally does not require a User Agent to display a particular user interface to preserve implementation choice, similar to the non-normative UX guidelines for
payeeNameandpayeeOrigin, recommendations could be developed forlineItems.These guidelines would focus on:
itemNameandquantityeasily discernible.payeeNameandpayeeOriginare handled.Verification by Relying Party
When a Relying Party receives the PublicKeyCredential returned from a successful SPC invocation, it already performs a series of verification steps. This process would be extended to include the
lineItemstoo.