Introduced Content-Security-Policy header configuration for the Storefront frontend app. See Security Guide for configuration details.
ContentService is now being used to access content details in a centralized location, such as using the service to fetch the default theme colors for the site.
The PaymentTransactionService was introduced in v1.4.0 to begin the separation of business logic regarding payments from Carts and Orders.
One additional change in v1.4.2 building upon that is the migration of CustomerPayment data, service, and endpoints from the CustomerService to the PaymentTransactionService. As such, the front-end components were updated to use PaymentTransactionService saved payment data rather than using CustomerService customer payment data.
Other changes include:
Added SavedPaymentMethodClient
Updated components to use SavedPaymentMethod hooks
Updated customerPaymentAccountId to savedPaymentMethodId
Updated Passthrough, Paypal, Checkout.com, and Stripe payment forms to use the PaymentTransactionService saved payment approach
Updated components that use PaymentAccount to use SavedPaymentSummary instead
Updated My Account Payments to use PaymentTransactionService SavedPaymentMethod
We also added a PaymentsContext to store the state of payments related to the current cart
Enhanced Payment and SavedPayment ownership validation by:
moving the saved payment ownership validation from the endpoint-level (CustomerPaymentManagementEndpoint) to service-level (SavedPaymentMethodManagementService#populatePaymentFromSavedPayment)
adding two fields to Payment, owningUserType and owningUserId, to indicate the owner of the payments
adding validation to ensure that anonymous customer cannot access payments that belong to a customer
renaming savePaymentToCustomer to savePaymentForFutureUse to support owning user types other than customer (i.e. account)
Another change seen in v1.4.2 is the integration of Checkout.com as another method of payment upon checkout. In particular, aside from adjusting to the changes to payment method objects due to the PaymentTransactionService migration & adding the usage of the PaymentMethodEndpoint upon checkout to lay the groundwork for the Checkout.com payment method, there was a particular focus on supporting 3DS transaction requests and executions.
We also feature Checkout.com data in the My Account Saved Payments section, by making use of Checkout.com’s Frames components. The Frames interaction produces a short-lived (15 min), single-use token that can be exchanged for a multi-use token via the Payment Instrument API. The returned source.id is the multi-use token & should be stored in the saved payment’s paymentMethodProperties, which can then be used to display data in the Saved Payments section.
In order to qualify which users can access what type of data catalogs, AccessPolicy domains were introduced in Tenant Services and DataTracking, which has fields for rules and users. The rules fields function as inclusion and exclusion filters used on CatalogRefs for catalog inheritance, while the users fields will allow the requests to target Customers, Accounts, or Customer Segments.
Part of implementing basic Catalog Access Policies is passing the Customer access token, which contains pertinent information about the currently authenticated Customer who is making the Catalog request. v1.4.2 ensures that the Customer access tokens are being passed when the Search and Search Suggestions requests are made.
Fixed: Error for non-SSR pages with undefined gateway host in Content Services client
Fixed: Preview on site not working initially on pages with SSR enabled due to caching (Products, Categories, Customer Segments)
Fixed: Payment token used in test mode for passthrough transactions is not being populated
Fixed: Error when updating a cart item whose product no longer exists
Fixed: Added null check for product or variant referenced by bundle item
Fixed: CSR Anonymous Transfer Cart Token URL empty upon generation
Fixed: Checkout.com payment form render issue