Highlights
- Saving 30 Hours of Manual Work Daily: delivered an automated solution that allowed our client to significantly shorten time expenses for onboarding merchants to the system and providing updates, letting employees of our client focus on other business-critical tasks.
- Integration with POS Terminals: implemented automated workflows to register new POS terminals to the system, as well as activating, deactivating, and updating them.
- Connection with a 3rd Party System: provided Single Sign-On (SSO) connection between a 3rd party partner’s admin portal and the admin portal of our client to achieve the goals of this project.
Client
The client is Poynt, a B2B company operating in the eCommerce and FinTech industry.
Poynt provides its customers with a revolutionary all-in-one commerce solution, founded in 2013. This is a platform for eCommerce websites that includes the following key offerings:
- Payment gateway and payment processing functionality.
- Domain registration and web hosting.
- Wide range of payment devices, from a simple card reader to the Poynt Smart Terminal.
- Poynt OS – a powerful Android-based operating system.
- Poynt Cloud – a set of cloud-enabled software.
- Onboarding and underwriting functional capabilities.
- Instant funding functionality.
- A selection of merchant type-specific, tailorable payment terminal software bundles.
Product
SPD Technology helps Poynt with several subprojects, offering multiple dedicated development teams that work on the different software development needs of the client’s company, including Reseller Portal decoupling and custom payment processing solutions development.
This particular product is a back-end solution with a public web endpoint. It is an onboarding service that helps merchants from a large external payment processing partner to be automatically onboarded and use their services on the client’s platform.
Goals and objectives
- Automatic Creation of Merchants and Triggering of Welcome Email Based on Webhooks: Streamline the merchant onboarding process by utilizing webhooks to receive data from external sources and trigger the creation of new merchant accounts. Ensure that relevant information is collected and stored securely, and upon successful creation, send an automated welcome email to provide necessary information and instructions to the new merchant.
- Automatic Updates of Merchant Data Based on Webhooks: Set up webhooks to receive notifications when there are changes in merchant data. Integrate a mechanism to process these updates and reflect them in the system promptly to ensure the accuracy of information.
- Automatic Offboarding of Merchants Based on Webhooks: Configure webhooks to receive notifications when an offboarding event occurs, such as the termination of a merchant account. Implement automated processes to deactivate accounts, revoke access, and handle any necessary post-offboarding procedures.
- Automatic Registration, Activation, and Deactivation of POS Terminals for Merchants Based on Webhooks: Utilize webhooks to receive events related to POS terminals, such as registration, activation, and deactivation. Implement automated workflows to register new terminals, activate them for use, and deactivate or update their status based on external triggers.
- Setting up SSO Connection Between 3rd Party Partner’s Admin Portal and Client’s Admin Portal by Linking User Accounts in Two Systems: Integrate a secure SSO mechanism that allows users to seamlessly log in to both the 3rd party partner’s admin portal and the client’s admin portal using a single set of credentials by linking user accounts across the two systems and ensuring the exchange of authentication tokens.
Project challenge
- Mapping of Data Models in Two Systems: conduct a thorough analysis of both systems’ data models and establish a clear mapping strategy.
- Dependencies on Other Systems and Teams: Establish clear communication channels with external teams to stay informed about changes, updates, and potential impacts on your system.
- Communication for Clarifying Requirements: foster open and transparent communication channels, as effective communication is crucial for understanding and clarifying requirements, avoiding any misunderstandings.
- Integration Testing: develop a robust integration testing strategy that includes both automated and manual testing processes.
- Specific Requirements for Webhooks Processing: clearly define and document webhook specifications, including payload formats, event types, and error handling.
- High Requirements for Reliability: implement redundancy, failover mechanisms, and thorough error handling to enhance system reliability.
- AWS Serverless Approach: leverage AWS serverless services effectively, implement proper monitoring tools, and ensure robust error handling.
- Lack of Up-to-Date Documentation in Both Systems: prioritize the documentation process, encourage regular updates, and establish a mechanism for developers to contribute to and maintain documentation.
- Limited Ability for Sandbox Testing: develop and maintain custom webhooks simulator to replicate real-world scenarios in a controlled environment for comprehensive testing.
- Evolving Data Model in the Destination System: implement versioning mechanisms in the integration logic for two separate versions of the data model to accommodate changes.
Solution
To implement this challenging project, we assembled a team comprising two Back-end Developers who are working on it for nearly two years.
The process started with the technical design of the solution according to all technical restrictions of Partner’s API. The initial stage also covered mapping of data models on source and destination systems. After that, we managed to create a robust pipeline utilizing 1 API gateway, 3 Lambda functions, and 2 SQS queues to efficiently process web hooks related to operations with merchants and POS terminals.
The next step was to develop a Java SpringBoot application deployed on ECS (Elastic Container Service) with an API interface specifically designed for creating change requests on a 3rd party system.
During the development, we faced the problem of Lambda function cold starts, which resulted in some latency and harmed overall system responsiveness. Our developers managed to reduce the occurrence of cold starts for Lambda functions and optimized their startup time.
As for the challenge with data models, we implemented support for two versions of the data model for merchants on the destination system and executed a migration from the old to the new data model using Python.
Next, we developed a serverless Mock service with an API interface to simulate various webhooks in the proper format. The Mock service provided a controlled environment for testing, allowing the team to simulate different webhook scenarios and validate the system’s behavior under various conditions. In addition to that, we achieved comprehensive test coverage by implementing both unit tests and integration tests.
To provide automation that streamlines the development and deployment process, allowing for faster and more reliable releases while reducing the risk of human error, we implemented an automatic Continuous Integration/Continuous Deployment (CI/CD) pipeline using GitHub Actions.
Finally, our developers set up monitoring of the production system’s state and implemented alerting in case of issues using Kibana and AWS CloudWatch, which is crucial for identifying and addressing issues, ensuring the system’s stability, and minimizing downtime.
Tech Stack
- Amazon AWS
- AWS ECS
- AWS Lambda
- Java
- Python
- SpringBoot
Our results
We have been involved in this subproject since August 2022, and continue improving the product. Our system is currently in production and can be supported by other client teams using monitoring tools and documentation that we created.
- Onboarding Process Automation: the client now can onboard merchants from a large partner without any manual actions. Currently, there are around 10 merchants daily, however, the system has proven to be performing stable and is ready for much higher loads.
- Automated Updates: the system supports automatic updates of merchants by processing an average of 100 updates per day, and is completely ready for this volume to grow with the business expansion of our client.
Highlights Client Poynt, the first world’s open-commerce solution, was founded in 2013. The startup was inspired by a vision...
Explore Case