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
- story book
- config to release a new version checkout.payment_component.version
- binding of data between checkout webapp and 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
- http retry
- retrying http calls for idempotent endpoint
- calls of lob plugins
- 3 times
- retrying http calls for idempotent endpoint
- hystrix
- approval
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