Queremos informarte que la transacción se rechazada debido a que el cliente pagador no termina de manera correcta el proceso de pago en la plataforma de Visanet, por tanto la respuesta del medio de pago no contiene un estado final y se procede al rechazo por un periodo de tiempo.
$('#btn-confirmar-pedido).click(function()
{
$.post('do-generar-pedido.php', 'redirigir', 'json');
});
function redirigir()
{
$.post('https://www.multimerchantvisanet.com/formularioweb/formulariopago.asp', { Eticket: '0500560091711308150853133360'}, 'fin', 'json')}
function fin()
{
location.href = 'carrito-fin.php';
}Hola Danilo.
Lo primero que debes entender es que en perú los pagos con tarjetas de crédito maneja 3Dsecure (también conocido como verified by visa), lo que implica que el usuario debe salir de la tienda donde está realizando la compra, al sitio que realiza la validación de la tarjeta de crédito; por lo que nunca vas a obtener una respuesta de aprobada inmediatamente después de hacer el doAuthorizationAndCapture.
Cuando realizas una petición al API para visa en perú vas a obtener una respuesta de pendiente (state), junto con una url (VISANET_PE_URL) y el Eticket (trazabilityCode) como la siguiente:
stdClass Object
(
[code] => SUCCESS
[transactionResponse] => stdClass Object
(
[orderId] => 91202415
[transactionId] => 5fa97592-b6f9-442c-a125-bb69046376e2
[state] => PENDING
[trazabilityCode] => 0500560091701506021128410851
[pendingReason] => AWAITING_NOTIFICATION
[responseCode] => PENDING_TRANSACTION_CONFIRMATION
[operationDate] => 2015-06-02T11:29:17
[extraParameters] => stdClass Object
(
[VISANET_PE_URL] => https://www.multimerchantvisanet.com/formularioweb/formulariopago.asp
)
)
)
Lo que debes hacer es redirigir al usuario a un formulario, hospedado también en tu servidor, con los datos que retorna el API. Puedes incluirle un evento onload de javascript para que haga el submit automático de este formulario sin que el usuario lo perciba. En este punto ya no tienes control de lo que sucede, pues el usuario pasará al sitio de visanet o puntoWeb (para mastercard).
<form action="https://www.multimerchantvisanet.com/formularioweb/formulariopago.asp" method="post"> <input type="hidden" value="0500560091701506021128410851" name="Eticket"> <input type="submit"> </form>
En el sitio de visanet o puntoWeb el usuario deberá ingresar los datos de la tarjeta de crédito junto con información adicional para validar el pago, una vez el usuario finalice el proceso retornará a la página de respuesta que debiste especificar en el siguiente parámetro
PayUParameters::RESPONSE_URL=>’http://www.misitioweb.com/carrito-fin.php’