Skip to main content

Documentación

Cancelar un depósito en garantía

Cancela un pago retenido en depósito en garantía.

Cuando un pago se retiene en depósito en garantía, puede determinar durante cuánto tiempo se deben retener los fondos y también liberar o cancelar el depósito en garantía en cualquier momento según los requisitos de su mercado. Este método ofrece la opción de cancelar el depósito en garantía y liberar los fondos de inmediato. Si hay varios vendedores, los fondos se entregan a todos ellos

Un cliente compra un artículo a un vendedor y, por error, se crea un depósito en garantía para este vendedor, por lo que decide cancelarlo. A continuación, el dinero se entrega al vendedor.

Puede encontrar los métodos de pago específicos que aceptará y los campos obligatorios correspondientes que los clientes deben llenar en la sección Cómo funciona.

process-escrow.jpg
  1. Un cliente de su plataforma compra un producto a un vendedor.

  2. El back-end del sitio web le solicita a Rapyd que procese la transacción y mantenga los fondos en depósito en garantía durante cinco días.

  3. Rapyd procesa el pago y retiene los fondos en depósito en garantía.

cancel-escrow.jpg
  1. El back-end de su sitio web le solicita a Rapyd que cancele el depósito en garantía.

  2. Rapyd cancela el depósito en garantía de inmediato, le notifica que se canceló correctamente y libera los fondos al vendedor.

Prerequisito

Para ejecutar los ejemplos de este caso de uso, debe crear el siguiente ID en su propio sandbox:

  • ewallet - Ejecutar Crear billetara para la billetera del cliente. Use el «ID» que obtenga en la respuesta.

El cliente ha comprado un artículo por 501,47 PHP (pesos filipinos) a un vendedor en el sitio web de su plataforma. Le solicita a Rapyd que procese el pago e incluya un depósito en garantía para retener los fondos durante cinco días

Para eso, utilizará Crear pago con los siguientes parámetros.

Descripción de los parámetros del cuerpo

Parámetro del cuerpo

Descripción

amount

Ingresar 501,47 como el monto total del pago.

currency

Ingresar PHP como código para los pesos filipinos.

payment_method

Ingresar un objeto 'payment_method' que tenga los siguientes campos:

  • type - Ingresar ph_dpcard_card como el tipo de tarjeta de pago.

ewallets

En la matriz, agregue un objeto 'ewallet' que tenga los siguientes campos:

  • ewallet - Ingrese el «ID» del monedero que recibió cuando creó la billetera del vendedor de ramos en tu sandbox. Para los fines de esta lección de caso de uso, estamos usando ewallet_090e1ef18c3aa754fd43cce9ee454858, que es el ID de la billetera que hemos creado en nuestro sandbox.

  • amount - Ingresar 501,47 como el monto a pagar al vendedor de ramos.

escrow

Ingresar verdadero para crear el depósito en garantía.

escrow_release_days

Ingrear 5 como el número de días antes de que los fondos del depósito en garantía se liberen automáticamente.

Crear solicitud de pago

Le solicita a Rapyd que procese el pago y el depósito en garantía.

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/payments
        
        // Message body:
        {
                "amount": 501.47,
                "currency": "php",
                "payment_method": {
                        "type": "ph_dpcard_card"
                },
                "ewallets": [
                        {
                                "ewallet": "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                                "amount": 501.47
                        }
                ],
                "escrow": true,
                "escrow_release_days": "5"
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        var requestObj = new
                        {
                            amount = 501.47,
                            currency = "PHP",
                            description = "Payment by card token",
                            payment_method = new
                            {
                                type = "ph_dpcard_card",
                            },
                            ewallets = new Object[]
                            {
                              new
                              {
                                  ewallet =  "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                                  amount = 501.47
                               },
                            },
                            escrow = true,
                            escrow_release_days = 5
                        };
        
                        string request = JsonSerializer.Serialize(requestObj);
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("POST", "/v1/payments", request);
        
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Error completing request: " + e.Message);
                    }
                }
            }
        }
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        # Create Payment request
        
        payment_body = {
            "amount": 501.47,
            "currency": "php",
            "payment_method": {
                "type": "ph_dpcard_card"
            },
            "ewallets": [
                {
                    "ewallet": "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                    "amount": 501.47
                }
            ],
            "escrow": True,
            "escrow_release_days": "5"
        }
        
        create_payment_response = make_request(method='post',
                                               path='/v1/payments',
                                               body=payment_body)
        pprint(create_payment_response)
Crear respuesta de pago

Veamos la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "113ae72c-0456-44d2-bc46-5e00fe52b4f9"
            },
            "data": {
                "id": "payment_4e1e350df4918b7a5b9d5ba440f6433e",
                "amount": 0,
                "original_amount": 501.47,
                "is_partial": false,
                "currency_code": "PHP",
                "country_code": "ph",
                "status": "ACT",
                
        //    ...          
                  
                "ewallet_id": "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                "ewallets": [
                    {
                        "ewallet_id": "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                        "amount": 501.47,
                        "percent": 100,
                        "released_amount": 0,
                        "refunded_amount": 0
                    }
                ],
                "payment_method_options": {},
                "payment_method_type": "ph_dpcard_card",
                "payment_method_type_category": "bank_redirect",
                "fx_rate": "",
               
        //    ...                    
                  
                "escrow": {
                    "id": "escrow_933d861296b40ae98f08bec3b8e799ef",
                    "payment": "payment_4e1e350df4918b7a5b9d5ba440f6433e",
                    "amount_on_hold": 0,
                    "total_amount_released": 0,
                    "status": "pending",
                    "escrow_release_days": 5,
                    "created_at": 1580995667,
                    "updated_at": 1580995667,
                    "last_payment_completion": null
                },
                "group_payment": ""
            }
        }

La sección data de esta respuesta muestra que:

  • El amount es 501,47 .

  • El currency es PHP.

  • El objeto ewallets indica:

    • Una cantidad de 501,47 se mantiene en depósito en garantía para ewallet_id ewallet_090e1ef18c3aa754fd43cce9ee454858 .

  • El objeto depósito en garantía indica:

    • El ID del depósito en garantía es escrow_933d861296b40ae98f08bec3b8e799ef.

    • El ID del pago es payment_4e1e350df4918b7a5b9d5ba440f6433e. Cuando ejecute este ejemplo en su propio sandbox, obtendrá un ID diferente, que necesitará para un paso posterior en este caso de uso.

    • El status del depósito en garantía es pendiente.

    • El escrow_release_days es 5.

Utilizará el ID de pago cuando le solicite a Rapyd que cancele el depósito en garantía.

El depósito en garantía se creó por error y decide cancelarlo de inmediato. Para eso, utilizar Actualiza el pago con los siguientes parámetros:

Descripción de los parámetros de ruta

Parámetro de ruta

Descripción

payment

Ingrese el «ID» de pago que recibió cuando creó la billetera del vendedor de ramos en su sandbox. Para los fines de esta lección de caso de uso, estamos usando payment_4e1e350df4918b7a5b9d5ba440f6433e, que es el ID del pago que creamos en nuestro sandbox.

Descripción de los parámetros del cuerpo

Parámetro del cuerpo

Descripción

escrow

Ingresar falso para cancelar el depósito en garantía.

Cancelar la solicitud del depósito en garantía

Le solicita a Rapyd que cancele el depósito en garantía.

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/payments/payment_4e1e350df4918b7a5b9d5ba440f6433e
        
        // Message body:
        {
           "escrow": false  
        }
    • .NET Core

      • using System;
         using System.Text.Json;
        
         namespace RapydApiRequestSample
         {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        string paymentId = "payment_4e1e350df4918b7a5b9d5ba440f6433e";
        
                        var requestObj = new
                        {
                            escrow = false,
                        };
        
                        string request = JsonSerializer.Serialize(requestObj);
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("POST", $"/v1/payments/{paymentId}", request);
        
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Error completing request: " + e.Message);
                    }
                }
            }
         }
    • JavaScript

      • const makeRequest = require('<path-to-your-utility-file>/utilities').makeRequest;
        
        async function main() {
          try {
            const body = {
              escrow: false
            };
            const result = await makeRequest(
              'POST',
              '/v1/payments/payment_4e1e350df4918b7a5b9d5ba440f6433e',
              body
            );
        
            console.log(result);
          } catch (error) {
            console.error('Error completing request', error);
          }
        }
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        cancel_escrow_body = {
            "escrow": False
        }
        
        cancel_escrow_response = make_request(method='post',
                                              path='/v1/payments/payment_4e1e350df4918b7a5b9d5ba440f6433e',
                                              body=cancel_escrow_body)
        pprint(cancel_escrow_response)
Cancelar la respuesta del depósito en garantía

Veamos la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "656b7dd4-7e1e-4f38-b5d9-bb46c4b43ab7"
            },
            "data": {
                "id": "payment_4e1e350df4918b7a5b9d5ba440f6433e",
                "amount": 0,
                "original_amount": 501.47,
                "is_partial": false,
                "currency_code": "PHP",
                "country_code": "ph",
                "status": "ACT",
             
        //      ...        
                  
                "created_at": 1580995667,
                
        //      ...        
                  
                "ewallet_id": "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                "ewallets": [
                    {
                        "ewallet_id": "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                        "amount": 501.47,
                        "percent": 100,
                        "released_amount": 0,
                        "refunded_amount": 0
                    }
                ],
                "payment_method_options": {},
                "payment_method_type": "ph_dpcard_card",
                "payment_method_type_category": "bank_redirect",
                
        //     ...           
                  
                "escrow": {
                    "id": "escrow_933d861296b40ae98f08bec3b8e799ef",
                    "payment": "payment_4e1e350df4918b7a5b9d5ba440f6433e",
                    "amount_on_hold": 0,
                    "total_amount_released": 0,
                    "status": "canceled",
                    "escrow_release_days": 5,
                    "created_at": 1580995667,
                    "updated_at": 1580997283,
                    "last_payment_completion": null
                },
                "group_payment": ""
            }
        }

La sección data de esta respuesta muestra que:

  • Una monto de 501,47 PHP fue liberado para ewallet_id ewallet_090e1ef18c3aa754fd43cce9ee454858

  • El objeto depósito en garantía indica:

  • El ID del depósito en garantía es escrow_933d861296b40ae98f08bec3b8e799ef.

  • El estado del depósito en garantía es cancelado.

¿Busca información técnica más detallada?

¿Desea ver los métodos y objetos de la API de Rapyd que utilizará? Ver Merchant API Reference para obtener más detalles técnicos.