Backend - Tech discovery OpenWaylet

Problems

#1 Waylet configuration by store Solved

Looking in sandbox configuration, it seems each account has his own set of commerceId, secret and apiKey.

We need to check if this proceeds and how we’ll handle on our side in case we need to store this data by restaurant in our platform.

This ticket was created to track this: https://rbictg.atlassian.net/browse/IBFEC-1697

Solution

From Paycomet side we discovered that only the terminal ID is necessary, using terminal ID they can get the keys, secrets and commerceId.

cc @Raphael Ferreira Gomes @Ruani, Andrea

Repositories on this feature

Business Rules

  • Similar to Paypal and Bizum, Waylet has his own interface, provided by Paycomet, which should be instantiated per request of checkout link.

  • Waylet should be identified on Admin/Support Tool

Breakdown

The tasks are almost the same as we done implementing Bizum. Here a copy of the steps just in case the original page get archived.

  1. Add Waylet into packages (original source)

    1. Repo: intl-packages
      Waylet must be added in CartGooglePaymentTypeExclusion, XenialDeliveryPayTypeId and RBIPaymentCard, then run the yarn build command.

Pro tip: when making any modifications to the package, the other repositories only receive these new modifications after running Bumps.

  1. Add to Loyalty (original source)

    1. Repo: intl-loyalty

    2. In the "loyalty-middleware" folder, update the packages

    3. Bump the new version of @rbilabs/intl-payments in intl-loyalty/loyalty-middleware

    4. Build the loyalty middleware: yarn install && yarn build

    5. Generate the loyalty middleware sdk: yarn sdk:generate . This creates loyalty middleware SDK with MdwRBIPaymentCard

    6. Then, finally, in WL-GQL you can load this latest version of intl-loyalty-middleware-sdk

  2. Add to Fulfillment (original source)

    1. Repo: intl-fulfillment-service

    2. Update Packages

    3. Define Waylet in CARD_TYPE_TO_MDW, this file.

    4. Define Waylet in MAP_GQL_CART_PAYMENT_TO_COMMON, this file.

    5. Define Waylet in MAP_GQL_CART_PAYMENT_TO_RBI_COMMON, this file.

  3. Add to Paycomet Payment Service (original source)

    1. Repo: intl-psp-paycomet-service

    2. Taking advantage of Bizum refactor to accomodate both Bizum and Paypal, we just need to add the Waylet ENUM in the payment-core/common.types.ts, like here.

    3. Add Waylet into payment-core/paycomet-helper.ts, like here.

    4. And add it in the outcome validations, take a look at outcome folder..

 

Sequence Diagram

image-20240305-121214.png

title Paycomet Waylet Payment (Delivery) Frontend->GraphQL:generateCheckoutLink()\n<< methodId: 41 >> GraphQL->GraphQL:get Order and Store info GraphQL->Paycomet-PSP-Service:POST {pspServiceBaseURL}api/v1/links/checkout\n << To generate HPP URL >> Paycomet-PSP-Service->Paycomet(External):POST {paycometBaseURL}/v1/payments Paycomet-PSP-Service<-Paycomet(External):Return Waylet link Paycomet-PSP-Service->GraphQL:Return sanitized Hosted Page URL GraphQL->Frontend:Return Hosted Page URL Frontend->Paycomet(External):Render Hosted Page Frontend-->Paycomet(External):Submit Waylet Validation\n<< After guest interaction with Hosted Page >> Paycomet(External)-->Paycomet-PSP-Service: Callback URL OK/NOK Paycomet-PSP-Service->Frontend:Return Payment Outcome Frontend->GraphQL:commitOrder() mutation\n<< Backend commit disabled >> GraphQL->Paycomet-PSP-Service: validateSale() Paycomet-PSP-Service-->GraphQL: Sale OK/NOK GraphQL->GraphQL: Hydrate Order and Update Order status GraphQL->Frontend: Order Ok, confirmation page.