paginas de respuesta y de notificacion

423 views
Skip to first unread message

Alexandrox92

unread,
May 11, 2015, 12:11:50 PM5/11/15
to desarrollador...@googlegroups.com
Tengo una duda.
en la pagina de notificación haciendo pruebas recibo los siguientes parámetros:

https://stg.gateway.payulatam.com/ppp-web-gateway/response/pse/
?usuario_id=7
&estado=2
&mensaje=transaccion+aprobada
&ref_venta=74090c8d-8a25-49da-bf37-6d960e5c19e0~6936800
&ref_pol=6375760&descripcion=Entradas+a+Cine+3D
&extra1=&extra2=
&estado_pol=4
&firma=6932086FC9DBEE12DD619ED02B2C2E9B
&codigo_respuesta_pol=1
&riesgo=.00&medio_pago=25
&tipo_medio_pago=4
&cuotas=
&valor=10000.00
&valorPesos=10000.00
&iva=1379.00
&valorAdicional=.00
&moneda=COP
&idioma=es
&cus=1011208
&ciclo_pse=6
&emailComprador=alexandrox92%40gmail.com
&banco_pse=Banco%20Union%20Colombiano
&pse_referencia1=127.0.0.1
&pse_referencia2=CC
&pse_referencia3=123456789
&codigo_autorizacion=SUCCESS
&tarifa_administrativa=0.00
&iva_tarifa_administrativa=0.00
&base_tarifa_administrativa=0.00
&fecha_procesamiento=2015-04-29




 
Sin embargo parámetros como banco_pse no existen en las tablas de variables que nos muestran en http://developers.payulatam.com/es/web_checkout/variables.html siendo asi esto entonces como podemos los programadores hacer pruebas antes de poner en producción el proyecto, si las variables no son confiables ?

Punto a parte me gustaría saber si los parámetros de pagina de repuesta y de notificación funcionan en modo prueba pues tengo lo siguiente y todo funcina bien para la pagina de confirmacion al mostrarle el aviso al cliente PERO la pagina de respuesta nunca recibe ningún valor.


////la de respuesta es la de almacena los datos por POST en la base de datos OBLIGATORIA
$paginaderespuesta='http://www.creativos.com.co/pay/respuesta/index.php';
////la de confirmación es la del usuario para ver el estado de la transacción - NO es obligatoria pero se recomienda
$paginadeconfirmacion='http://www.creativos.com.co/pay/confirmacion/index.php';

   
    PayUParameters::NOTIFY_URL=> $paginadeconfirmacion,
       
PayUParameters::RESPONSE_URL=> $paginaderespuesta,




He probado invirtiendo las paginas y sigue el mismo problema pero la pagina de respuesta recibe los datos normal y registra eso en la base de datos. por tanto el problema no radica en mi código.



ADMIN

unread,
May 11, 2015, 12:19:15 PM5/11/15
to desarrollador...@googlegroups.com
Hola Alexandro, 

Revisando el inconveniente presentado, agradecería tu colaboración para que descargues nuevamente el SDK de php (http://developers.payulatam.com/es/sdk/) y lo reinstales ya que creemos que no están siendo capturadas las URLs de respuesta y de confirmación correctamente debido a algún problema con las librerías. La trama GET que me adjuntas corresponde a una pagina intermedia entre PSE y tu URL de respuesta, pero debería ser invisible cuando nuestro sistema identifique que tienes URL de respuesta confirgurada. Por lo cual se espera que en la pagina de respuesta de tu comercio recibas las variables en ingles tal como se indican en la tabla de variables que se envían a la página de respuesta http://developers.payulatam.com/es/web_checkout/variables.html. Por ejemplo:

http://www.creativos.com.co/pay/respuesta/index.php?merchantId=500238&merchant_name=Test+PayU+Test&merchant_address=Av+123+Calle+12&telephone=7512354&merchant_url=http%3A%2F%2Fpruebaslapv.xtrweb.com&transactionState=104&lapTransactionState=ERROR&message=Error&referenceCode=2015-05-11+10%3A47%3A364565313&reference_pol=6994920&transactionId=787602cb-ee2f-42c8-8ae2-a14f44eb963b&description=prueba&trazabilityCode=&cus=&orderLanguage=es&extra1=&extra2=&extra3=&polTransactionState=6&signature=611ca72b20b2c8cce9c680a31156ee42&polResponseCode=9999&lapResponseCode=INTERNAL_PAYMENT_PROVIDER_ERROR&risk=.00&polPaymentMethod=254&lapPaymentMethod=PSE&polPaymentMethodType=4&lapPaymentMethodType=PSE&installmentsNumber=1&TX_VALUE=10000.00&TX_TAX=1379.00&currency=COP&lng=es&pseCycle=&pseBank=Banco%20Union%20Colombiano&pseReference1=190.242.116.98&pseReference2=CC&pseReference3=64514321321&authorizationCode=&TX_ADMINISTRATIVE_FEE=.00&TX_TAX_ADMINISTRATIVE_FEE=.00&TX_TAX_ADMINISTRATIVE_FEE_RETURN_BASE=.00


Alexandrox92

unread,
May 12, 2015, 12:35:25 PM5/12/15
to desarrollador...@googlegroups.com
Tengo la ultima version de la SDK Descargar SDK PHP 4.5.6 disponible a la fecha de este comentario y sigue igual.
Esta es mi pagina de respuesta.

<?php require_once('../Connections/payuseguro.php'); ?>
<?php

//pagina de respuesta para despues del pago guardar variables
$ApiKey
= "6u39nqhq8ftd0hlvnjfs66eh8c";
$merchant_id
= $_REQUEST['merchantId'];
$referenceCode
= $_REQUEST['referenceCode'];
$TX_VALUE
= $_REQUEST['TX_VALUE'];
$New_value
= number_format($TX_VALUE, 1, '.', '');
$currency
= $_REQUEST['currency'];
$transactionState
= $_REQUEST['transactionState'];
$firma_cadena
= "$ApiKey~$merchant_id~$referenceCode~$New_value~$currency~$transactionState";
$firmacreada
= md5($firma_cadena);
$firma
= $_REQUEST['signature'];


if (strtoupper($firma) == strtoupper($firmacreada)) {


$merchantId
=$_REQUEST['merchantId'];
$transactionState
=$_REQUEST['transactionState'];
$risk
=$_REQUEST['risk'];
$polResponseCode
=$_REQUEST['polResponseCode'];
$referenceCode
=$_REQUEST['referenceCode'];
$reference_pol
=$_REQUEST['reference_pol'];
$signature
=$_REQUEST['signature'];
$polPaymentMethod
=$_REQUEST['polPaymentMethod'];
$polPaymentMethodType
=$_REQUEST['polPaymentMethodType'];
$installmentsNumber
=$_REQUEST['installmentsNumber'];
$TX_VALUE
=$_REQUEST['TX_VALUE'];
$TX_TAX
=$_REQUEST['TX_TAX'];
$buyerEmail
=$_REQUEST['buyerEmail'];
$processingDate
=$_REQUEST['processingDate'];
$currency
=$_REQUEST['currency'];
$cus
=$_REQUEST['cus'];
$pseBank
=$_REQUEST['pseBank'];
$lng
=$_REQUEST['lng'];
$description
=$_REQUEST['description'];
$lapResponseCode
=$_REQUEST['lapResponseCode'];
$lapPaymentMethod
=$_REQUEST['lapPaymentMethod'];
$lapPaymentMethodType
=$_REQUEST['lapPaymentMethodType'];
$lapTransactionState
=$_REQUEST['lapTransactionState'];
$message
=$_REQUEST['message'];
$extra1
=$_REQUEST['extra1'];
$extra2
=$_REQUEST['extra2'];
$extra3
=$_REQUEST['extra3'];
$authorizationCode
=$_REQUEST['authorizationCode'];
$merchant_address
=$_REQUEST['merchant_address'];
$merchant_name
=$_REQUEST['merchant_name'];
$merchant_url
=$_REQUEST['merchant_url'];
$orderLanguage
=$_REQUEST['orderLanguage'];
$pseCycle
=$_REQUEST['pseCycle'];
$pseReference1
=$_REQUEST['pseReference1'];
$pseReference2
=$_REQUEST['pseReference2'];
$pseReference3
=$_REQUEST['pseReference3'];
$telephone
=$_REQUEST['telephone'];
$transactionId
=$_REQUEST['transactionId'];
$trazabilityCode
=$_REQUEST['trazabilityCode'];
$TX_ADMINISTRATIVE_FEE
=$_REQUEST['TX_ADMINISTRATIVE_FEE'];
$TX_TAX_ADMINISTRATIVE_FEE
=$_REQUEST['TX_TAX_ADMINISTRATIVE_FEE'];
$TX_TAX_ADMINISTRATIVE_FEE_RETURN_BASE
=$_REQUEST['TX_TAX_ADMINISTRATIVE_FEE_RETURN_BASE'];
$action_code_description
=$_REQUEST['action_code_description'];
$cc_holder
=$_REQUEST['cc_holder'];
$cc_number
=$_REQUEST['cc_number'];
$processing_date_time
=$_REQUEST['processing_date_time'];
$request_number
=$_REQUEST['request_number'];



///selecionamos la base de datos
mysql_select_db
($database_payu, $payuseguro);
///la consulta
$nuevousuarioguardar
= "INSERT ventasrecibidas SET
merchantId='$merchantId',
transactionState='$transactionState',
risk='$risk',
polResponseCode='$polResponseCode',
referenceCode='$referenceCode',
reference_pol='$reference_pol',
signature='$signature',
polPaymentMethod='$polPaymentMethod',
polPaymentMethodType='$polPaymentMethodType',
installmentsNumber='$installmentsNumber',
TX_VALUE='$TX_VALUE',
TX_TAX='$TX_TAX',
buyerEmail='$buyerEmail',
processingDate='$processingDate',
currency='$currency',
cus='$cus',
pseBank='$pseBank',
lng='$lng',
description='$description',
lapResponseCode='$lapResponseCode',
lapPaymentMethod='$lapPaymentMethod',
lapPaymentMethodType='$lapPaymentMethodType',
lapTransactionState='$lapTransactionState',
message='$message',
extra1='$extra1',
extra2='$extra2',
extra3='$extra3',
authorizationCode='$authorizationCode',
merchant_address='$merchant_address',
merchant_name='$merchant_name',
merchant_url='$merchant_url',
orderLanguage='$orderLanguage',
pseCycle='$pseCycle',
pseReference1='$pseReference1',
pseReference2='$pseReference2',
pseReference3='$pseReference3',
telephone='$telephone',
transactionId='$transactionId',
trazabilityCode='$trazabilityCode',
TX_ADMINISTRATIVE_FEE='$TX_ADMINISTRATIVE_FEE',
TX_TAX_ADMINISTRATIVE_FEE='$TX_TAX_ADMINISTRATIVE_FEE',
TX_TAX_ADMINISTRATIVE_FEE_RETURN_BASE='$TX_TAX_ADMINISTRATIVE_FEE_RETURN_BASE',
action_code_description='$action_code_description',
cc_holder='$cc_holder',
cc_number='$cc_number',
processing_date_time='$processing_date_time',
request_number='$request_number'
"
;    
$nuevousuario
= mysql_query($nuevousuarioguardar, $payuseguro) or die('<div class="alert alert-danger"><strong>Oh no!</strong> Lo Sentimos pero algo ha fallado. Detalles del error:  '.mysql_error().'</div>');
 


?>
    Recibido Ok.
<?
}
else
{
?>
   
<h1>Error validando firma digital.</h1>
<?php
}
?>


ADMIN

unread,
May 12, 2015, 12:49:05 PM5/12/15
to desarrollador...@googlegroups.com
Hola,

Agradezco me relaciones el código completo de la petición que estas construyendo a través del SDK. De igual forma quiero aclarar que una página de respuesta no es funcional para actualizar bases de datos, en el código anterior, haces referencia a que pertenece a tu página de respuesta y efectivamente capturas las variables que entregaríamos por metodo GET a una pagina de respuesta. La única pagina por la cual debes actualizar la base de datos de tu servidor es a través de la de confirmación, para lo cual relaciono el enlace donde encontrarás las variables que recibirán a esa pagina a través de POST. http://developers.payulatam.com/es/web_checkout/integration.html (Última Sección). 

Así mismo, me permito dar una explicación de cada una de las páginas de respuesta y confirmación:

Pagina de respuesta: Página que permite plasmar un resultado de la compra al concluir un proceso de pago. PayU envía la información de la transacción a esa página a través de método GET (URL). Debe tener código HTML y no es usable para actualizar bases de datos. 

Página de confirmación: Es una página que permite actualizar bases de datos y/o funcionalidades especificas de cada comercio para automatizar procesos.  PayU envía la información de la transacción a esa página a través de método POST. No debe contener código HTML por lo que no es visible durante un proceso de pago. Solo recibirá información cuando la TX quedé en estado final (Aprobada, Declinada, Error, Expirada). 
Reply all
Reply to author
Forward
0 new messages