Skip to main content

Documentación

Cancelación de un pago

Detenga un pago antes de que se complete.

Rapyd proporciona un método rápido y sencillo para cancelar los pagos antes de que se completen. La cancelación de un pago es relevante para los métodos de pago, como el efectivo, las transferencias bancarias y los redireccionamientos bancarios en línea, tal y como se describe en los siguientes

Este caso de uso se aplica a los métodos de pago en los que es cancelable = cierto en la respuesta a Listar los métodos de pago por país.

Si es_cancelable = falso o el pago ya se ha completado, haz un reembolso en su lugar. Un caso de uso que describe ese escenario es Reembolsos.

Puedes encontrar los métodos de pago por transferencia bancaria específicos que aceptarás y los campos obligatorios correspondientes que los clientes deben rellenar en la sección Cómo funciona.

En este flujo de trabajo, se describe un artículo comprado en tu sitio web por 555.99 PHP (pesos filipinos) mediante una redirección bancaria y cancelado antes de completarse.

customer-cancel-bank.jpg
  1. El cliente selecciona el pago bancario en línea en la pantalla de pago creada.

  2. Reciba una URL única del sitio web del banco a la que redirija a su cliente para que complete el pago.

  3. El cliente va a la URL del banco redirigida, pero decide cancelar.

process-cancel.jpg
  1. El back-end de su sitio web solicita a Rapyd que cancele el pago del cliente.

  2. Rapyd procesa la cancelación y le notifica que se ha realizado correctamente.

  3. Muestras una confirmación al cliente.

En tu página de pago, permites que el cliente especifique los métodos de pago. En primer lugar, debes decidir qué métodos de pago aceptarás.

Para eso, utilizarás Listar los métodos de pago por país con los siguientes parámetros:

Descripción de los parámetros de consulta

Parámetro de consulta

Descripción

país

Entrar PH como código de país para Filipinas.

moneda

Entrar PHP como código de moneda para los pesos filipinos.

Solicitud de lista de métodos de pago por país

Solicita la lista de todos los métodos de pago disponibles en PHP (pesos filipinos).

    • Solicitud

      • // Request URL: GET https://sandboxapi.rapyd.net/v1/payment_methods/country?country=PH&currency=PHP
        
        // Message body absent
    • .NET Core

      • using System;
        
         namespace RapydApiRequestSample
         {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        string country = "PH";
                        string currency = "PHP";
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("GET", $"/v1/payment_methods/country?country={country}&currency={currency}");
        
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Error completing request: " + e.Message);
                    }
                }
            }
         }
    • JavaScript

      • const makeRequest = require('../../../../../Utilities/JS/utilities').makeRequest;
        
        async function main() {
          try {
            const result = await makeRequest('GET', '/v1/payment_methods/country?country=PH&currency=PHP');
        
            console.log(result);
          } catch (error) {
            console.error('Error completing request', error);
          }
        }
    • PHP

      • <?php
        $path = $_SERVER['DOCUMENT_ROOT'];
        $path .= "/code_race_2020/Utilities/PHP/utilities.php";
        include($path);
        
        try {
            $object = make_request('get', '/v1/payment_methods/country?country=PH&currency=PHP');
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
    • Pitón

      • from pprint import pprint
        
        from utilities import make_request
        
        country = 'PH'
        currency = 'PHP'
        results = make_request(method='get',
                               path=f'/v1/payment_methods/country?country={country}&currency={currency}')
        pprint(results)
Lista de métodos de pago por país Respuesta

Echemos un vistazo a la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "6e17b56c-e3cf-40dd-abc5-80b3688d05e8"
            },
            "data": [{
                    "type": "ph_bancnet_bank",
                    "name": "Bancnet Online Payments Philippines",
                    "category": "bank_redirect",
                    "image": "",
                    "country": "ph",
                    "payment_flow_type": "redirect_url",
                    "currencies": [
                        "PHP"
                    ],
                    "status": 1,
                    "is_cancelable": true,
                    "payment_options": [{
                            "name": "description",
                            "type": "string",
                            "regex": "",
                            "description": "the description field must be filled in.",
                            "is_required": true,
                            "is_updatable": false
                        }
                    ],
                    "is_expirable": false,
                    "is_online": false,
                    "minimum_expiration_seconds": null,
                    "maximum_expiration_seconds": null
                }
            ]
        }

El datos la sección de esta respuesta muestra:

  • ph_bancnet_bank es un método de pago aceptable en bank_redirect categoría.

  • El valor de es_cancelable es cierto.

Una respuesta real suele incluir muchos métodos de pago.

Debes averiguar qué campos debe rellenar el cliente para el método de pago.

Para ello, utilizarás el Campos obligatorios para obtener el método de pago con el siguiente parámetro:

Descripción de los parámetros de ruta

Parámetro de ruta

Descripción

tipo

Entrar ph_bancnet_bank como tipo de método de pago.

Obtener el método de pago Campos obligatorios Solicitud

Solicita el conjunto de campos obligatorios para un ph_bancnet_bank pago.

    • Solicitud

      • // Request URL: GET https://sandboxapi.rapyd.net/v1/payment_methods/ph_bancnet_bank/required_fields
        
        // Message body absent
    • .NET Core

      • using System;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        string type = "ph_bancnet_bank";
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("GET", $"/v1/payment_methods/{type}/required_fields");
        
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Error completing request: " + e.Message);
                    }
                }
            }
        }
    • JavaScript

      • const makeRequest = require('../../../../../Utilities/JS/utilities').makeRequest;
        
        async function main() {
          try {
            const result = await makeRequest('GET', '/v1/payment_methods/ph_bancnet_bank/required_fields');
        
            console.log(result);
          } catch (error) {
            console.error('Error completing request', error);
          }
        }
    • PHP

      • <?php
        $path = $_SERVER['DOCUMENT_ROOT'];
        $path .= "/code_race_2020/Utilities/PHP/utilities.php";
        include($path);
        
        try {
            $object = make_request('get', '/v1/payment_methods/ph_bancnet_bank/required_fields');
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
    • Pitón

      • from pprint import pprint
        
        from utilities import make_request
        
        payment_method = 'ph_bancnet_bank'
        results = make_request(method='get',
                               path=f'/v1/payment_methods/{payment_method}/required_fields')
        pprint(results)
Obtener el método de pago Campos obligatorios Respuesta

Echemos un vistazo a la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "7cb8b5ad-c445-4009-8d27-a9550656ff56"
            },
            "data": {
                "type": "ph_bancnet_bank",
                "fields": [],
                "payment_method_options": [],
                "payment_options": [
                    {
                        "name": "description",
                        "type": "string",
                        "regex": "",
                        "description": "the description field must be filled in.",
                        "is_required": true,
                        "is_updatable": false
                    }
                ],
                "minimum_expiration_seconds": null,
                "maximum_expiration_seconds": null
            }
        }

El datos la sección de esta respuesta muestra que un descripción este campo es obligatorio para un ph_bancnet_bank pago.

Cuando tu cliente realiza el pago en tu sitio web, le pides a Rapyd que procese su pago bancario.

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

Descripción de los parámetros corporales

Parámetro corporal

Descripción

cantidad

Entrar 555.99 como importe del pago.

moneda

Entrar PHP como código de moneda para los pesos filipinos.

descripción

Entrar Pago bancario online.

URL de pago completa

Sustituya el https://success_example.net ejemplo con la URL real de tu sitio web en el que quieres que el banco redirija al cliente si el pago se realiza correctamente.

error_payment_url

Sustituya el https://error_example.net ejemplo con la URL de tu sitio web real en el que quieres que el banco redirija al cliente si el pago no se realiza.

método_pago

Introduzca un objeto con el siguiente campo: escriba - ph_bancnet_bank

Crear solicitud de pago

Le pides a Rapyd que procese el pago del cliente de 555,99 PHP (pesos filipinos) como pago bancario redirigido.

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/payments
        
        // Message body:
        {
            "amount": 555.99,
            "currency": "PHP",
            "description": "Online bank payment",
            "complete_payment_url": "https://success_example.net",
            "error_payment_url": "https://error_example.net",
            "payment_method": {
                "type": "ph_bancnet_bank"
            }
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        var requestObj = new
                        {
                            amount = 555.99,
                            currency = "PHP",
                            description = "Online bank payment",
                            complete_payment_url = "https:success_example.net",
                            error_payment_url = "https:error_example.net",
                            payment_method = new {
                                type = "ph_bancnet_bank",
                            }
                        };
        
                        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);
                    }
                }
            }
        }
    • PHP

      • <?php
        $path = $_SERVER['DOCUMENT_ROOT'];
        $path .= "/code_race_2020/Utilities/PHP/utilities.php";
        include($path);
        
        $body = [
            "amount" => "555.99",
            "currency" => "PHP",
            "description" => "Online bank payment",
            "complete_payment_url" => "https://success_example.net",
            "error_payment_url" => "https://error_example.net",
            "payment_method" => [
                "type" => "ph_bancnet_bank"
            ]
        ];
        
        try {
            $object = make_request('post', '/v1/payments', $body);
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
    • Pitón

      • from pprint import pprint
        
        from utilities import make_request
        
        payment_body = {
            "amount": 555.99,
            "currency": "PHP",
            "description": "Online bank payment",
            "complete_payment_url": "https://success_example.net",
            "error_payment_url": "https://error_example.net",
            "payment_method": {
                "type": "ph_bancnet_bank"
            }
        }
        
        results = make_request(method='post',
                               path='/v1/payments',
                               body=payment_body)
        pprint(results)
Crear respuesta de pago

Echemos un vistazo a la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "afc7c939-35d7-41d7-bfe7-a4166a4afd26"
            },
            "data": {
                "id": "payment_1b24b2d6cde2fc949e68dd43672e6194",
                "amount": 0,
                "original_amount": 555.99,
        
                //     ...
        
                "currency_code": "PHP",
                "country_code": "ph",
                "status": "ACT",
                "description": "Online bank payment",
        
                //     ...
        
                "customer_token": "cus_b16c679b8f4adc19e9bae0c17b4ae9ce",
                "payment_method": "other_e834a5e5f5de12fa98ea08d1be874919",
        
                //     ...
        
                "redirect_url": "https://sandbox.rapyd.net/complete-bank-payment?token=payment_1b24b2d6cde2fc949e68dd43672e6194&complete_payment_url=https://success_example.net&error_payment_url=https://error_example.net",
                "complete_payment_url": "https://success_example.net",
                "error_payment_url": "https://error_example.net",
        
                //     ...
        
                "paid": false,
        
                //     ...
        
                "payment_method_type": "ph_bancnet_bank",
                "payment_method_type_category": "bank_redirect",
        
                //     ...
        
            }
        }

El datos la sección de esta respuesta muestra:

  • El pago id es payment_1b24b2d6cde2fc949e68dd43672e6194. Cuando ejecutes este ejemplo en tu propia zona de pruebas, obtendrás un ID diferente, que necesitarás para un paso posterior en este caso práctico

  • El original_amount es 555,99.

  • El currency_code es PHP (Pesos filipinos).

  • El estado es ACTUAR (activo). Esto significa que el proceso de pago está activo pero no está completo.

  • Se incluyen estas URL:

    • redireccionar_url - Rediriges al cliente a esta URL única del sitio web del banco para completar el pago.

    • URL de pago completa y error_payment_url - Rapyd proporciona estas URL al banco para redirigir al cliente a tu sitio web en función de si la compra se ha realizado correctamente.

  • El valor de pagado es falso ya que el cliente completó el pago.

Tu sitio web redirige al cliente al sitio web del banco para completar el pago, pero el cliente decide cancelar la compra.

Cuando tu usuario solicita la cancelación de la compra, le pides a Rapyd que procese la cancelación.

Para eso, utilizarás Cancelar el pago con el siguiente parámetro:

Descripción de los parámetros de ruta

Parámetro de ruta

Descripción

pago

Introduzca el id valor que recibiste al crear el pago incompleto en tu entorno de pruebas. En nuestro ejemplo, utilizamos el identificador de pago que recibimos en nuestro entorno payment_1b24b2d6cde2fc949e68dd43672e6194

Cancelar solicitud de pago

Le pides a Rapyd que procese la cancelación.

    • Solicitud

      • // Request URL: DELETE https://sandboxapi.rapyd.net/v1/payments/payment_1b24b2d6cde2fc949e68dd43672e6194
        
        // Message body absent
    • .NET Core

      • using System;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        string payment = "payment_1b24b2d6cde2fc949e68dd43672e6194";
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("DELETE", $"/v1/payments/{payment}");
        
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Error completing request: " + e.Message);
                    }
                }
            }
        }
    • JavaScript

      • const makeRequest = require('../../../../../Utilities/JS/utilities').makeRequest;
        
        async function main() {
          try {
            const result = await makeRequest(
              'DELETE',
              '/v1/payments/payment_1b24b2d6cde2fc949e68dd43672e6194'
            );
        
            console.log(result);
          } catch (error) {
            console.error('Error completing request', error);
          }
        }
    • PHP

      • <?php
        $path = $_SERVER['DOCUMENT_ROOT'];
        $path .= "/code_race_2020/Utilities/PHP/utilities.php";
        include($path);
        
        try {
            $object = make_request('delete', '/v1/payments/payment_1b24b2d6cde2fc949e68dd43672e6194');
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
Cancelar respuesta de pago

Echemos un vistazo a la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "e4c3ef95-d698-42ef-9284-568eefd17986"
            },
            "data": {
                "id": "payment_1b24b2d6cde2fc949e68dd43672e6194",
                "amount": 0,
                "original_amount": 555.99,
        
                //              ...
        
                "currency_code": "PHP",
                "country_code": "ph",
                "status": "CAN",
                "description": "Online bank payment",
        
                //              ...
        
                "customer_token": "cus_b16c679b8f4adc19e9bae0c17b4ae9ce",
                "payment_method": "other_e834a5e5f5de12fa98ea08d1be874919",
        
                //              ...
        
                "paid": false,
        
                //              ...
        
                "payment_method_type": "ph_bancnet_bank",
                "payment_method_type_category": "bank_redirect",
        
                //              ...
        
            }
        }

El datos la sección de esta respuesta muestra:

  • El original_amount es 555,99.

  • El estado es PUEDE (Cancelado). Esto significa que el proceso de cancelación se ha completado.

  • El valor de pagado es falso ya que la transacción original no se pagó.

Tu sitio web muestra al cliente una confirmación de que la cancelación se ha completado.

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

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