Formulario de pago
En este artículo, encuentras cómo enviar la información de una transacción a la pasarela de pagos de PayU. Para esto, debes generar un formulario HTML con los datos de la transacción utilizando el método HTTP POST y apuntando a nuestro sistema.
Consideraciones
- Asegúrate de tener los valores correctos de las variables
merchantId
,accountId
yapiKey
. - Utiliza diferentes referencias de pago por cada pago.
- No incluyas espacios en los valores de los parámetros.
- No incluyas valores con más de dos cifras decimales.
- No incluyas caracteres especiales en el parámetro
referenceCode
.
Variables
Puedes incluir las siguientes variables en el Formulario de pago.
Variables en el Formulario de pago
Campo | Tipo | Tamaño | Descripción | Obligatorio |
---|---|---|---|---|
merchantId | Numérico | 12 | Identificador de tu tienda en el sistema de PayU, puedes encontrar este número en el correo de creación de tu cuenta. | Sí |
referenceCode | Alfanumérico | 255 | Referencia de la venta o la orden. Debe ser única por cada transacción enviada al sistema. Usualmente, esta es una forma de identificar las peticiones enviadas a la pasarela de pagos. | Sí |
accountId | Numérico | 6 | Identificador de la cuenta de usuario de cada país asociado con la tienda. Esta variable se utiliza para mostrar los métodos disponibles del país. | Sí |
description | Alfanumérico | 255 | Descripción de la venta. | Sí |
currency | Alfanumérico | 3 | Moneda respectiva en la que se hace el pago. El proceso de conciliación se realiza en pesos colombianos a la tasa representativa del día. Ver monedas aceptadas. |
Sí |
amount | Numérico | 10 | Valor total de la transacción. Puede tener dos cifras decimales. Ejemplo 10000.00 o 10000. | Sí |
tax | Numérico | 10,2 | Valor del impuesto al valor agregado de la transacción. En Colombia, si no se envía el IVA. el sistema aplica automáticamente el 19%. Puede tener dos dígitos decimales, por ejemplo 19000.00. Si el producto o servicio es exento de impuesto al valor agregado, asigne 0 a esta variable. |
Sí |
discount | Numérico | 10,2 | Valor del descuento sobre la venta. | No |
taxReturnBase | Numérico | 10,2 | Valor base para la devolución de impuestos. Si el producto o servicio es exento de impuesto al valor agregado, asigne 0 a esta variable. |
Sí |
additionalValue | Numérico | 10,2 | Valor adicional no comisionable de la venta. | No |
signature | Alfanumérico | 255 | Firma digital creada por cada transacción. Consulta Firma para el formulario de pago para aprender a generarla. | Sí |
algorithmSignature | Alfanumérico | 255 | Algoritmo de encriptación de la firma digital (campo signature ). Los tres algoritmos disponibles son: MD5 , SHA y SHA256 . |
No |
test | Numérico | 1 | Indica si la transacción es en modo pruebas o en producción. Asigna 1 para pruebas y 0 para producción. |
No |
lng | Alfanumérico | 3 | Idioma en el que se quiere mostrar la pasarela de pagos. Ver idiomas soportados. |
No |
extra1 | Alfanumérico | 255 | Campo adicional para enviar información relacionada con la compra. | No |
extra2 | Alfanumérico | 255 | Campo adicional para enviar información relacionada con la compra. | No |
extra3 | Alfanumérico | 255 | Campo adicional para enviar información relacionada con la compra. | No |
template | Alfanumérico | 255 | Plantilla para la página de pagos. | No |
responseUrl | Alfanumérico | 255 | URL de la página de respuesta. | No |
confirmationUrl | Alfanumérico | 255 | URL de la página de confirmación. | No |
sourceUrl | Alfanumérico | 255 | URL de origen de las transacciones del comercio. Aquí es donde se encuentra ubicado el botón de pago. | No |
airline | Alfanumérico | 4 | Código de la aerolínea. | No |
billingAddress | Alfanumérico | 255 | Dirección de facturación. | No |
shippingAddress | Alfanumérico | 255 | Dirección de entrega de la mercancía. * Obligatorio si tu tienda envía el producto. |
Sí* |
billingCity | Alfanumérico | 50 | Ciudad asociada con la dirección de facturación. | No |
shippingCity | Alfanumérico | 50 | Ciudad de entrega de la mercancía * Obligatorio si tu tienda envía el producto. |
Sí* |
zipCode | Alfanumérico | 20 | Postal code. | No |
billingCountry | Alfanumérico | 2 | Código ISO del país asociado con la dirección de facturación. | No |
shippingCountry | Alfanumérico | 2 | Código ISO del país de entrega de lla mercancía. * Obligatorio si tu tienda envía el producto. Ver los paises de pago. |
Sí* |
buyerEmail | Alfanumérico | 255 | Campo que contiene el correo electrónico del comprador para notificar el resultado de la transacción por medio de correo electrónico. Se recomienda validar que se haya ingresado este campo en el formulario. | Sí |
telephone | Alfanumérico | 50 | Teléfono de residencia del comprador. | Sí |
officeTelephone | Alfanumérico | 50 | Teléfono diurno del comprador. | No |
mobilePhone | Alfanumérico | 50 | Número del móvil del comprador. Este valor será utilizado para diligenciar el formulario de la tarjeta de crédito y será el número de teléfono de contacto. | No |
buyerFullName | Alfanumérico | 150 | Nombre completo del comprador. | Sí |
paymentMethods | Alfanumérico | 255 | Lista de métodos de pago habilitados en el proceso de pago. Esta lista debe estar separada por comas y sin espacios en blanco. Por ejemplo: VISA,MASTERCARD .Puedes incluir cuotas para los métodos de pago añadiéndolas mediante guiones. Ejemplo: VISA-1-3,MASTERCARD-3-5-9 .Consulta los métodos de pago disponibles para tu país en la columna parámetro de método de pago . |
No |
administrativeFee | Numérico | 10,2 | Valor de la tarifa administrativa. | - |
taxAdministrativeFee | Numérico | 10,2 | Valor del impuesto de la tarifa administrativa. | - |
taxAdministrativeFeeReturnBase | Numérico | 10,2 | Valor base para calcular el impuesto de la tarifa administrativa. | - |
payerEmail | Alfanumérico | 255 | Dirección de correo electrónico del pagador. | Sí |
payerPhone | Alfanumérico | 20 | Número de teléfono del pagador. | Sí |
payerOfficePhone | Alfanumérico | 20 | Número de teléfono de oficina del pagador. | No |
payerMobilePhone | Alfanumérico | 20 | Número de teléfono móvil del pagador. | No |
expirationDate | #N/A | 19 | Fecha de vencimiento de las transacciones para pagos en efectivo. Formato: YYYY-MM-DD HH:mm:ss .Este valor debe ser menor que el número de días predeterminado para el pago en efectivo (15 días para Argentina y 7 días para el resto de países). |
- |
payerFullName | Alfanumérico | 50 | Nombre del pagador. Este valor será utilizado para diligenciar el formulario de la tarjeta de crédito. | Sí |
payerDocument | Alfanumérico | 25 | Número de identificación del pagador. Este valor será utilizado para diligenciar el formulario de la tarjeta de crédito. | Sí |
payerDocumentType | Alfanumérico | 25 | El número de identificación del comprador. Este valor se tomará para completar el formulario de la tarjeta de crédito. | Sí |
iin | Alfanumérico | 2048 | Lista de Bins admitidos durante el proceso de pago (separados por coma). Este parámetro solo lo pueden utilizar los comercios que validan la firma. |
No |
PaymentMethodsDescription | Alfanumérico | 255 | Descripción de los métodos de pago y Bins admitidos durante el proceso de pago. | No |
pseBanks | Alfanumérico | 255 | Listado de códigos bancarios habilitados en el proceso de pago a través de PSE. Este listado debe estar separado por coma y sin espacios en blanco. |
No |
Consideraciones en las variables
- El campo
tax
es el valor de impuesto al valor agregado y el campotaxReturnBase
es el valor base para calcular el impuesto. Si tu producto es exento de impuesto, asigna0
a ambas variables (tax=0
,taxReturnBase=0
). - Si algunos elementos tiene impuesto y en otros no aplica, debes realizar el siguiente cálculo para saber cómo enviar los valores a la plataforma de pagos.
Producto | Campo taxReturnBase | Campo tax | Valor |
---|---|---|---|
A | 84.033 | 15.966 (19%) | 100.000 |
B | 181.818 | 18.181 (10%) | 200.000 |
C | 0 | 0 (0%) | 150.000 |
Total | 268.851 | 34.147 | 450.000 |
Importante
La sumatoria de los campos Tax y taxReturnBase no puede ser mayor que el valor total de cada producto.- Para comercios registrados en Colombia que pertenezcan al Régimen común, si no envías el impuesto, PayU lo calcula automáticamente utilizando el 19%. Para comercios que pertenecen al Régimen simplificado, si no envías el impuesto, PayU asigna cero (0) automáticamente al valor del impuesto.
Ejemplo del formulario
El siguiente es un ejemplo de un formulario de pago básico utilizando únicamente los campos obligatorios y apuntando el request al ambiente de sandbox (modo pruebas).
<form method="post" action="https://sandbox.checkout.payulatam.com/ppp-web-gateway-payu/">
<input name="merchantId" type="hidden" value="508029" >
<input name="accountId" type="hidden" value="512321" >
<input name="description" type="hidden" value="Test PAYU" >
<input name="referenceCode" type="hidden" value="TestPayU" >
<input name="amount" type="hidden" value="20000" >
<input name="tax" type="hidden" value="3193" >
<input name="taxReturnBase" type="hidden" value="16806" >
<input name="currency" type="hidden" value="COP" >
<input name="signature" type="hidden" value="7ee7cf808ce6a39b17481c54f2c57acc" >
<input name="test" type="hidden" value="0" >
<input name="buyerEmail" type="hidden" value="test@test.com" >
<input name="responseUrl" type="hidden" value="http://www.test.com/response" >
<input name="confirmationUrl" type="hidden" value="http://www.test.com/confirmation" >
<input name="Submit" type="submit" value="Enviar" >
</form>
Si tu tienda envía los productos, necesitas incluir los siguientes campos:
<input name="shippingAddress" type="hidden" value="calle 93 n 47 - 65" >
<input name="shippingCity" type="hidden" value="Bogotá" >
<input name="shippingCountry" type="hidden" value="CO" >
La URL configurada en el campo action
depende del ambiente:
Pruebas: https://sandbox.checkout.payulatam.com/ppp-web-gateway-payu/
Producción: https://checkout.payulatam.com/ppp-web-gateway-payu/
Firma para el formulario de pago
La firma es un método para validar los pagos realizados a través de la plataforma asegurando su autenticidad. Consiste en un string encriptado utilizando MD5
, SHA1
o SHA256
. El string creado es así:
"ApiKey~merchantId~referenceCode~amount~currency".
Nota
Si tu formulario de pago incluye las variables paymentMethods
, iin
o pseBanks
, debes concatenarlas en dicho orden:
"ApiKey~merchantId~referenceCode~amount~currency~paymentMethods~iin~pseBanks"
Por ejemplo, con los siguientes datos:
merchantId: 508029
ApiKey: 4Vj8eK4rloUd272L48hsrarnUA
referenceCode: TestPayU
amount: 20000
currency: COP
accountId: 512326
buyerEmail: test@test.com
La firma es:
"4Vj8eK4rloUd272L48hsrarnUA~508029~TestPayU~20000~COP"
Encriptada utilizando MD5
:
"7ee7cf808ce6a39b17481c54f2c57acc"
Encriptada utilizando SHA1
:
"fa890d3f94e12b5cdb62e8771453b99b78e7ccdc"
Encriptada utilizando SHA256
:
"af3899a22336b79db46006491d15813158826f944599bf3bf601e2327f898022"
Compara tu firma
Esta calculadora te permite generar la firma utilizando alguno de los métodos de cifrado disponibles.