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.

El cliente selecciona el pago bancario en línea en la pantalla de pago creada.
Reciba una URL única del sitio web del banco a la que redirija 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.
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¤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"; } ?>
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}¤cy={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_cancelablees 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: |
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
ides 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ácticoEl
original_amountes 555,99.El
currency_codees PHP (Pesos filipinos).El
estadoes 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 completayerror_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
pagadoes 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 |
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_amountes 555,99.El
estadoes PUEDE (Cancelado). Esto significa que el proceso de cancelación se ha completado.El valor de
pagadoes 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.