Implementing online payments for a global organisation

Our solution allowed countries to customize payment URLs, integrate OAuth2, and create microservices, resulting in higher conversions.

A couple of years ago, our client AIESEC came to us with a unique problem; to implement online payments on their system. The surface seemed to be pretty straightforward. However, since AIESEC is a global organisation present in over 120 countries, we had a few more complications

  • Each country needed a different price for each of their products.
  • We did not support all available currencies through our global payment gateway.
  • Each country had its implementation timeline for online payments and hence we had to be flexible with the rollout.

AIESEC had selected Adyen as their payment gateway provider for its efficiency in handling multiple currencies and even integrations with local payment solutions. However, once we completed the integration, we had new set of challenges

  • Some countries were not happy with the transaction fees of Adyen. Though Adyen provided us a one-stop-shop and easy to integrate solution, they did charge a fee that some countries were reluctant to pay.
  • Countries were keen to have modifications to the flow to also include contracts & coupon codes. Still, given the diversity of all requested implementations, we were unable to come up with a global standard.
  • Adyen was not available in some countries that AIESEC was present.

So here was our new problem statement —

  • A need for a flexible solution due to the diverse nature of AIESEC operations.
  • Fault-tolerant since it involved payments and avoid any dropouts in this critical step of the process.
  • To be available in any part of the world.

Our solution

  • Customized payment URLs
    Countries can now customise payment URLs on the admin panel, to provide their integrations with sufficient information to manage the transaction independent of the global system.
  • OAuth2 Identity Provider
    Since our API already had an OAuth 2 identity provider; we configured a user interface for countries to create their own OAuth client along with the credentials.

Now countries can customise the payment part of the process and send the user back to the global system after marking the customer as paid. The process on the global system seamlessly adapts to move the user through the flow.

To make it easier to integrate payments with even more countries, we’ve made the code that runs on the custom payment URLs into a microservice on the Serverless framework with the following features

  • Each country can choose its own local payment partner and negotiate transaction rates directly.
  • Higher conversions since the checkout process is customised to the country’s reality.
  • Deploy new features to production quickly.
  • Deploy separate microservices for each country so that they are isolated components.
  • Share commonly used code as layers/components such as marking a customer as paid, authorization.
  • Finally, we can do a standard payment integration in two weeks time from vendor finalisation to production deployment.

Some examples

  • AIESEC India
    - We’ve implemented a flow to make their customers sign contracts and then split the payment (RazorPay)between their local and national offices.
    - Email notifications to key stakeholders in the organization.
  • AIESEC UK
    - We’ve implemented Stripe for payments in addition to contracts
    - Email notifications to key stakeholders.

[.grid-rich-text][.box-orange]Recommendation

Proposed a plan to move their website from Magento to a custom build which was linked to their custom-built ERP backend[.box-orange]

Let’s build something awesome, together!