c) Recibiendo la respuesta

Para notificar el resultado de cobro, proporciona la URL de un endpoint en tu servidor. A ésta URL se enviará la información cifrada en AES. Descifra la cadena y obtén la respuesta.

¿Cómo funciona la notificación POST?


El resultado de un cobro se envía de manera asíncrona a tu servidor por POST , a la URL provista por el Administrador del Comercio durante la configuración. A ésta URL se enviará la información cifrada en un parámetro llamado strResponse .




Paso 1: Configura tu endpoint

Indica la URL, provista por Administrador del Comercio durante la configuración, al servicio encargado de procesar el resultado de un cobro.

Si lo deseas, utiliza un servicio como Beeceptor, Mockbin, Webhook Tester, etc.


Paso 2: Envía un mensaje

Elige de entre los tipos de mensaje que deberás considerar un tu lógica de negocio y simula la notificación haciendo clic en el boton correspondiente:

Cuando la liga fue generada sin el campo promociones

 

Cuando la liga fue generada con el campo promociones

 

Cuando la liga fue generada con el campo st_cr

 

REQUEST (esto es lo que mandamos al endpoint)


					

 

RESPONSE (esto es lo que respondió el endpoint)


				

Paso 3: Descifra la notificación a tu endpoint


Una vez obtenida la notificación en tu endpoint, la puedes decifrar con el SDK adecuado a tu servidor, y dentro de response encontrarás el resultado, que debes ocupar para aplicar tu lógica de negocio.

Ejemplo


								import webPayPlus.AESCrypto
String originalString ="Este es el texto a procesar";
String decodedString=URLDecoder.decode(originalString, "UTF-8");
String key = "5dcc67393750523cd165f17e1efadd21";
String decryptedString = 
  AESCrypto.decrypt(decodedString, secretKey);
							
								<?php
include('/AESCrypto.php'); 
$originalString = 'Este es el texto a procesar';
$decodedString = string urldecode ( string $originalString );
$key = '5dcc67393750523cd165f17e1efadd21'; //Llave de 128 bits
$decryptedString = AESCrypto::desencriptar($decodedString, $key);
?>
							
								using AESCrypto.cs
string originalString ="[USAR LA CADENA DEL EJEMPLO UNO]";
string key = "5DCC67393750523CD165F17E1EFADD21";
string decryptedString =
  AESCrypto.decrypt(key, originalString);
string finalString = decrypt.Replace("%", "%25").Replace(" ", "%20").Replace("+", "%2B").Replace("=", "%3D").Replace("/", "%2F");
							


				

Entendiendo la notificación


Una vez descifrada la respuesta del cobro, dentro de <CENTEROFPAYMENTS> , en el elemento <response> encontrarás el resultado, que debes ocupar para aplicar tu lógica de negocio.

Ejemplo de respuesta descifrada


						<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CENTEROFPAYMENTS>
  <reference>FACTURA001</reference>
  <response>approved</response>
  <foliocpagos>000551635</foliocpagos>
  <auth>473347</auth>
  <cd_response>0C</cd_response>
  <cd_error/>
  <nb_error/>
  <time>17:38:40</time>
  <date>27/07/2016</date>
  <nb_company>SANDBOX MIT</nb_company>
  <nb_merchant>1234567 WEBPAYPLUS</nb_merchant>
  <cc_type>CREDITO/BANCO MIT/Visa</cc_type>
  <tp_operation>VENTA</tp_operation>
  <cc_name/>
  <cc_number>1234</cc_number>
  <amount>400.00</amount>
  <id_url>SNDBX001</id_url>
  <email>cliente@correo.com</email>
  <cc_mask>545454XXXXXX1234</cc_mask>
  <datos_adicionales>
    <data id="1" display="true">
      <label>Talla</label>
      <value>Grande</value>
    </data>
    <data id="2" display="false">
      <label>Color</label>
      <value>Azul</value>
    </data>
  </datos_adicionales>
</CENTEROFPAYMENTS>
					
Tabla A: Elemento response
Respuesta Descripción de la respuesta Tu debes
approved Transacción aprobada por el banco emisor. Proceder con la entrega del bien o servicio.
denied Transacción rechazada por el banco emisor. Solicitar a tu cliente que proporcione otra tarjeta.
error Error en la información proporcionada al someter la solicitud de autorización. Contactar a Centro de Atención MIT
Tabla B: Elementos cd_error y nb_error
cd_error nb_error
03 Existe un problema con la configuración. Los datos de empresa, sucursal o usuario son incorrectos. Contacte al administrador del sitio (CODE03).
05 Existe un problema con la configuración. La sucursal no está configurada para hacer ese tipo de transacción. Contacte al administrador del sitio (CODE05).
08 El importe es menor al permitido para la promoción a meses seleccionada. Contacte al Administrador del sitio (CODE08).
09 El importe es mayor al permitido. Contacte al Administrador del sitio (CODE09).
11 La transaccion ya fue rechazada durante el día. Intente con otra tarjeta o en caso contrario, intente a partir de mañana.
16 El importe es mayor al permitido. Contacte al Administrador del sitio (CODE16).

¿Cómo funciona el REDIRECT?


De manera predeterminada, una vez que tu cliente haya completado una intención de pago, se mostrará la respuesta en una página con nuestro diseño e imagen, hospedada en nuestros servidores.

Si lo deseas, puedes usar una página de salida hospedada en tu servidor, con tu mensaje, diseño e imagen, en la URL provista por el Administrador del Comercio durante la configuración como - Redirect en el navegador.

Para recuperar el control del navegador, la respuesta de un cobro se envía de manera síncrona a tu servidor por GET , a la URL provista por el Administrador del Comercio durante la configuración.



Importante: La página de salida sólo sirve para recuperar el control en el navegador y no sustituye la Notificación POST, la cual invariablemente deberas contemplar en tu desarrollo, como único metodo seguro de conocer el resultado.

¡Pruébalo ahora!


Paso 1: Indica tu página de salida

Indica la URL, provista por Administrador del Comercio durante la configuración, a la págna de salida encargada de conocer la respuesta.

Indica la URL, provista por el Administrador del Comercio durante la configuración, al servicio encargado de procesar el resultado de un cobro.
Si lo deseas, modifica el valor para probar tu página de salida o de gracias.


Paso 2: Envía el GET

Elige de entre los tipos de mensaje que deberás considerar un tu lógica de negocio y simula la respuesta haciendo clic en el boton correspondiente:

 

GET (esto es lo que mandamos a tu página de salida)


					

 

Obteniendo el resultado


Puedes obtener los parámetros en tu página para continuar tu flujo de la manera habitual. De esta manera, sabrás cuando un cliente ha concluido su intención de pago.

Ejemplo de página de salida

						<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page language="java" import="java.net.URLDecoder"%>
<%
//Variables
String nbResponse="";
String idLiga ="";
String referencia = "";
String importe = "";
String email="";
String nuAut="";

//Obtenemos los parámetros del request
if (request.getParameter("nbResponse") !=null && !request.getParameter("nbResponse").isEmpty()){
	nbResponse = request.getParameter("nbResponse");
};

if (request.getParameter("idLiga") !=null && !request.getParameter("idLiga").isEmpty()){
	idLiga = request.getParameter("idLiga");
};

if (request.getParameter("referencia") !=null && !request.getParameter("referencia").isEmpty()){
	referencia = request.getParameter("referencia");
};

if (request.getParameter("importe") !=null && !request.getParameter("importe").isEmpty()){
	importe = request.getParameter("importe"); 
};

if (request.getParameter("email") !=null && !request.getParameter("email").isEmpty()){
	email = request.getParameter("email");
};

if (request.getParameter("nuAut") !=null && !request.getParameter("nuAut").isEmpty()){
	nuAut = request.getParameter("nuAut");
};
%>

<!DOCTYPE html>
<html>
<head>
</head>
<body onload="window.history.replaceState(null, null, window.location.pathname);">
<% if (nbResponse.equalsIgnoreCase("Aprobado") && nuAut !=""){
// Aplica la lógica de tu negocio aquí
// por ejemplo, puedes usar 
//  - idLiga o referencia para vincularlas a un pedido o comanda.
//  - email para mandar un correo de agradecimiento a tu cliente.
//  - importe para comparar el importe pagado con el que enviaste al generar la liga. 
// NOTA: Todos los pagos aprobados cuentan con un número de autorizacion nuAut
%>
<h1>¡Gracias por tu compra por <%=importe%>!</h1>
<p>En breve recibirás un correo a <%=email%></p><%
} else if (nbResponse.equalsIgnoreCase("Rechazado")){
// Aplica la lógica de tu negocio aquí
%>
<h1>Lo sentimos, tu pago por <%=importe%> ha sido rechazado por tu banco.</h1>
<%} else {%>
<h1>Lo sentimos, no podemos procesar la respuesta</h1>
<%} %>
</body>
</html>
					

Entendiendo el resultado


Los parámetros que recibes en tu página de salida son los siguientes.

Importante: La página de salida sólo sirve para recuperar el control en el navegador y no sustituye la Notificación POST, la cual invariablemente deberas contemplar en tu desarrollo, como único metodo seguro de conocer el resultado.
Úsalos sólo como base para validar la respuesta POST que recibiste en tu endpoint.

Tabla C: Parámetro nbResponse
Valor Descripción Tú debes
Aprobado Transacción aprobada por el banco emisor. Valida con el registro POST recibido en tu endpoint antes de proceder con la entrega del bien o servicio.
Rechazado Transacción rechazada por el banco emisor. Solicitar a tu cliente que proporcione otra tarjeta.

¡Felicidades!
Has concluido con la Guía de Integración.

Ahora es buen momento de solicitar las credenciales productivas al Administrador del Comercio.