Implementación del API Cancel
Se puede realizar la cancelación de la solicitud de pago utilizando dos tipos de API:
API Cancel con ID de Payphone
En este caso, se debe utilizar el ID de Payphone correspondiente a la transacción que se desea cancelar.
URL de la solicitud POST:
https://pay.payphonetodoesposible.com/api/Cancel
Cuerpo de la solicitud (JSON):
id: El ID de la transacción de Payphone. Este valor es proporcionado al realizar la solicitud de pago con API Sale transactionId
.
{
"id": 33107661 // ID de la transacción payphone
}
API Cancel con ID otorgado por el comercio
En este caso, se utiliza el ID otorgado por el comercio a la transacción.
URL de la solicitud POST:
https://pay.payphonetodoesposible.com/api/Cancel/Client
Cuerpo de la solicitud (JSON):
clientId: El ID que el comercio asignó a la transacción clientTransactionId
.
{
"clientId": "200-628-77" // ID otorgado por el comercio a la transacción
}
Cabeceras Requeridas
Para ambas solicitudes, se debe incluir las siguientes cabeceras HTTP:
Authorization: bearer TU_TOKEN
(Token de autenticación de la aplicación, precedido por la palabra "Bearer". Este token es el mismo que utilizaste al preparar la transacción inicialmente).Content-type: application/json
(Formato de los datos: JSON).
Respuesta a la solicitud POST
La respuesta del API es un objeto JSON que indica si la cancelación fue exitosa o si se produjo un error. Las posibles respuestas son:
- Respuesta exitosa: Si la cancelación se realizó correctamente, la respuesta será un valor booleano:
true
- Respuesta fallida: Si la cancelación no se puede realizar, se devolverá un objeto JSON con un mensaje de error y un código de error:
{
"message": "La transacción no se pudo cancelar. Puede que ya se encuentre aprobada o cancelada.",
"errorCode": 25,
"errors": [
{
"message": "Transacción no existe",
"errorCode": 2029
}
]
}
Este mensaje de error indica que el identificador proporcionado no es válido o no corresponde a una transacción existente. Es importante verificar que se esté utilizando el identificador correcto antes de intentar el reverso nuevamente.
Ejemplos de solicitudes POST para API Cancel
A continuación, se presenta varios ejemplos de cómo realizar solicitudes POST:
<?php
//ID de la transacción de payphone. Valor proporcionado al realizar la transacción - transactionId.
$id = 33107661;
//Preparar cabecera para la solicitud
$headers[] = 'Authorization: Bearer your_token' ;//CREDENCIALES DE CONFIGURACION
$headers[] = 'Content-Type: application/json' ;//TIPO DE APLICACION
//Preparar objeto JSON para solicitud
$data = array(
"id" => (int)$id
);
$objetoJSON = json_encode($data);
//Iniciar solicitud curl: POST
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://pay.payphonetodoesposible.com/api/Cancel");
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $objetoJSON);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//Respuesta en formato JSON
$curl_response = curl_exec($curl);
//Finaliza solicitud curl: POST
curl_close($curl);
//Mostrar Resultado en Pantalla
echo "<h1>Prueba Cancelación de Transaccion</h1> <br>";
$result= json_decode($curl_response);
echo "Respuesta : <pre>".json_encode($result,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT )."</pre>";
?>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Cancel con jQuery</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
var id=33107661;
$(document).ready(function() {
$.ajax({
url: "https://pay.payphonetodoesposible.com/api/Cancel",
type: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer your_token"
},
data: JSON.stringify({
"id": id
}),
success: function(response) {
$("#resultado").html(
"Respuesta : <pre>" + JSON.stringify(response, null, 2) + "</pre>"
);
},
error: function(error) {
$("#resultado").html(
"Error en la solicitud : <pre>" + JSON.stringify(error, null, 2) + "</pre>"
);
}
});
});
</script>
</head>
<body>
<h1>Ejemplo de Solicitud POST con jQuery</h1>
<div id="resultado"></div>
</body>
</html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Cancelacion con Fetch</title>
<script>
const id=33107661;
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer your_token",
"Referer": document.referrer
};
const bodyJSON = {
"id": id
};
const url = "https://pay.payphonetodoesposible.com/api/Cancel";
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(bodyJSON)
})
.then((res) => res.json())
.catch((error) => {
// Creamos la etiqueta <pre> que contiene el error
const jsonResult = document.createElement("pre");
jsonResult.textContent = JSON.stringify(error, null, 2);
// Agregar etiqueta <pre> al <div>
const container = document.createElement("div");
container.appendChild(jsonResult);
// Agregar la respuesta al body del documento o a un contenedor específico
document.body.appendChild(container);
})
.then((data) => {
// Creamos las etiquetas <pre>
const jsonResult = document.createElement("pre");
jsonResult.textContent = JSON.stringify(data, null, 2);
// Agregamos la respuesta a un div
const container = document.createElement("div");
container.appendChild(jsonResult);
// Mostramos los elementos en la pagina
document.body.appendChild(container);
});
</script>
</head>
<body>
<h1>Cancelar Transaccion con Fetch</h1>
</body>
</html>
La implementación correcta de este proceso de cancelación permite a los comercios gestionar eficientemente las transacciones pendientes y mejorar la experiencia del usuario al proporcionar flexibilidad en el proceso de pago.