Feature/Notable Change | Related Services | Links |
---|---|---|
Introduction of PaymentTransactionServices to store payment data and handle payment gateway interactions |
CartOperationServices, OrderOperationServices, PaymentTransactionServices |
|
Cart payment storage and management moved to PaymentTransactionServices |
CartServices, CartOperationServices, PaymentTransactionServices |
|
Replace Payment status concept with PaymentSummary |
CartOperationServices, OrderOperationServices, PaymentTransactionServices |
|
Checkout payment transactions are now executed via PaymentTransactionServices |
CartOperationServices, PaymentTransactionServices |
|
Move 3DS transaction recording endpoint to PaymentTransactionServices |
CartOperationServices, PaymentTransactionServices |
|
Update guest token logic to archive the cart’s related payments via PaymentTransactionService when a new guest token is created |
CartOperationServices, PaymentTransactionServices |
|
Update CSR and admin preview functionality to restrict access to payments in PaymentTransactionServices while the cart is owned by a CSR or preview session |
CartOperationServices, PaymentTransactionServices |
|
Introduced a payment locking mechanism to avoid multiple processes modifying a payment simultaneously |
CartOperationServices, OrderOperationServices, PaymentTransactionServices |
|
Introduced a payment time-to-live threshold for anonymous customers to protect their data |
PaymentTransactionServices |
|
Updated |
CartOperationServices, PaymentTransactionServices |
|
Job responsible for reversing transactions marked with "REQUIRES_REVERSAL" have been moved to PaymentTransactionServices |
CartServices, CartOperationServices, PaymentTransactionServices |
|
Integrated with ShippingServices to determine shipping rates |
CartOperationServices, ShippingServices |
|
Improved support for OMS return/cancellation logic based on offer targets and qualifiers |
CartServices, CartOperationServices, Order Services, OrderOperationServices, PromotionServices |
|
Added tenant narrowing logic for scheduled jobs to ensure that they execute within the context of a single tenant |
MicroMessagingCommon, DataTracking, ScheduledJobServices, CartServices, InventoryServices, CartOperationServices, MicroBulkCommon, ImportServices, MicroExportCommon, AuthenticationServices |
|
Introduced support VAT taxes and tax codes |
CartOperationServices |
|
Introduced support for variant add-on pricing overrides |
CartOperationServices, CatalogServices |
|
Add max and min thresholds to cart item for use on frontend |
CartOperationServices |
|
Updated CartPaymentMethodValidationActivity to gather PaymentSummaries from PaymentTransactionService |
CartOperationServices |
|
Updated CartPaymentMethodValidationActivity’s validation to require that if the payment has a successful transaction, then that transaction amount must be equal to the payment’s amount |
CartOperationServices |
|
Updated CartPaymentMethodValidationActivity’s validation to require that the payment has a successful transaction whose amount is equal to the payment’s amount, if the transaction was expected to be executed externally - i.e. if |
CartOperationServices |
|
Introduced mechanisms to remove CartItems if their related product is no longer exists in the catalog |
CartOperationServices, CatalogServices |
|
Populate offer proration type on adjustments from offer response |
CartOperationServices, OfferServices |
|
Populate OfferRef on Order and FulfillmentOrder adjustments |
CartOperationServices, OfferServices |
|
Removed PaymentGatewayCommon dependency |
CartOperationServices |
Remove cart version check from ManageCartEndpoint#getCart(…) (the read cart endpoint), allowing the caller to always resolve their most up-to-date cart
Error when adding an item with multiple inventory locations or same sku for multiple vendors
Also impacts:
InventoryServices
AuthenticationServices
Fixed JSONMappingException when an empty page is gathered form ItemListOperationEndpoint
Fixed advanced tags and option values missing from Line Item DTO attributes sent to Offer Services to calculate discounts
This allows offers to target items by tags and attributes.
To do so, an offer rule would need to be made in metadata with a field name like attributes[ATTRIBUTE_NAME]
, e.g., attributes[COLOR]
, to create rules targeting items with that attribute.
For tags, that would look like attributes[productTags]
.
In case you missed the release of AdvancedTags for Products in 1.6.0:
Additions/Updates | Removals |
---|---|
|
|
CartOperationServices
CheckoutCompletionEvent
Since the cart no longer contains a list of its related payments, non-sensitive payment data must be gathered from PaymentTransactionServices. Note: in 1.7.1-GA, this data will be communicated as a part of the CheckoutCompletionEvent
via a paymentSummaries
collection.
broadleaf.cartoperation.service.checkout.checkout-transaction-types.{GATEWAY_TYPE}
Description: Describes the transaction type that should be used during checkout
Default value: AUTHORIZE
broadleaf.cartoperation.service.checkout.tenant.{MY_TENANT}.checkout-transaction-types.{GATEWAY_TYPE}
Description: Tenant-discriminated property describing the transaction type that should be used during checkout
Default value: AUTHORIZE
broadleaf.cartoperation.service.checkout.application.{MY_APPLICATION}.checkout-transaction-types.{GATEWAY_TYPE}
Description: Application-discriminated property describing the transaction type that should be used during checkout
Default value: AUTHORIZE
broadleaf.cartoperation.service.checkout.checkout-transaction-external.{GATEWAY_TYPE}
Description: Whether the checkout transaction occurs externally such as for transparent redirect. Otherwise, the transaction is created in Broadleaf during the checkout workflow. CartOperationServices uses this when validating payments to make sure that they have been executed by the external service.
Default value: false
broadleaf.cartoperation.service.checkout.tenant.{MY_TENANT}.checkout-transaction-external.{GATEWAY_TYPE}
Description: Tenant-discriminated property describing whether the checkout transaction occurs externally such as for transparent redirect. Otherwise, the transaction is created in Broadleaf during the checkout workflow. CartOperationServices uses this when validating payments to make sure that they have been executed by the external service.
Default value: false
broadleaf.cartoperation.service.checkout.application.{MY_APPLICATION}.checkout-transaction-external.{GATEWAY_TYPE}
Description: Application-discriminated property describing whether the checkout transaction occurs externally such as for transparent redirect. Otherwise, the transaction is created in Broadleaf during the checkout workflow. CartOperationServices uses this when validating payments to make sure that they have been executed by the external service.
Default value: false
broadleaf.cartoperation.service.checkout.transaction-retrieval-strategy-for-3-ds.{GATEWAY_TYPE}
Description: Describes when/how we fetch the checkout transaction for 3DS transactions during the checkout workflow.
broadleaf.cartoperation.service.checkout.tenant.{MY_TENANT}.transaction-retrieval-strategy-for-3-ds.{GATEWAY_TYPE}
Description: Tenant-discriminated property describing when/how we fetch the checkout transaction for 3DS transactions during the checkout workflow.
broadleaf.cartoperation.service.checkout.application.{MY_APPLICATION}.transaction-retrieval-strategy-for-3-ds.{GATEWAY_TYPE}
Description: Application-discriminated property describing when/how we fetch the checkout transaction for 3DS transactions during the checkout workflow.
broadleaf.cartoperation.campaignprovider.service-client
Description: The service client used when calling CampaignServices from CartOperationServices.
Default value: "cartopsclient"
broadleaf.cartoperation.cartprovider.service-client
Description: The service client used when calling CartServices from CartOperationServices.
Default value: "cartopsclient"
broadleaf.cartoperation.catalogprovider.service-client
Description: The service client used when calling CatalogServices from CartOperationServices.
Default value: "cartopsclient"
broadleaf.cartoperation.inventoryprovider.service-client
Description: The service client used when calling InventoryServices from CartOperationServices.
Default value: "cartopsclient"
broadleaf.cartoperation.offerprovider.service-client
Description: The service client used when calling OfferServices from CartOperationServices.
Default value: "cartopsclient"
broadleaf.cartoperation.pricingprovider.service-client
Description: The service client used when calling PricingServices from CartOperationServices.
Default value: "cartopsclient"
broadleaf.cartoperation.shippingprovider.url
Description: The base url for the ShippingService.
broadleaf.cartoperation.shippingprovider.all-rates-uri
Description: URI for retrieving a list of shipping rates for all available shipping methods.
broadleaf.cartoperation.shippingprovider.retrieve-rate-uri
Description: URI for retrieving a single rate for a specific shipping method.
broadleaf.cartoperation.shippingprovider.service-client
Description: The service client used when calling ShippingServices from CartOperationServices.
Default value: "cartopsclient"
broadleaf.cartoperation.paymentprovider.url
Description: The base url for an external payment transaction service.
broadleaf.cartoperation.paymentprovider.payments-uri
Description: The URI path for basic CRUD operations on payments.
broadleaf.cartoperation.paymentprovider.lock-payments-uri
Description: The URI path for locking multiple payments.
broadleaf.cartoperation.paymentprovider.unlock-payments-uri
Description: The URI path for unlocking multiple payments.
broadleaf.cartoperation.paymentprovider.authorize-uri
Description: The URI path for executing an authorize transaction.
broadleaf.cartoperation.paymentprovider.authorize-and-capture-uri
Description: The URI path for executing an authorize and capture transaction.
broadleaf.cartoperation.paymentprovider.service-client
Description: The service client used when calling PaymentTransactionServices from CartOperationServices.
Default value: "cartopsclient"
broadleaf.cartoperation.service.price-invalidation.add-payment-method
Since the add payment call no longer goes through CartOperationServices, the request to reprice the cart should be coordinated by the service/resource that created the payment.
broadleaf.cartoperation.service.price-invalidation.update-payment-method
Since the update payment call no longer goes through CartOperationServices, the request to reprice the cart should be coordinated by the service/resource that updated the payment.
broadleaf.cartoperation.service.price-invalidation.remove-payment-method
Since the remove payment call no longer goes through CartOperationServices, the request to reprice the cart should be coordinated by the service/resource that removed the payment.
As of 1.7, payment data storage and interactions have been moved to the PaymentTransactionService. This means that CartOps needs a payment provider so that it can communicate with PaymentTransactionServices to perform payment-related actions.
Additionally, CartOps is now integrated with the ShippingServices. This integration calls for a shipping provider to communicate with the ShippingServices to read shipping rates.
The following properties are required to configure the providers:
broadleaf:
cartoperation:
shippingprovider:
url: 'https://localhost:8447'
paymentprovider:
url: 'https://localhost:8447'
Note
|
Default ports:
|
The default client configurations have changed for service-to-service communication.
In short, the following properties need to be configured:
spring:
security:
oauth2:
client:
registration:
cartopsclient:
authorization-grant-type: client_credentials
client-id: cartopsclient
client-secret: cart_ops_secret
provider:
cartopsclient:
token-uri: https://localhost:8443/oauth/token
For more details on the full scope of these changes, please review the AuthServices release notes.
There are new permissions and scopes for some service OAuth2 clients. Permissions and scopes can be added via admin or sql script.
See AuthServices release notes for more details.
Auth Server | Service | Service ID | New Scopes | New Permissions |
---|---|---|---|---|
Services |
Cart Ops Service Client |
cartopsclient |
SHIPPING_RATES, SYSTEM_PAYMENT_MANAGEMENT, EXECUTE_AUTHORIZE, EXECUTE_AUTHORIZE_AND_CAPTURE |
READ_SHIPPING_RATES, ALL_SYSTEM_PAYMENT_MANAGEMENT, ALL_EXECUTE_AUTHORIZE, ALL_EXECUTE_AUTHORIZE_AND_CAPTURE |