Boton de pago
Cajita de pagos | RecomendadoBotón de pago por redirecciónTokenizaciónSplit de Pagos
Plugins
WoocommercePrestashop
APIs
Links de PagoAPI SalePagos MasivosWebViewNotificación ExternaAPI UserConsulta por LotesPre-registro de comerciosCatálogo de Errores
Soporte
visita payphone.app
  • 🔹📎 Cómo funciona la cancelación

  • 🔹⚠️ Consideraciones

  • 🔹🛠️ Implementación del API Cancel

Cancelar Solicitud Payphone

📎¿Cómo funciona la cancelación de solicitud de pago?

La cancelación de una solicitud de pago es un proceso que permite revertir la solicitud de pago iniciada a través del API Sale de Payphone. El principal objetivo de esta operación es detener el proceso de pago antes de que se complete. Este proceso es crucial para gestionar situaciones donde un pago no debe completarse después de haber sido iniciado.

🔁 Flujo del Método de Cancelacion

  1. Creación de la solicitud de pago: En primer lugar, debes haber generado una solicitud de pago utilizando el API de Sale. Esto incluirá la creación de un pago con su respectivo token de autenticación.
  2. Solicitud de cancelación: Si necesitas cancelar la solicitud de pago, deberás utilizar el API de cancelación. El proceso consiste en hacer una solicitud POST a uno de los dos EndPoint disponibles, dependiendo de los identificadores disponibles en tu transacción (ID de Payphone o ID otorgado por el comercio).
  3. Verificación y cancelación: El sistema verificará si la solicitud de cancelación es válida y si la transacción aún puede ser cancelada (es decir, que no haya pasado más de 5 minutos desde la creación de la solicitud de pago). Si es exitosa, la transacción se cancelará.

⚠️ Consideraciones

🔐Token de autenticación:

  • El token de autenticación debe ser idéntico al utilizado en la creación de la solicitud de pago original del API Sale. ¡Este punto es fundamental! Si no se utiliza el mismo token, la cancelación no se procesará correctamente.

⏳Límite de tiempo:

  • La cancelación de la solicitud de pago solo se puede hacer dentro de los primeros 5 minutos de haber iniciado la transacción. Si han pasado más de 5 minutos, y no se realiza ninguna acción por parte del cliente la transacción se cancelara automaticamente.

🛠️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
JQUERY
FETCH
<?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.

Videos tutorialesPolíticas de privacidadTérminos y condiciones
Copyright © 2024 Payphone | Todos los derechos reservados | Términos y condiciones