Cancelar un pago
Detenga un pago antes de que se complete.
Rapyd ofrece 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 métodos de pago como el efectivo, transferencias bancarias y los redireccionamientos bancarios en línea, tal y como se describe en los siguientes casos:
Este caso de uso se aplica a los métodos de pago en los que is_cancelable = verdadero en la respuesta a Listar los métodos de pago por país.
Si is_cancelable = falso o el pago ya se ha completado, debe realizar un reembolso en su lugar. Un caso de uso que describe ese escenario es Reembolsos.
Encontrar los métodos de pago por transferencia bancaria específicos que aceptará y los campos obligatorios correspondientes que los clientes deben rellenar se describen en la sección Cómo funciona.
Este flujo de trabajo describe un artículo comprado en tu sitio web por 555.99 PHP (pesos filipinos) mediante un redireccionamiento bancario y luego cancelado antes de completarse.

El cliente selecciona el pago bancario en línea en la pantalla de checkout.
Recibe una URL única del sitio web del banco donde redirige a su cliente para que complete el pago.
El cliente va a la URL del banco redirigida, pero decide cancelar.

El back-end de su sitio web solicita a Rapyd que cancele el pago del cliente.
Rapyd procesa la cancelación y le notifica que se ha realizado correctamente.
Envía una confirmación al cliente.
En su página de pago, permite al cliente especificar los métodos de pago. En primer lugar, debe decidir qué métodos de pago va a aceptar.
Para eso, utilizar 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 |
|---|---|
country | Ingrese PH como el código de país para Filipinas. |
currency | Ingrese PHP como el 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¤cy=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}¤cy={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¤cy=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¤cy=PHP'); var_dump($object); } catch (Exception $e) { echo "Error: $e"; } ?>
Python
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}¤cy={currency}') pprint(results)
Respuesta de lista de métodos de pago por país
Veamos 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 } ] }
La sección datos de esta respuesta muestra:
ph_bancnet_bank es un método de pago aceptable en la categoría redireccionamiento_bancario.
El valor de i
s_cancelablees verdadero.
Una respuesta real suele incluir muchos métodos de pago.
Debe averiguar qué campos debe llenar el cliente para el método de pago.
Para ello, utilizar los 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 |
|---|---|
type | Ingrese ph_bancnet_bank como tipo de método de pago. |
Solicitud de obtener los campos obligatorios del método de pago
Solicita el conjunto de campos obligatorios para un pago ph_bancnet_bank.
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"; } ?>
Python
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)
Respuesta de obtener los campos obligatorios del método de pago
Veamos 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 } }
La sección data de esta respuesta muestra que el campo description es necesario para un pago ph_bancnet_bank.
Cuando su cliente realiza el pago en su sitio web, le pide a Rapyd que procese el pago bancario.
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 | Ingrese 555,99 como el importe del pago. |
currency | Ingrese PHP como el código de moneda para los pesos filipinos. |
description | Ingrese Pago bancario en línea. |
complete_payment_url | Reemplace el ejemplo https://success_example.net con la URL real de su sitio web donde desea que el banco redirija al cliente si el pago se realiza correctamente. |
error_payment_url | Reemplace el ejemplo https://error_example.net con la URL real de su sitio web donde desea que el banco redirija al cliente si el pago falla. |
payment_method | Introduzca un objeto con el siguiente campo: |
Crear solicitud de pago
Solicita a Rapyd que procese el pago del cliente de 555.99 PHP (pesos filipinos) como un 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"; } ?>
Python
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
Veamos 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", // ... } }
La sección data de esta respuesta muestra:
El
iddel pago es payment_1b24b2d6cde2fc949e68dd43672e6194. Cuando ejecute este ejemplo en su entorno de pruebas (sandbox), obtendrá un ID diferente, el cual será necesario en un paso posterior de este caso de uso.El
original_amountes 555.99.El
currency_codees PHP (Pesos filipinos).El
statuses ACT (activo). Esto significa que el proceso de pago está activo pero no está completo.Se incluyen estas URL:
redirect_url- Redirige al cliente a esta URL única del sitio web del banco para completar el pago.complete_payment_urlyerror_payment_url- Rapyd ofrece estas URL al banco para redirigir al cliente a su sitio web en función de si la compra se ha realizado correctamente.
El valor de
paides falso ya que el cliente completó el pago.
Su sitio web redirige al cliente al sitio web del banco para completar el pago, pero el cliente decide cancelar la compra.
Cuando su usuario solicita la cancelación de la compra, le pide a Rapyd que procese la cancelación.
Para eso, utiliza Cancelar el pago con el siguiente parámetro:
Descripción de los parámetros de ruta
Parámetro de ruta | Descripción |
|---|---|
payment | Introduzca el valor del |
Cancelar solicitud de pago
Le pide 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
Veamos 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", // ... } }
La sección datos de esta respuesta muestra:
El
original_amountes 555.99.El
statuses CAN (Cancelado). Esto significa que el proceso de cancelación se ha completado.El valor de
paides falso ya que la transacción original no se pagó.
Su sitio web muestra al cliente una confirmación de que la cancelación se ha completado.
¿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.