Integración medios de pago Efecty y Baloto

801 views
Skip to first unread message

Edwin

unread,
Jan 27, 2015, 10:29:33 AM1/27/15
to desarrollador...@googlegroups.com
Buen día,

Trato de ejecutar el código xml que me permitirá realizar Pagos en efectivo, mediante la Integración de los medios de pago Baloto y Efecty
para realizar la prueba de conectividad a la plataforma y me sale la siguiente error.

  <paymentResponse>
  <code>ERROR</code> 
  <error>La órden de pago con id [6490975] ya se encuentra registrada con la referencia payment_test_00000001.</error> 
  </paymentResponse>

intenté cambiando el número de referencia de forma consecutiva, generando ésta error.

  <paymentResponse>
  <code>ERROR</code> 
  <error>La orden con referencia [payment_test_00000002] no pudo ser procesada, la firma no es válida.</error> 
  </paymentResponse>

ADMIN AP

unread,
Jan 27, 2015, 2:13:55 PM1/27/15
to desarrollador...@googlegroups.com
Hola Edwin, 

El primer error ocurre cuando ya existen ordenes de pago con una misma referencia (referenceCode). Para solucionar este inconveniente, te recomiendo hacer uso de un contador o por ejemplo de la función time() en PHP, ya que el valor en referenceCode debe ser único por cada transacción. Como ese valor cambia, entonces debes generar una nueva firma digital (signature) para cada solicitud de pago, por ese motivo se presenta el segundo error. 

En el siguiente enlace encontrarás la información necesaria para generar la firma digital y enviarla en el campo signature: http://desarrolladores.payulatam.com/api-consideraciones-sobre-las-variables/

ADMIN AP

unread,
Jan 28, 2015, 3:54:55 PM1/28/15
to desarrollador...@googlegroups.com
Hola Edwin, 

No pude publicar tu pregunta debido a que en la petición enviada se encuentran los datos sensibles del comercio. Sin embargo, a continuación relaciono la pregunta enviada y en la parte inferior la respuesta:

--------------------------------------------------------------------------------------------------------------------
Cordial saludo,

Me encuentro realizando pruebas de integración para pagos con Efecty apuntando al servidor de produccion (https://api.payulatam.com/payments-api/4.0/service.cgi)
retornando la siguiente respuesta.
<paymentResponse><code>ERROR</code><error>El método de pago [EFECTY] no está soportado</error></paymentResponse>


Nota: anexo archivo XML.

Agradezco colaboración.

------------------------------------------------------------------------------

Revisando la petición que estás generando, el número del accountId que estás enviando no pertenece al merchantId de tu comercio. 
Message has been deleted

ADMIN AP

unread,
Jan 28, 2015, 5:26:28 PM1/28/15
to desarrollador...@googlegroups.com
Hola Edwin, 

El número 501806 pertenece a tu merchantId, el cual es el identificador del comercio. Tu accountId es 502616 que identifica la cuenta del país que estás integrando. 
Message has been deleted

ADMIN AP

unread,
Jan 30, 2015, 2:34:58 PM1/30/15
to desarrollador...@googlegroups.com
Hola Edwin, 

Aplicando MD5 a la siguiente cadena (con tu apiKey y MerchantId), me genera el valor indicado:

ApiKey~merchantId~28~3~COP=f8f9c6df84a23bbe9ed57131c0a0efa0

éste valor obtenido en mi encriptación es diferente al enviado en el campo signature. Yo hice uso del número 28 como referenceCode. Te recomiendo validar que los datos con los cuales generas la firma sea los mismos que estés enviando en cada una de las variables de la petición. 

ADMIN AP

unread,
Feb 2, 2015, 8:54:06 AM2/2/15
to desarrollador...@googlegroups.com
Hola Edwin, 

A continuación relaciono tu pregunta sin datos sensibles. En la parte inferior encontrarás mi comentario:


--------------------------------------------------
apliqué el siguiente algoritmo en c# por favor confirmar si este algoritmo es igual al que uds. aplican.
gracias por sus obsevaciones
__________________________________________
string FirmaAutenticacion = "APIKEY~merchantId~28~3~COP";
            byte[] FirmaEncriptada;
            //Algoritmo MD5
            System.Security.Cryptography.MD5CryptoServiceProvider hashmd5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
            //se guarda la llave para que se le realice
            //hashing
            FirmaEncriptada = hashmd5.ComputeHash(UTF8Encoding.UTF32.GetBytes(FirmaAutenticacion));
            //------------------------
            byte[] data = hashmd5.ComputeHash(Encoding.UTF8.GetBytes(FirmaAutenticacion));

            // Create a new Stringbuilder to collect the bytes 
            // and create a string.
            StringBuilder sBuilder = new StringBuilder();

            // Loop through each byte of the hashed data  
            // and format each one as a hexadecimal string. 
            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }

            // Return the hexadecimal string. 
            return sBuilder.ToString();
____________________________________
al final me retorna esto "c3ecb8eab347a608e4086b86d2973dfa" 

-----------------------------------------------------------

Ya realicé la validación de acuerdo a ésta información y ahora si estas obteniendo la misma encriptación que se genera en nuestro sistema. Ese dato que te retorna lo debes enviar en signature.

Edwin

unread,
Feb 2, 2015, 9:14:21 AM2/2/15
to desarrollador...@googlegroups.com
aún así continua el mismo error 
éstas pruebas las estoy realizando apuntando al servidor de producción:  https://api.payulatam.com/payments-api/4.0/service.cgi
que falta por configurar? 

ADMIN AP

unread,
Feb 2, 2015, 9:31:41 AM2/2/15
to desarrollador...@googlegroups.com
Hola Edwin, 

No encuentro en nuestro sistema una ultima petición realizada por tu comercio. Agradezco generes una nueva petición y por favor  me indiques la hora exacta de la solicitud y si es posible el error que estas recibiendo. 

Edwin

unread,
Feb 2, 2015, 9:39:26 AM2/2/15
to desarrollador...@googlegroups.com
Hora de la solicitud: 9:35 am 
Error:
<paymentResponse>
        <code>ERROR</code>
        <error>La orden con referencia [37] no pudo ser procesada, la firma no es válida.</error>
</paymentResponse>

ADMIN AP

unread,
Feb 2, 2015, 9:53:31 AM2/2/15
to desarrollador...@googlegroups.com
Hola Edwin, 

Encontré la siguiente petición y respuesta de nuestro API:


-----------------------------------------------------------
[API request] = {
  "language" : "es",
  "command" : "SUBMIT_TRANSACTION",
  "merchant" : {
    "apiLogin" : "***********f1f8",
    "apiKey" : "**********************quia"
  },
  "transaction" : {
    "order" : {
      "id" : null,
      "accountId" : 502616,
      "referenceCode" : "38",
      "description" : "payment test",
      "airlineCode" : null,
      "signature" : "ca640f87a1cdd8eb601d4357384bf7af",
      "partnerId" : null,
      "language" : "es",
      "notifyUrl" : "http://www.tes.com/confirmation",
      "shippingAddress" : null,
      "buyer" : {
        "merchantBuyerId" : null,
        "fullName" : null,
        "emailAddress" : "buyer...@test.com",
        "contactPhone" : null,
        "dniNumber" : null,
        "cnpj" : null,
        "shippingAddress" : null
      },
      "additionalValues" : {
        "TX_VALUE" : {
          "value" : 10000,
          "currency" : "COP"
        }
      }
    },
    "creditCard" : null,
    "creditCardSwipe" : null,
    "creditCardTokenId" : null,
    "createCreditCardToken" : null,
    "bankAccount" : null,
    "type" : "AUTHORIZATION_AND_CAPTURE",
    "parentTransactionId" : null,
    "paymentMethod" : "BALOTO",
    "source" : null,
    "paymentCountry" : "CO",
    "deviceSessionId" : null,
    "ipAddress" : "127.0.0.1",
    "cookie" : null,
    "userAgent" : null,
    "expirationDate" : 1428642000000,
    "payer" : null,
    "extraParameters" : null,
    "additionalValues" : null,
    "termsAndConditionsAcepted" : null,
    "reason" : null,
    "monthsWithoutInterest" : null
  },
  "bankListInformation" : null,
  "creditCardToken" : null,
  "removeCreditCardToken" : null,
  "creditCardTokenInformation" : null,
  "contentFile" : null,
  "paymentMethod" : null,
  "test" : false
}
[API response] = {
  "code" : "ERROR",
  "error" : "La orden con referencia [38] no pudo ser procesada, la firma no es válida.",
  "transactionResponse" : null
}
[Error message] = La orden con referencia [38] no pudo ser procesada, la firma no es válida.

------------------------------------------------------------------

Al validar la información pude observar que la firma enviada para los valores indicados en las variables no corresponde. Envío un pantallazo de la cadena que deberías estar encriptando para ésta petición en donde la firma que se debe enviar en signature es 0d2ab5d1c6afd4b21b3e94abc2515fae

ApiKey~merchantId~38~10000~COP



firma.JPG

ADMIN AP

unread,
Feb 2, 2015, 9:56:47 AM2/2/15
to desarrollador...@googlegroups.com
Adicional a lo anterior, detecté que tienes el valor siempre como número 3 en la cadena que estás encriptando. Sin embargo, el valor que envías en la petición corresponde a 10000.

Edwin

unread,
Feb 2, 2015, 10:33:25 AM2/2/15
to desarrollador...@googlegroups.com
Muchas gracias por la colaboracion. es correcta la observacion ya que no era muy clara en la documentacion
para el caso de BALOTO arroja el siguiente mensaje

 <paymentResponse>
  <code>SUCCESS</code> 
  <transactionResponse>
  <orderId>81788915</orderId> 
  <transactionId>a00d569f-0efe-42e8-a776-e791727e6730</transactionId> 
  <state>ERROR</state> 
  <responseCode>ENTITY_DECLINED</responseCode> 
  <errorCode>ENTITY_NO_RESPONSE</errorCode> 
  </transactionResponse>
</paymentResponse>

se ejecuta satisfactoriamente aunque tambien indica que la entidad(baloto) no responde.

Y para el caso de EFECTY arroja el siguiente mensaje

<paymentResponse>
  <code>ERROR</code> 
  <error>El método de pago [EFECTY] no está soportado</error> 
</paymentResponse>

indicando al parecer que el metodo de pago no esta disponible.

ADMIN AP

unread,
Feb 2, 2015, 11:31:45 AM2/2/15
to desarrollador...@googlegroups.com
Hola Edwin, 

Esto se presenta debido a que tu cuenta se encuentra configurado con el modo de prueba activo. Por favor ingresa a tu modulo administrativo de PayU, en la pestaña configuración->Configuración cuentas y desactiva la casilla "Transacción en modo de pruebas" para la cuenta de Colombia. 

Edwin

unread,
Feb 5, 2015, 11:16:23 AM2/5/15
to desarrollador...@googlegroups.com
Buen dia, 

Se desactivo la  casilla "Transacción en modo de pruebas" pero para el caso de EFECTY continua el siguiente mensaje:
- <paymentResponse>
          <code>ERROR</code>

ADMIN AP

unread,
Feb 5, 2015, 5:30:35 PM2/5/15
to desarrollador...@googlegroups.com
Hola Edwin, 

Acabo de generar una petición exitosa para tu cuenta con EFECTY. Por esto, agradecería me envíes tu petición de éste medio de pago para realizar una comparación. De igual forma, indícame la hora exacta y fecha de la ultima petición que realices con ese medio de pago. 

ADMIN AP

unread,
Feb 6, 2015, 10:49:47 AM2/6/15
to desarrollador...@googlegroups.com
Hola Edwin, 

En la petición que me enviaste hoy para EFECTY, pude detectar que en el campo accountId estas enviando el número del MerchantId y no el 502616 que pertenece a tu cuenta. Adicional a esto, te informo que EFECTY soporta un valor mínimo por $20.000.

Edwin

unread,
Feb 6, 2015, 11:18:50 AM2/6/15
to desarrollador...@googlegroups.com
Buen día,

Teniendo en cuenta que baloto: $10.000 , efecty: $20.000
solicito una tabla con los valores mínimos  por cada uno de los medios de pago: 
tarjetas de crédito, etcétera.

ADMIN AP

unread,
Feb 6, 2015, 12:04:56 PM2/6/15
to desarrollador...@googlegroups.com
Hola Edwin, 

Te informo que el valor mínimo de procesamiento para tarjetas de crédito y Baloto es el valor mínimo que tiene la configuración de tu cuenta que corresponderá a $3 USD según la TRM del día. Por ejemplo el día de hoy es aproximadamente $7100 COP. La única excepción es el medio de pago EFECTY que siempre será $20000.

ADMIN AP

unread,
Feb 24, 2015, 8:53:17 AM2/24/15
to desarrollador...@googlegroups.com
Hola Edwin, 

A continuación relaciono tu pregunta: 

Re: Integración medios de pago Efecty y Baloto (show original)Feb 23
Buen dia,

solicito colaboración para ejecutar el XML para pagos mediante Tarjetas de crédito.
anexo el archivo XML.

Gracias

-----------------------------------------------------

Al revisar la petición XML pude observar que tienes el mismo error que se te presentó anteriormente para medios de pago en efectivo, la firma que estas enviando en el campo signature la estás creando con un valor diferente al que estás enviando en TX_VALUE. La firma está siendo construida con un valor de 10000 y nos estás enviando 192000. 


Reply all
Reply to author
Forward
0 new messages