Checkout Overview Architecture

Checkout creation 

  • Checkout webapp interactions
  • Requirements 
  • Plugins
  • Payment means
  • User service

Checkout webapp main interactions

Simplified checkout creation process

Checkout webapp main interactions

Let's dive into the code

  • checkout controllers
  • backbone routers
  • js components
  • hbs templates

 

 

 

Requirements

 

  • Common requirements vs Lob requirements
  • FinalizationRequirement model
  • DataField type
  • Requirement providers
  • Requirement level

 

 

Plugins

 

  • Two kinds :
    • lob plugins : FLIGHT, CAR, TRAIN, HOTEL, GROUND, FEE
    • third party plugins : APPROVAL, CDF validation
  • Define a common interface between lobs/third party and checkout service
  • most of endpoints are lob agnostic endpoint 
  • third party are useful for requirement

 

Web components

 

  • Several web components are integrated in checkout webapp
    • payment component
    • trip catcher
    • air cancellation page
  • Advantages
    • Release directly by config
    • Decouple responsability
    • Facilitate contribution

 

Payment means

 

  • Checkout-service calls payment logic service to get the customer fop
  • payment logic calls efop
  • Binding between paymentsection and finalizationrequirements
  • payment component

 

Mocked tests

 

  • How it works

https://confluence.expedia.biz/display/ECT/Checkout+service+mocked+tests

  • create a two run configurations in checkout service 
    • application in mock mode
    • mock server application
  • How to run a scenario 
  • Parameter to pass by checkout-orchestrator-service in VM options : -Dtest.use.orchestrator=true
  • Need to have checkout-orchestrator-service running locally

Checkout Model Mapping

  • 1 checkout is composed of 
    • List of travelers
    • List of product items
  • 1 or several transactions are created when finalizing the booking
  • 1 transaction can be composed of 
    • only one product when the booking is made separately
    • all products from the checkout
  • Product items are booked together if (in that case only one transaction is created:
    • use payment logic config is enabled
    • never for multi pax
    • Hotel Gds + FEE

Transaction process

Simplified transaction process

Transaction process

Simplified transaction process

  • create the transaction
  • trip interactions
    • create the trip
  • call to plugins to get
    • the booked product
    • the oms requested product
  • build oms order request
  • call oms 
    • oms calls lob supply to book the product
  • update transaction status
  • update the trip status and action links
  • redirect to trip

Transaction process

Simplified transaction process for mpax

Payment means

  • call of payment logic to get

    • the supplier fops

    • the payment plan 

  • main classes
    • PaymentManager
    • InitializePaymentsModels

Trip interactions

Action links :

  • depends on transaction status :
    • DRAFT or FAILURE : book and delete action
    • SUCCESS, WARNING or PENDING : 
      • change
      • hide pnr for train
      • confirm

Save For Later Use Case

Save For Later Use Case

User did not book and save his checkout for later

 

  • creates transaction in PENDING state
  • map action links to the transaction
  • book action link redirect to checkout
  • we don't save the PAYMENT MEANS

Performance

  • parallelization
    • parallelize the call of service asynchronously
    • enabled for :
      • user service calls
      • efop service
      • resolve shopped product
      • approval service
      • verify and get requirements
    • config : checkout.parallel_execution.enabled

Resiliency

DataBOM

  • overview of the model defined :
    • https://confluence.expedia.biz/pages/viewpage.action?pageId=1034427955
  • dedicated consumer in checkout notification service

 

 

  • simplified overview of the databom workflow on checkout
    • send the notification wrapper to a dedicated queue
    • consumer reads the notification wrapper
    • bind data from it to create a Booking object
    • call plugin to get specific data from it
    • send the booking through Kinesis
    • Data is then pushed to S3

DataBOM

Simplified overview of databom process on checkout

Copy of checkout overview architecture

By Issam Hammi

Copy of checkout overview architecture

  • 585