Skip to content

Support for fully discounted carts and GraphQL improvements

Compare
Choose a tag to compare
@carstendietrich carstendietrich released this 09 Apr 09:47
· 360 commits to master since this release
790a2a2

w3cdatalayer

  • Fixed a bug that causes the datalayer to panic if it failed to build an absolute url
  • Introduced a configuration option to choose between base64url and hex encoding for the hashed values
  • Move config to commerce namespace, from w3cDatalayer to commerce.w3cDatalayer
  • Add legacy config mapping so old mappings can still be used
  • Add cue based config to have config validation in place

checkout

  • Controller
    • Allow checkout for fully discounted carts without payment processing. Previously all checkouts needed a valid payment to continue.
      In case there is nothing to pay this can be skipped.
      • Order ID will be reserved as soon as the user hits the checkout previously it was done before starting the payment
  • GraphQL
    • Update place order process to also allow zero carts which don't need payment, this leads to a state flow that lacks the payment steps.
      See module readme for further details.
  • Update source service to support external location codes.
    • Adds ExternalLocationCode to the Source struct.
    • Update SetSourcesForCartItems() to use the new SourcingServiceDetail functionality if the bound service implements the interface
  • Update OrderService to expose more metrics regarding the place order process:
    flamingo-commerce/checkout/orders/cart_validation_failed
    flamingo-commerce/checkout/orders/no_payment_selection
    flamingo-commerce/checkout/orders/payment_gateway_not_found
    flamingo-commerce/checkout/orders/payment_flow_status_error
    flamingo-commerce/checkout/orders/order_payment_from_flow_error
    flamingo-commerce/checkout/orders/payment_flow_status_failed_canceled
    flamingo-commerce/checkout/orders/payment_flow_status_aborted
    flamingo-commerce/checkout/orders/place_order_failed
    flamingo-commerce/checkout/orders/place_order_successful
    

cart

  • inMemoryBehaviour: Allow custom logic for GiftCard / Voucher handling
    • We introduced two new interfaces GiftCardHandler + VoucherHandler
    • This enables users of the in-memory cart to add project specific gift card and voucher handling
  • Fix CreateInitialDeliveryIfNotPresent so that cache gets updated now when an initial delivery is created
  • GraphQL: Add new cart validation query Commerce_Cart_Validator to check if cart contains valid items

price

  • IsZero() now uses LikelyEqual() instead of Equal() to avoid issues occurring due to floating-point arithmetic

product

  • product attributes:
    • Added AttributesByKey domain method to filter attributes by key and exposed this method as getAttributesByKey in GraphQL
    • GraphQL: Exposing codeLabel property in the Commerce_ProductAttribute type

payment

  • Introduced error message for already used idempotency key