Integración de Checkout

Integración de Checkout

Para realizar una integración de pago con redireccionamiento, es necesario seguir los siguientes pasos:

  1. Autenticación de servicios
  2. Registrar checkout
  3. Redireccionamiento al checkout de pago
  4. Redireccionamiento de éxito o cancelación

1.- Autenticación de servicios

Deberás de copiar las credenciales de acceso al API, para llamar al servicio de autenticación de OrkestaPay y obtener un token de acceso que se utilizará para llamar al resto de servicios.


Petición hacia el servicio

Después de copiar las credenciales, deberás de buscar los textos REPLACE_WITH_YOUR_CLIENT_ID y REPLACE_WITH_YOUR_CLIENT_SECRET en el script de abajo y reemplazarlos con los valores copiados para poder ejecutar la llamada al servicio mediante shell:

  • client_id: Llave de acceso
  • client_secret: Llave secreta

Tipo de permisos

La propiedad grant_type siempre se deberá de llevar el valor client_credentials, dado que es el modelo de funcionamiento del protocolo oAuth 2.0 que utiliza OrkestaPay para autenticar los servicios.

curl --request POST \
     --url https://api.sand.orkestapay.com/v1/oauth/tokens \
     --header 'Accept: application/json' \
     --header 'Content-Type: application/json' \
     --data '
{
     "client_id": "REPLACE_WITH_YOUR_CLIENT_ID",
     "client_secret": "REPLACE_WITH_YOUR_CLIENT_SECRET",
     "grant_type": "client_credentials"
}
'

Respuesta del servicio

Como resultado de la llamada al servicio de autenticación se regresará un token JWT, el cual se utilizará en todos los siguientes llamados a los servicios del API de OrkestaPay.

{
    "token_type": "Bearer",
    "expires_in": 1800,
    "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIwenJMTnEwbzBab1R4NTlaeWVPaTI1RGxZLWl6cV91SVFSLThWS0RaWjlFIn0.eyJleHAiOjE2Njk4NTAzNTAsImlhdCI6MTY2OTg1MDE3MCwianRpIjoiMWI4MWZhMDItMzk2ZC00NGNjLWJlMzctZGU4ZWQyODg2MTEyIiwiaXNzIjoiaHR0cHM6Ly9kZXYtYXV0aC56ZW5raS5maS9hdXRoL3JlYWxtcy9wYnciLCJzdWIiOiIxMjgyNjJhOS00NDgxLTQ4OGItYTczNi1iNmI5MTA1NjQ4MzQiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiI1MDg3ODE3MDhjNzk5MTE5NTJkZGJlYWZkZjM5NjNmNTcxYjNjYzE4YzE5YmNkY2YiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbImh0dHBzOi8vcG9ydGFsLWRldi56ZW5raS5maSJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsiYXBpIiwiYXBpX3plbmtpcGF5Il19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImNsaWVudEhvc3QiOiIzNS44NS4yMy4xOTAiLCJjbGllbnRJZCI6IjUwODc4MTcwOGM3OTkxMTk1MmRkYmVhZmRmMzk2M2Y1NzFiM2NjMThjMTliY2RjZiIsInByZWZlcnJlZF91c2VybmFtZSI6InNlcnZpY2UtYWNjb3VudC01MDg3ODE3MDhjNzk5MTE5NTJkZGJlYWZkZjM5NjNmNTcxYjNjYzE4YzE5YmNkY2YiLCJjbGllbnRBZGRyZXNzIjoiMzUuODUuMjMuMTkwIn0.Ds5eQ-tkn4ckTUHI-mrJn6eYBaUa-6uZNxzrGRfYc5neI1TvB2RHu_IDsktDVi9XdR5P_P0mSpzar9jWJOrxxA_csTnn9ZXy8rDeRqjMm9j03xWz-tZcxiUM6xvN1qvOeBGFzISIP9y24jyL0Jqpl8YhkSGF8xBfFvfhOvEMvgLby5n7dTDoZVi2Bw8G1kZJKPejmBu8MJetl08OoVk_obp6lW3YetQPYTwsutOc_yIxBIUkPSH2Gj3wpBxBa8EfMES4J1SAT7Thpw_CmZ_PNB9rEDUJI4bzE7QM2Z0n4LNXzbo5JFuWudKwfhqOcryH0slmHOamJgbtR5EGryf8LQ"
}

2.- Registrar checkout

Después de obtener el token de acceso, se deberá registrar un checkout llamando el servicio de crear checkout en el API de OrkestaPay.


Petición hacia el servicio

Se deberá llamar al servicio de "crear checkout" y como parte de la petición, se deberá de enviar un par de URL’s que servirán para redireccionar al comprador una vez que se haya completado el pago (REPLACE_WITH_YOUR_SUCCESS_URL), o bien que éste haya sido cancelado (REPLACE_WITH_YOUR_CANCEL_URL). Adicional se debe de enviar la cabecera Authorization y como valor el access_token obtenido en el paso 1.

Deberás de buscar el texto REPLACE_WITH_YOUR_ACCESS_TOKEN en el script de abajo y reemplazar con el token JWT.

curl --request POST \
     --url https://api.sand.orkestapay.com/v1/checkouts \
     --header 'Accept: application/json' \
     --header 'Content-Type: application/json' \
     --header 'Authorization: Bearer REPLACE_WITH_YOUR_ACCESS_TOKEN' \
     --data '
{
    "completed_redirect_url": "REPLACE_WITH_YOUR_SUCCESS_URL",
    "canceled_redirect_url": "REPLACE_WITH_YOUR_CANCEL_URL",
    "allow_save_payment_methods": false,
    "locale": "ES_LATAM",
    "order": {
        "merchant_order_id": "1366656595193",
        "currency": "MXN",
        "subtotal_amount": 1000,
        "country_code": "MX",
        "discounts": [
            {
                "amount": 10
            }
        ],
        "total_amount": 990,
        "products": [
            {
                "id": "7197",
                "name": "Pantalla TCL Smart TV Serie A3 A343 HD Android TV 40",
                "quantity": 1,
                "unit_price": 1000
            }
        ],
        "customer": {
            "first_name": "John",
            "last_name": "Doe",
            "email": "[email protected]"
        }
    }
}
'

Respuesta del servicio

Al registrar un checkout, se regresará la siguiente información. Por el momento y para fines del ejemplo, solo será de interés el checkout_redirect_url.

{
    "checkout_id": "chk_e69283cb55814402b9372a2f834cc8a8",
    "checkout_redirect_url": "https://checkout.dev.orkesta.io/#/checkout/chk_e69283cb55814402b9372a2f834cc8a8/6f2d8077c669f0512cb655c1f2d19b3cc020f5fd8b17152e0d3de675575e8f69",
    "completed_redirect_url": "https://example.com/complete",
    "canceled_redirect_url": "https://example.com/cancel",
    "allow_save_payment_methods": false,
    "locale": "ES_LATAM",
    "placed_at": "1713480514319",
    "order": {
        "order_id": "ord_a73c91e6f6f949a3a39c9557f353d308",
        "status": "CREATED",
        "expires_at": "1713566914212",
        "merchant_order_id": "1366656595193",
        "country": "México",
        "country_code": "MX",
        "currency": "MXN",
        "taxes": [],
        "discounts": [
            {
                "amount": 10
            }
        ],
        "subtotal_amount": 1000,
        "total_amount": 990,
        "products": [
            {
                "product_id": "7197",
                "quantity": 1,
                "unit_price": 1000,
                "name": "Pantalla TCL Smart TV Serie A3 A343 HD Android TV 40"
            }
        ],
        "customer": {
            "customer_id": "cus_414bae1120844159bf10f1d6c7b30d74",
            "first_name": "John",
            "last_name": "Doe",
            "email": "[email protected]",
            "created_at": "1713480514197",
            "updated_at": "1713480514197"
        },
        "placed_at": "1713480514267",
        "metadata": {}
    }
}

3.- Redireccionamiento al checkout de pago

Después de registrar el checkout, redireccionar al comprador a la URL del checkout de pago donde podrá finalizar su compra.

El diseño del checkout se puede personalizar con la marca y branding de tu comercio, esta personalización se configura desde el dashboard de OrkestaPay.


4.- Redireccionamiento de éxito o cancelación

El comprador tendrá la opción de cancelar y volver a la tienda (canceled_redirect_url) o completar el pago donde al finalizar, será redireccionado a la URL indicada durante el proceso de registro de checkout (completed_redirect_url). La siguiente imagen es únicamente ilustrativa.

NOTA: Es recomendable que en este par de URLs, se proporcionen parámetros que permitan a tu integración gestionar el comportamiento y estatus del pedido/orden de compra.