2017 © Pedro Peláez
 

library php-sdk

SDK para TodoPago

image

todopago/php-sdk

SDK para TodoPago

  • Tuesday, April 17, 2018
  • by damianwajser
  • Repository
  • 25 Watchers
  • 19 Stars
  • 35,671 Installations
  • HTML
  • 1 Dependents
  • 0 Suggesters
  • 21 Forks
  • 17 Open issues
  • 21 Versions
  • 11 % Grown

The README.md

, (*1)

Todo Pago - módulo SDK-PHP para conexión con gateway de pago

, (*2)

Instalación

Se recomienda realizar la instalación a través de Composer., (*3)

composer require todopago/php-sdk

Luego de la instalación se debe incluir el archivo vendor/autoload.php en el proyecto., (*4)

También se puede descargar la última versión del SDK desde el botón Download ZIP del branch master. Una vez descargado y descomprimido, debe incluirse el archivo autoload.php que se encuentra en la carpeta /vendor como librería dentro del proyecto., (*5)

Observación: Descomentar: extension=php_soap.dll, extension=php_openssl.dll y extension=php_curl.dll del php.ini, ya que para la conexión al gateway se utiliza la clase SoapClient del API de PHP., (*6)

, (*7)

1. Versiones de php soportadas

La versión implementada del SDK, está testeada para la version PHP 5.3 en adelante., (*8)

, (*9)

2. Generalidades

Esta versión soporta únicamente pago en moneda nacional argentina (CURRENCYCODE = 32)., (*10)

Volver a inicio
, (*11)

, (*12)

Ambientes

El SDK-PHP permite trabajar con los ambiente de Developers y Producción de Todo Pago.
El ambiente se debe instanciar como se indica a continuación., (*13)

$mode = "test";//identificador de entorno obligatorio, la otra opción es "prod"
$http_header = array('Authorization'=>'TODOPAGO 912EC803B2CE40E4A541068D495AB570');//authorization key del ambiente requerido

$connector = new TodoPago\Sdk($http_header, $mode);

Puede consultar los datos de prueba en la web de TodoPago., (*14)

Volver a inicio
, (*15)

, (*16)

Uso


, (*17)

, (*18)

Inicializar la clase correspondiente al conector (TodoPago\Sdk).

  • Crear un array con los http headers (API Keys) suministrados por Todo Pago
$http_header = array('Authorization'=>'TODOPAGO 912EC803B2CE49E4A541068D495AB570');
  • Crear una instancia de la clase TodoPago\Sdk
$connector = new TodoPago\Sdk($http_header, $mode); // $mode: "test" para developers, "prod" para producción

, (*19)

Operatoria Agrupador

Mediante una única y simple adhesión, los vendedores acceden a todos los medios de pago que el Botón de pago ofrezca sin necesidad de contar con ningún tipo de contrato adicional con cada medio de pago. La funcionalidad “agrupador” de TodoPago, se ocupa de gestionar los acuerdos necesarios con todos los medios de pago a efectos de disponibilizarlos en el Botón., (*20)

Para acceder al servicio, los vendedores podrán adherirse en el sitio exclusivo de TodoPago o a través de su ejecutivo comercial. En estos procesos se generará el usuario y clave para este servicio., (*21)

Una vez adheridos se creará automáticamente una cuenta virtual, en la cual se acreditarán los fondos provenientes de los cobros realizados con la presente modalidad de pago., (*22)

, (*23)

Diagrama de secuencia

imagen de configuracion, (*24)

, (*25)

Solicitud de autorización

En este caso hay que llamar a sendAuthorizeRequest()., (*26)

$values = $connector->sendAuthorizeRequest($optionsSAR_comercio, $optionsSAR_operacion);

Datos propios del comercio $optionsSAR_comercio debe ser un array con la siguiente estructura:, (*27)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
Security Sí API Keys sin PRISMA o TODOPAGO y sin espacio. Alfanumérico hasta 32 caracteres 912EC803B2CE49E4A541068D495AB570
Merchant Sí Nro. de Comercio (Merchant ID) provisto por TodoPago Numérico 12345678
URL_OK No URL a la que el comprador será dirigido cuando la compra resulte exitosa Alfanumérico hasta 256 caracteres http://susitio.com/payment/Ok
URL_Error No URL a la que el comprador será dirigido cuando la compra no resulte exitosa Alfanumérico hasta 256 caracteres http://susitio.com/payment/Error

Datos propios del comercio - Ejemplo, (*28)

$optionsSAR_comercio = array (
    'Security'=> '1234567890ABCDEF1234567890ABCDEF',
    'EncodingMethod'=>'XML',
    'Merchant'=>305,
    'URL_OK'=>'localhost:8888/sdk-php/ejemplo/exito.php?Order=27398173292187',
    'URL_ERROR'=>'localhost:8888/sdk-php/ejemplo/error.php?Order=27398173292187'
);

*En el ejemplo se envían parámetros en la url (en nuestro ejemplo: ?Order=27398173292187), para ser recibidos por la tienda vía get y de este modo recuperar el valor en un próximo paso., (*29)

Datos propios de la operación $optionsSAR_operacion debe ser un array con la siguiente estructura:, (*30)

Campo Requerido Descripción Tipo de Dato Valores Posibles / Ejemplos
MERCHANT Sí Nro. de Comercio (Merchant ID) provisto por TodoPago Numérico 12345
OPERATIONID Sí Identificación de la transacción para el Comercio. Debe ser distinto para cada operación. Alfanumérico de 1 a 40 caracteres 10000012
CURRENCYCODE Sí Tipo de moneda de la operación. Sólo válido pesos argentinos (32) Numérico de dos posiciones 32
AMOUNT Sí Importe en Pesos de la transacción. Numérico con 9 dígitos con hasta 2 decimales 999999[.CC] Usando el punto como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. $125,38 -> 125.38
EMAILCLIENTE Si El comercio deberá enviar a TodoPago el email del cliente. Esta dirección se utilizará para enviar el mail de confirmación de la compra al cliente Alfanumérico de hasta 80 caracteres. cliente@mail.com

Datos propios del comercio - Ejemplo, (*31)

$optionsSAR_operacion = array (
    'MERCHANT'=> 13054, //dato fijo (número identificador del comercio)
    'OPERATIONID'=>'27398173292187', //número único que identifica la operación, generado por el comercio.
    'CURRENCYCODE'=> 32, //por el momento es el único tipo de moneda aceptada
    'AMOUNT'=>54.00,
    'EMAILCLIENTE'=>'email_cliente@dominio.com',
    );

* _Importante:_ Tambíen deben mandarse los datos correspondientes a Prevención de Fraude, (*32)

Respuesta, (*33)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
**StatusCode** Sí Código de estado o valor de retorno del Servicio Numérico de 5 posiciones
  • -1 -> OK
  • otro ->Error
**StatusMessage** Sí Descripción del códgo de retorno o estado del servicio Alfanumérico hasta 256 Ejemplo: Solicitud de Autorización Registrada
**URL_Request** Sí Url del formulario de pago URL https://forms.todopago.com.ar/formulario/commands?command=formulario&m=t7d3938c9-f7b1-4ee9-e76b-9cc84f73fe81
**RequestKey** No Identificador Privado del Requerimiento obtenido en la respuesta de la operación SendAuthorizeRequest. Nunca debe ser expuesto hacia el Web Browser. Solo será utilizado entre el ecommerce y TodoPago Alfanumérico hasta 48 caracteres 8496472a-8c87-e35b-dcf2-94d5e31eb12f
**PublicRequestKey** No Identificador Público del Requerimiento obenido en la respuesta de la operación SendAuthorizeRequest Alfanumérico de hasta 48 caracteres t7d3938c9-f7b1-4ee9-e76b-9cc84f73fe81

Ejemplo de respuesta, (*34)

    array (size=5)
    'StatusCode' => int -1
    'StatusMessage' => string 'Solicitud de Autorizacion Registrada' (length=36)
    'URL_Request' => string 'https://developers.todopago.com.ar/formulario/commands?command=formulario&m=t7d3938c9-f7b1-4ee9-e76b-9cc84f73fe81' (length=102)
    'RequestKey' => string '8496472a-8c87-e35b-dcf2-94d5e31eb12f' (length=36)
    'PublicRequestKey' => string 't7d3938c9-f7b1-4ee9-e76b-9cc84f73fe81' (length=37)

La url_request es donde está hosteado el formulario de pago y donde hay que redireccionar al usuario, una vez realizado el pago según el éxito o fracaso del mismo, el formulario redireccionará a una de las 2 URLs seteadas en $optionsSAR_comercio (URL_OK, en caso de éxito o URL_ERROR, en caso de que por algún motivo el formulario rechace el pago), (*35)

Si, por ejemplo, se pasa mal el MerchantID se obtendrá la siguiente respuesta:, (*36)

array (size=2)
  'StatusCode' => int 702
  'StatusMessage' => string 'ERROR: Cuenta de vendedor invalida' (length=27)

, (*37)

Datos adicionales para control de fraude

Los datos adicionales para control de fraude son obligatorios para la operatoria con TodoPago., (*38)

Parámetros Generales:, (*39)

Parámetro Requerido Descripción Descripción Valores posibles
CSBTCITY Sí Ciudad de facturación Alfanumérico de 50 caracteres. Ejemplo: Villa General Belgrano
CSBTCOUNTRY Sí País de facturación Alfanumérico de 2 caracteres. Código ISO
CSBTCUSTOMERID Si Identificador del usuario al que se le emite la factura. No puede contener un correo electrónico Alfanumérico de 50 caracteres. Ejemplos: A.Carlos 453458
CSBTIPADDRESS Sí IP de la PC del comprador Alfanumérico de 15 caracteres. Ejemplo: 10.1.27.63
CSBTEMAIL Si Mail del usuario al que se le emite la factura Alfanumérico de 100 caracteres. Ejemplo: todopago@hotmail.com
CSBTFIRSTNAME Si Nombre del usuario al que se le emite la factura Alfanumérico de 60 caracteres. Ejemplo: Juan
CSBTLASTNAME Si Apellido del usuario al que se le emite la factura Alfanumérico de 60 caracteres. Ejemplo: Perez
CSBTPHONENUMBER Si Teléfono del usuario al que se le emite la factura. No utilizar guiones, puntos o espacios. Incluir código de país Alfanumérico de 15 caracteres. Ejemplo: 541160913988
CSBTPOSTALCODE Si Código Postal de la dirección de facturación Alfanumérico de 10 caracteres. Ejemplo: C1010AAP ó 1010
CSBTSTATE Si Provincia de la dirección de facturación Alfanumérico de 2 caracteres. Ver Provincias Ejemplo: Enviar C si corresponde a CABA
CSBTSTREET1 Si Domicilio de facturación (Calle Numero interior Numero Exterior) Alfanumérico de 60 caracteres. Ejemplo: Cerrito 740 piso 8
CSBTSTREET2 No Localidad Alfanumérico de 60 caracteres. Ejemplo: CABA
CSPTCURRENCY Si Moneda Alfanumérico de 5 caracteres. Ejemplo: ARS
CSPTGRANDTOTALAMOUNT Si "999999.CC" Con decimales obligatorios, usando el puntos como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. Numérico de 15 posiciones Ejemplos: $125,38 -> 125.38 $12 -> 12.00
CSMDD6 No Canal de venta Alfanumérico de 255 caracteres. Valores posibles: Web, Mobile, Telefonica
CSMDD7 No Cantidad de días que está registrado el cliente en el sitio del comercio. Alfanumérico de 255 caracteres. Ejemplo: 178
CSMDD8 No Para indicar si el usuario está comprando como invitado en la página del comercio. En caso de ser "S", el campo CSMDD9 no deberá enviarse. Valor Booleano Valores posibles (S/N)
CSMDD9 No Valor del password del usuario registrado en el portal del comercio. Incluir el valor en hash Alfanumérico de 255 caracteres. Ejemplo: "4ac1503de8c50a81213f2d5bac49628b"
CSMDD10 No Cantidad de transacciones realizadas por el mismo usuario registrado en el portal del comercio (Num transacciones) Alfanumérico de 255 caracteres. Ejemplo: 5
CSMDD11 No Celular del cliente Alfanumérico de 255 caracteres. Ejemplo: "1155001122"

Parámetros del vertical "Retail":, (*40)

Parámetro Requerido Descripción Descripción Valores posibles
CSSTCITY Si Ciudad de envío de la orden Alfanumérico de 50 caracteres Ejemplo: "Capital Federal"
CSSTCOUNTRY Si País de envío de la orden Alfanumérico de 2 caracteres Código ISO
CSSTEMAIL Si Correo electrónico del comprador Alfanumérico de 100 caracteres Ejemplo: "mail@empresa.com"
CSSTFIRSTNAME Si Nombre de la persona que recibe el producto Alfanumérico de 60 caracteres Ejemplo: "Juan"
CSSTLASTNAME Si Apellido de la persona que recibe el producto Alfanumérico de 60 caracteres Ejemplo: "Pérez"
CSSTPHONENUMBER Si Número de teléfono del destinatario Alfanumérico de 15 caracteres Ejemplo: "45004500"
CSSTPOSTALCODE Si Código postal del domicilio de envío Alfanumérico de 10 caracteres Ejemplos: "C1006DRW", "C1006" "1006"
CSSTSTATE Si Provincia de envío Alfanumérico de 2 caracteres Es un carácter. Ver Provincias
CSSTSTREET1 Si Domicilio de envío Alfanumérico de 60 caracteres Ejemplo: "Cerrito 740"
CSSTSTREET2 No Datos adicionales del domicilio del envío Alfanumérico de 60 caracteres Ejemplo: "Piso 7"
CSMDD12 No Cantidad de días que tiene el comercio para hacer la entrega Alfanumérico de 255 caracteres Ejemplo: 10
CSMDD13 No Método de Despacho Alfanumérico de 255 caracteres Valores posibles: storepickup, deliverypropio, deliverycarrier
Notas: deliverypropio: envío realizado con operador logístico propio. deliverycarrier: envío realizado con operador logístico tercerizado (ej. Andreani).
CSMDD14 No Valor booleano para identificar si el cliente requiere un comprobante fiscal o no S / N Valor Booleano S/N
CSMDD15 No CustomerLoyalityNumber - número de cliente frecuente Alfanumérico de 255 caracteres Ejemplo: "789875"
CSMDD16 No Promotional / CouponCode - número de cupón de descuento Alfanumérico de 255 caracteres Ejemplo: "PROMO30"

Datos a enviar por cada producto, los valores deben estar separados con "#":, (*41)

Parámetro Requerido Descripción Descripción Valores posibles
CSITPRODUCTCODE Condicional Categoria del producto Alfanumérico de 255 caracteres Valor por defecto: default
CSITPRODUCTDESCRIPTION Condicional Descripción del producto Alfanumérico de 255 caracteres NOTEBOOK L845 SP4304LA DF TOSHIBA 4GB RAM 233 MHZ
CSITPRODUCTNAME Condicional Nombre del producto Alfanumérico de 255 caracteres NOTEBOOK L845 SP4304LA DF TOSHIBA
CSITPRODUCTSKU Condicional Código identificador del producto Alfanumérico de 255 caracteres Ejemplo: LEVJNSL36GN
CSITTOTALAMOUNT Condicional CSITTOTALAMOUNT = CSITUNITPRICE * CSITQUANTITY "999999.CC" Es mandatorio informar los decimales, usando el punto como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. Numérico Ejemplos: $125,38 -> 125.38 $12 -> 12.00
CSITQUANTITY Condicional Cantidad del producto Numérico Ejemplo: 1
CSITUNITPRICE Condicional "999999.CC" Es mandatorio informar los decimales, usando el punto como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. Numérico Ejemplos: $125,38 -> 125.38 $12 -> 12.00
$optionsSAR_operacion = array(
    ...........................................................................
    'CSBTCITY'=>'Villa General Belgrano', //Ciudad de facturación, REQUERIDO.
    'CSBTCOUNTRY'=>'AR', //País de facturación. REQUERIDO. Código ISO.
    'CSBTCUSTOMERID'=>'453458', //Identificador del usuario al que se le emite la factura. REQUERIDO. No puede contener un correo electrónico.
    'CSBTIPADDRESS'=>'192.0.0.4', //IP de la PC del comprador. REQUERIDO.
    'CSBTEMAIL'=>'decidir@hotmail.com', //Mail del usuario al que se le emite la factura. REQUERIDO.
    'CSBTFIRSTNAME'=>'Juan' ,//Nombre del usuario al que se le emite la factura. REQUERIDO.
    'CSBTLASTNAME'=>'Perez', //Apellido del usuario al que se le emite la factura. REQUERIDO.
    'CSBTPHONENUMBER'=>'541160913988', //Teléfono del usuario al que se le emite la factura. No utilizar guiones, puntos o espacios. Incluir código de país. REQUERIDO.
    'CSBTPOSTALCODE'=>' C1010AAP', //Código Postal de la dirección de facturación. REQUERIDO.
    'CSBTSTATE'=>'B', //Provincia de la dirección de facturación. REQUERIDO. Ver tabla anexa de provincias.
    'CSBTSTREET1'=>'Cerrito 740', //Domicilio de facturación (calle y nro). REQUERIDO.
    'CSBTSTREET2'=>'Piso 8', //Complemento del domicilio. (piso, departamento). OPCIONAL.
    'CSPTCURRENCY'=>'ARS', //Moneda. REQUERIDO.
    'CSPTGRANDTOTALAMOUNT'=>'125.38', //Con decimales opcional usando el punto como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. REQUERIDO. (Ejemplos:$125,38-> 125.38 $12-> 12 o 12.00)
    'CSMDD7'=>'', // Fecha registro comprador(num Dias). OPCIONAL.
    'CSMDD8'=>'Y', //Usuario Guest? (Y/N). En caso de ser Y, el campo CSMDD9 no deberá enviarse. OPCIONAL.
    'CSMDD9'=>'', //Customer password Hash: criptograma asociado al password del comprador final. OPCIONAL.
    'CSMDD10'=>'', //Histórica de compras del comprador (Num transacciones). OPCIONAL.
    'CSMDD11'=>'', //Customer Cell Phone. OPCIONAL.
    'CSSTCITY'=>'rosario', //Ciudad de envío de la orden. REQUERIDO.
    'CSSTCOUNTRY'=>'', //País de envío de la orden. REQUERIDO.
    'CSSTEMAIL'=>'jose@gmail.com', //Mail del destinatario, REQUERIDO.
    'CSSTFIRSTNAME'=>'Jose', //Nombre del destinatario. REQUERIDO.
    'CSSTLASTNAME'=>'Perez', //Apellido del destinatario. REQUERIDO.
    'CSSTPHONENUMBER'=>'541155893737', //Número de teléfono del destinatario. REQUERIDO.
    'CSSTPOSTALCODE'=>'1414', //Código postal del domicilio de envío. REQUERIDO.
    'CSSTSTATE'=>'D', //Provincia de envío. REQUERIDO. Son de 1 caracter
    'CSSTSTREET1'=>'San Martín 123', //Domicilio de envío. REQUERIDO.
    'CSMDD12'=>'',//Shipping DeadLine (Num Dias). NO REQUERIDO.
    'CSMDD13'=>'',//Método de Despacho. NO REQUERIDO.
    'CSMDD14'=>'',//Customer requires Tax Bill ? (Y/N). NO REQUERIDO.
    'CSMDD15'=>'',//Customer Loyality Number. NO REQUERIDO.
    'CSMDD16'=>'',//Promotional / Coupon Code. NO REQUERIDO.
    //Retail: datos a enviar por cada producto, los valores deben estar separados con #:
    'CSITPRODUCTCODE'=>'electronic_good', //Código de producto. REQUERIDO. Valores posibles(adult_content;coupon;default;electronic_good;electronic_software;gift_certificate;handling_only;service;shipping_and_handling;shipping_only;subscription)
    'CSITPRODUCTDESCRIPTION'=>'NOTEBOOK L845 SP4304LA DF TOSHIBA', //Descripción del producto. REQUERIDO.
    'CSITPRODUCTNAME'=>'NOTEBOOK L845 SP4304LA DF TOSHIBA', //Nombre del producto. REQUERIDO.
    'CSITPRODUCTSKU'=>'LEVJNSL36GN', //Código identificador del producto. REQUERIDO.
    'CSITTOTALAMOUNT'=>'1254.40', //CSITTOTALAMOUNT=CSITUNITPRICE*CSITQUANTITY "999999[.CC]" Con decimales opcional usando el punto como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. REQUERIDO.
    'CSITQUANTITY'=>'1', //Cantidad del producto. REQUERIDO.
    'CSITUNITPRICE'=>'1254.40', //Formato Idem CSITTOTALAMOUNT. REQUERIDO.
    ...........................................................

Volver a inicio
, (*42)

, (*43)

Opciones adicionales

Dentro del parámetro $optionsSAR_operacion pueden enviarse opciones adicionales que habilitan características para esa transacción en particular. A continuación se describen las mismas, (*44)

, (*45)

Rango de Cuotas

Es posible setear el rango de cuotas a mostrar en el formulario entre un mínimo y un máximo, enviando los siguientes parametros adicionales, (*46)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
MININSTALLMENTS No Mínimo de cuotas a mostrar en el formulario Numérico 3
MAXINSTALLMENTS No Máximo de cuotas a mostrar en el formulario Numérico 9
Ejemplo
$optionsSAR_operacion = array (
...................................
    'MININSTALLMENTS'=>3,
    'MAXINSTALLMENTS'=>6,
...................................

, (*47)

Filtrado de Medios de Pago

Mediante esta funcionalidad es posible filtrar los medios de pago habilitados en el formulario de pago. Se debe pasar en la llamada al servicio SendAuthorizeRequest un parámetro adicional con los ids de los medio de pago que se desean habilitar, los cuales pueden consultarse mediante el método de Descubrimiento de Medios de Pago, (*48)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
AVAILABLEPAYMENTMETHODSIDS No Lista de los ids de medios de pago habilitados separados por # Alfanumérico 1#42#500
Ejemplo
$optionsSAR_operacion = array (
...................................
    'AVAILABLEPAYMENTMETHODSIDS'=>"1#42#500",
...................................

Volver a inicio
, (*49)

, (*50)

Tiempo de vida de la transacción

Es posible setear el tiempo máximo disponible para que el cliente complete el pago en el formulario, el valor por defecto es de 30 minutos. El rango posible es de 5 minutos a 6 horas. Los valores deben ser expresados en milisegundos, (*51)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
TIMEOUT No Tiempo de vida de la transacción en milisegundos Numérico 1800000
Ejemplo
$optionsSAR_operacion = array (
...................................
    'TIMEOUT'=> 10*60*1000, // 10 minutos
...................................

Volver a inicio, (*52)

, (*53)

Confirmación de transacción.

En este caso hay que llamar a getAuthorizeAnswer(), enviando como parámetro un array como se describe a continuación., (*54)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
Security No Token de Seguridad Generado en el Portal de TodoPago Alfanumérico hasta 32 caracteres 1234567890ABCDEF1234567890ABCDEF
Merchant Si Nro. de Comercio (Merchant ID) provisto por TodoPago Alfanumérico de 8 caracteres 12345678
RequestKey Si Identificador Privado del Requerimiento obtenido en la respuesta de la operación SendAuthorizeRequest . Nunca debe ser expuesto hacia el Web Browser. Solo será utilizado entre el ecommerce y TodoPago Alfanumérico hasta 48 caracteres 8496472a-8c87-e35b-dcf2-94d5e31eb12f
AnswerKey Sí Identificador Público de la Respuesta. Recibido según el formulario utilizado, en la url de redirección hacia el ecommerce, o como propiedad retornada en el callback del formulario híbrido. Alfanumérico hasta 48 caracteres 8496472a-8c87-e35b-dcf2-94d5e31eb12f

., (*55)

Ejemplo:, (*56)

$optionsQuery = array (
        'Security'   => '1234567890ABCDEF1234567890ABCDEF', // Token de seguridad, provisto por TODO PAGO.
        'Merchant'   => '12345678',
        'RequestKey' => '0123-1234-2345-3456-4567-5678-6789',
        'AnswerKey'  => '1111-2222-3333-4444-5555-6666-7777' // *Importante
);

Se deben guardar y recuperar los valores de los campos RequestKey y AnswerKey., (*57)

El parámetro RequestKey es siempre distinto y debe ser persistido de alguna forma cuando el comprador es redirigido al formulario de pagos., (*58)

Importante El campo AnswerKey se adiciona en la redirección que se realiza a alguna de las direcciones ( URL ) epecificadas en el servicio SendAurhorizationRequest, esto sucede cuando la transacción ya fue resuelta y es necesario regresar al site para finalizar la transacción de pago, también se adiciona el campo Order, el cual tendrá el contenido enviado en el campo OPERATIONID. Para nuestro ejemplo: http://susitio.com/paydtodopago/ok?Order=27398173292187&Answer=1111-2222-3333-4444-5555-6666-7777, (*59)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
**StatusCode** Si Código de estado o valor de retorno del Servicio Numèrico de 5 posiciones -1 -> OK
0 a 99999 o vacío -> error
**StatusMessage** Si Descripción del código de retorno o estado del servicio Alfanumérico hasta 256 Ejemplo: "APROBADA"
**AuthorizationKey** No Identificador Privado de la Respuesta Alfanumérico hasta 256 caracteres Ejemplo: "9c2f0109-e585-0776-d3d0-f934ed50ccd4"
**EncodingMethod** No Especifica el tipo codificación que se usa para los datos de la transacciones de pagos Alfanumérico hasta 16 caracteres XML
**Payload** No Documento codificado en el formato especificado en el campo EncodingMethod el cual contiene los datos de la transacción ejecutada Alfanumérico hasta 2048 caracteres -

., (*60)

El campo o elemento Payload es utilizado para retornar los datos de la respuesta de la transacción. En la siguiente Tabla se muestran los valores enviados en el campo Answer de dicho elemento. (El otro campo presente, de nombre Request contiene información enviada en el requerimiento del GetAuthorizeAnswer), (*61)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
**DATETIME** Si Fecha y Hora de la Transacción Fecha y Hora. aaaammddTHHMMSSZ La hora se expresa en formato 24 hs. Ejemplo: "2017-07-28T15:54:14Z"
**RESULTCODE** Si Código de estado o valor de retorno del Servicio Numérico de 5 posiciones -1 -> OK
0 a 99999 o vacío -> error
**RESULTMESSAGE** Si Descripción del código de retorno o estado del servicio Alfanumérico hasta 256 Ejemplo: "APROBADA"
**CURRENCYNAME** No Nombre de la Moneda Alfanumérico Ejemplo: "Peso Argentino"
**PAYMENTMETHODNAME** Sí Medio de pago usado para la operación Alfanumérico Ejemplo: "VISA"
**TICKETNUMBER** No Número de Ticket o Voucher Numérico de Hasta 4 dígitos Ejemplo: 7057
**CARDNUMBERVISIBLE** No Número de Tarjeta, enmascarado según normativas nacionales, regionales o globales Ejemplo: "450799XXXXXX0010"
**AUTHORIZATIONCODE** No Código de Autorización Alfanumérico de hasta 8 caracteres Ejemplo: "014158"
**INSTALLMENTPAYMENTS** No Cantidad de cuotas elegidas para la operación Numérico Ejemplo: 03
**AMOUNTBUYER** Si Monto final (incluyendo Costo Financiero) pagado por el comprador Decimal Ejemplo: 129.68
**CFT** Si CFT de la promoción aplicada. Decimal Ejemplo: 0.00
**TEA** Si TEA de la promoción aplicada. Decimal Ejemplo: 22.00

., (*62)

** Ejemplo de respuesta **, (*63)

array(
  'StatusCode'       => -1,
  'StatusMessage'    => 'APROBADA',
  'AuthorizationKey' => '1294-329E-F2FD-1AD8-3614-1218-2693-1378',
  'EncodingMethod'   => 'XML',
  'Payload'          =>
    array (
      'Answer' =>
        array (
          'DATETIME'               => '2014/08/11 15:24:38',
          'RESULTCODE'             => '-1',
          'RESULTMESSAGE'          => 'APROBADA',
          'CURRENCYNAME'           => 'Pesos',
          'PAYMENTMETHODNAME'      => 'VISA',
          'TICKETNUMBER'           => '12',
          'CARDNUMBERVISIBLE'      => '450799******4905',
          'AUTHORIZATIONCODE'      => 'TEST38',
      'INSTALLMENTPAYMENTS'    => '5',
          'CFT'                    => '0.00',
          'TEA'                    => '22.00'     
      ),
      'Request' =>
        array (
          'MERCHANT'               => '12345678',
          'OPERATIONID'            => 'ABCDEF-1234-12221-FDE1-00000012',
          'AMOUNT'                 => '1.00',
          'CURRENCYCODE'           => '032',
      'AMOUNTBUYER'            => '1.10', // Monto final pagado por el usuario
          );

Este método devuelve el resumen de los datos de la transacción., (*64)

Si se pasa mal el AnswerKey o el RequestKey se verá el siguiente rechazo:, (*65)

array (size=2)
  'StatusCode' => int 404
  'StatusMessage' => string 'ERROR: Transaccion Inexistente' (length=30)

, (*66)

Ejemplo

Existe un ejemplo en https://github.com/TodoPago/SDK-PHP/tree/master/resources/ejemplo_simple.php que muestra los resultados de los métodos principales del SDK.
, (*67)

También disponemos de un ejemplo más completo que simula una orden en un e-commerce https://github.com/TodoPago/SDK-PHP/tree/master/resources/ejemplo_completo/index.php
, (*68)

, (*69)

Características

, (*70)

Status de la Operación

estado, (*71)

El SDK cuenta con un método para consultar el status de la transacción de forma on-line, con los siguientes datos:, (*72)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
MERCHANT Sí Código de comercio o cuenta provisto por TodoPago Alfanumérico de 8 caracteres 12345678
OPERATIONID Sí Identificación de la transacción para el Comercio. Debe ser distinto para cada operación. Alfanumérico de 1 a 40 caracteres. 141120084707

El método se utiliza de la siguiente manera:, (*73)

$client = new TodoPago\Sdk($http_header, $mode);
$client->getStatus(array('MERCHANT'=>'305', 'OPERATIONID'=>'01'));// Merchant es el id site y $operation_id es el id operación que se envió en el array a través del método sendAuthorizeRequest()

El siguiente método retornará el status actual de la transacción en Todopago., (*74)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
RESULTCODE Sí Número identificador del estado en el que se encuentra la transacción Numérico Ejemplo: -1
RESULTMESSAGE Sí Describe el estado en el que se encuentra la transacción Alfanumérico Ejemplo: "APROBADA"
DATETIME No 2015-05-13T14:11:38.287+00:00
OPERATIONID Sí Identificación de la transacción para el Comercio. Debe ser distinto para cada operación. Alfanumérico de 1 a 40 caracteres. 141120084707
CURRENCYCODE Sí Código de moneda utilizado en la transacción. Por el momento solo 32 (Pesos) Numérico 32
AMOUNT Sí Importe original en Pesos de la transacción. Numérico con 9 dígitos con hasta 2 decimales 999999[.CC] Usando el punto como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. $125,38 -> 125.38
$12 -> 12.00
AMOUNTBUYER Sí Importe final en Pesos de la transacción. Numérico con 9 dígitos con hasta 2 decimales 999999[.CC] Usando el punto como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. $125,38 -> 125.38
$12 -> 12.00
TYPE Sí Tipo de Operación, en el caso del GetStatus siempre será *compra_online* Alfanumérico compra_online
INSTALLMENTPAYMENTS No Código de autorización generado por el medio de pago Decimal de hasta dos dígitos. 01, 02, 06, 12, etc.
CUSTOMEREMAIL Sí Mail del usuario al que se le emite la factura Alfanumérico de 100 caracteres. Ejemplo: cosme@fulanito.com
IDENTIFICATIONTYPE No Tipo de documento DNI
CI
LE
LC
IDENTIFICATION No Número de documento Numérico Ejemplo: 1987234
CARDNUMBER No Número de Tarjeta, enmascarado según normativas nacionales alfanumérico de 20 caracteres Ejemplo: "450799XXXXXX0010"
TITULAR No Nombre del titular de la tarjeta. Alfanumérico Ejemplo: "Juan Pérez"
NROTICKET No Número de Ticket o Voucher Numérico de Hasta 4 dígitos Ejemplo: 7509

Ejemplo de Respuesta, (*75)

array (size=1)
  'Operations' =>
    array (size=19)
      'RESULTCODE' => string '999' (length=3)
      'RESULTMESSAGE' => string 'RECHAZADA' (length=9)
      'DATETIME' => string '2015-05-13T14:11:38.287+00:00' (length=29)
      'OPERATIONID' => string '01' (length=2)
      'CURRENCYCODE' => string '32' (length=2)
      'AMOUNT' => int 54
      'AMOUNTBUYER' => string '67.30' (length=5)
      'TYPE' => string 'compra_online' (length=13)
      'INSTALLMENTPAYMENTS' => string '4' (length=1)
      'CUSTOMEREMAIL' => string 'cosme@fulanito.com' (length=18)
      'IDENTIFICATIONTYPE' => string 'DNI' (length=3)
      'IDENTIFICATION' => string '1212121212' (length=10)
      'CARDNUMBER' => string '12121212XXXXXX1212' (length=18)
      'CARDHOLDERNAME' => string 'Cosme Fulanito' (length=14)
      'TICKETNUMBER' => int 0
      'AUTHORIZATIONCODE' => null
      'BARCODE' => null
      'COUPONEXPDATE' => null
      'COUPONSECEXPDATE' => null
      'COUPONSUBSCRIBER' => null

Además, se puede conocer el estado de las transacciones a través del portal www.todopago.com.ar. Desde el portal se verán los estados "Aprobada" y "Rechazada". Si el método de pago elegido por el comprador fue Pago Fácil o RapiPago, se podrán ver en estado "Pendiente" hasta que el mismo sea pagado., (*76)

, (*77)

Consulta de operaciones por rango de tiempo

En este caso hay que llamar a getByRangeDateTime() y devolverá todas las operaciones realizadas en el rango de fechas dado, (*78)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
MERCHANT Sí Nro identificador del comercio numérico 12305
STARTDATE Sí Fecha y hora desde date date("Y-m-d", time()-606024*30)
ENDDATE Sí Fecha y hora hasta date date("Y-m-d", time())
PAGENUMBER Sí Número de página a la que se desea acceder* entero 2

* Este método devuelve páginas de 5 transacciones, por medio del campo PAGENUMBER se puede indicar a que página se desea acceder., (*79)

$client = new TodoPago\Sdk($http_header, $mode);

//Fecha en formato "Y-m-d"
$date1 = date("Y-m-d", time()-60*60*24*30);
$date2 = date("Y-m-d", time());

$client->getByRangeDateTime(array('MERCHANT'=>'12305', "STARTDATE" => $date1, "ENDDATE" => $date2, "PAGENUMBER" => 1));

La respuesta será similar al GetStatus, pero con hasta 5 operaciones., (*80)

, (*81)

Descubrimiento de Medios de Pago

medios de pago, (*82)

La SDK cuenta con un método para obtener todos los medios de pago habilitados en TodoPago., (*83)

$client = new TodoPago\Sdk($http_header, $mode);
$rta = $client->discoverPaymentMethods();

, (*84)

Devolución

devolucion parcial, (*85)

El SDK dispone de métodos para realizar la devolución, de una transacción realizada a traves de TodoPago., (*86)

Se debe llamar al método voidRequest de la siguiente manera:, (*87)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
Security Sí API Key del comercio asignada por TodoPago alfanumérico 837BE68A892F06C17B944F344AEE8F5F
Merchant Sí Nro de comercio asignado por TodoPago numérico 12345
RequestKey No* RequestKey devuelto como respuesta del servicio SendAutorizeRequest alfanumérico 6d2589f2-37e6-1334-7565-3dc19404480c
AuthorizationKey No* AuthorizationKey devuelto como respuesta del servicio GetAuthorizeAnswer alfanumérico 4a2569a2-38e6-4589-1564-4480c3dc1940

*Es requerida la presencia de sólo uno de estos 2 campos, (*88)

Ejemplo:, (*89)


$options = array( "Security" => "837BE68A892F06C17B944F344AEE8F5F", // API Key del comercio asignada por TodoPago "Merchant" => "12345", // Merchant o Nro de comercio asignado por TodoPago "RequestKey" => "6d2589f2-37e6-1334-7565-3dc19404480c" // RequestKey devuelto como respuesta del servicio SendAutorizeRequest ); $resp = $todopago->voidRequest($options);

También se puede llamar al método voidRequest de esta otra manera:, (*90)


$options = array( "Security" => "837BE68A892F06C17B944F344AEE8F5F", // API Key del comercio asignada por TodoPago "Merchant" => "35", // Merchant o Nro de comercio asignado por TodoPago "AuthorizationKey" => "6d2589f2-37e6-1334-7565-3dc19404480c" // AuthorizationKey devuelto como respuesta del servicio GetAuthorizeAnswer ); $resp = $todopago->voidRequest($options);

Respuesta del servicio:, (*91)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
StatusCode Sí Número de identificación del motivo del resultado Numérico 2011
StatusMessage Sí Resultado de la devolución Alfanumérico Operación realizada correctamente

Si la operación fue realizada correctamente se informará con un código 2011 y un mensaje indicando el éxito de la operación., (*92)

array(
    "StatusCode" => 2011,
    "StatusMessage" => "Operación realizada correctamente",
);

, (*93)

Devolución parcial

devolucion parcial, (*94)

El SDK dispone de métodos para realizar la devolución parcial, de una transacción realizada a traves de TodoPago., (*95)

Nota: Para el caso de promociones con costo financiero, se deberá enviar el monto a devolver en base al valor original de la transacción y no del monto finalmente cobrado. TodoPago se encargará de devolver el porcentaje del costo financiero correspondiente a la devolución parcial., (*96)

Se debe llamar al método returnRequest de la siguiente manera:, (*97)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
Security Sí API Key del comercio asignada por TodoPago alfanumérico 837BE68A892F06C17B944F344AEE8F5F
Merchant Sí Nro de comercio asignado por TodoPago numérico 12345
RequestKey No* RequestKey devuelto como respuesta del servicio SendAutorizeRequest alfanumérico 6d2589f2-37e6-1334-7565-3dc19404480c
AuthorizationKey No* AuthorizationKey devuelto como respuesta del servicio GetAuthorizeAnswer alfanumérico 4a2569a2-38e6-4589-1564-4480c3dc1940
AMOUNT No Monto a devolver, si no se envía, se trata de una devolución total string usando . como separador decimal, incluyendo SIEMPRE 2 cifras decimales 23.50

*Es requerida la presencia de sólo uno de estos 2 campos, (*98)

Ejemplo:, (*99)


$options = array( "Security" => "837BE68A892F06C17B944F344AEE8F5F", // API Key del comercio asignada por TodoPago "Merchant" => "35", // Merchant o Nro de comercio asignado por TodoPago "RequestKey" => "6d2589f2-37e6-1334-7565-3dc19404480c" // RequestKey devuelto como respuesta del servicio SendAutorizeRequest "AMOUNT" => "23.50" // Opcional. Monto a devolver, si no se envía, se trata de una devolución total ); $resp = $todopago->returnRequest($options);

También se puede llamar al método returnRequest de esta otra manera:, (*100)


$options = array( "Security" => "837BE68A892F06C17B944F344AEE8F5F", // API Key del comercio asignada por TodoPago "Merchant" => "35", // Merchant o Nro de comercio asignado por TodoPago "AuthorizationKey" => "6d2589f2-37e6-1334-7565-3dc19404480c" // AuthorizationKey devuelto como respuesta del servicio GetAuthorizeAnswer "AMOUNT" => "23.50" // Opcional. Monto a devolver, si no se envía, se trata de una devolución total ); $resp = $todopago->returnRequest($options);

Respuesta de servicio:, (*101)

Campo Requerido Descripción Tipo de Dato Valores posibles / Ejemplo
StatusCode Sí Número de identificación del motivo del resultado Numérico 2011
StatusMessage Sí Resultado de la devolución Alfanumérico Operación realizada correctamente

Si la operación fue realizada correctamente se informará con un código 2011 y un mensaje indicando el éxito de la operación., (*102)

array(
    "StatusCode" => 2011,
    "StatusMessage" => "Operación realizada correctamente",
);


, (*103)

Formulario híbrido

Conceptos básicos
El formulario híbrido es una alternativa al medio de pago actual por redirección al formulario externo de TodoPago.
Con el mismo, se busca que el comercio pueda adecuar el look and feel del formulario a su propio diseño., (*104)

Librería
El formulario requiere incluir en la página una librería Javascript de TodoPago.
El endpoint depende del entorno: + Desarrollo: https://developers.todopago.com.ar/resources/v2/TPBSAForm.min.js + Produccion: https://forms.todopago.com.ar/resources/v2/TPBSAForm.min.js, (*105)

También se provee un método en el SDK para obtener el endpoint de la librería Javascript:, (*106)

$sdk = new \TodoPago\Sdk($http_header, $mode);
$js = $sdk->getEndpointForm();

Restricciones y libertades en la implementación, (*107)

  • Por ningún motivo podrá bajarse el javascript provisto ni realizar cambios en el mismo. Siempre deberá ser tomado de los servidores de TodoPago.
  • Ninguno de los campos del formulario podrá contar con el atributo name.
  • Se deberá proveer de manera obligatoria un botón para gestionar el pago con Billetera Todo Pago.
  • Todos los elementos de tipo
  • Los campos tienen un id por defecto. Si se prefiere utilizar otros ids se deberán especificar los mismos cuando se inicialice el script de Todo Pago.
  • Pueden aplicarse todos los detalles visuales que se crean necesarios, la API de Todo Pago no altera los atributos class y style.
  • Puede utilizarse la API para setear los atributos placeholder del formulario, para ello deberá especificar dichos placeholders en la inicialización del formulario "window.TPFORMAPI.hybridForm.setItem". En caso de que no se especifiquen los placeholders se usarán los valores por defecto de la API.

HTML del formulario, (*108)

El formulario implementado debe contar al menos con los siguientes campos., (*109)

<body>
    <select id="formaDePagoCbx"></select>
    <select id="bancoCbx"></select>
    <select id="promosCbx"></select>

    <!-- Para los casos en el que el comercio opera con PEI -->
        <label id="labelPeiCheckboxId"></label>
        <input id="peiCbx"/>
    <!-- -->
    <label id="labelPromotionTextId"></label>
    <input id="numeroTarjetaTxt"/>
    <input id="mesTxt"/>
    <input id="anioTxt"/>
    <input id="codigoSeguridadTxt"/>
    <label id="labelCodSegTextId"></label>
    <input id="apynTxt"/>
    <select id="tipoDocCbx"></select>
    <input id="nroDocTxt"/>
    <input id="emailTxt"/><br/>

    <!-- Para los casos en el que el comercio opera con PEI -->
        <label id="labelPeiTokenTextId"></label>
        <input id="peiTokenTxt"/>
    <!-- -->

        <button id="MY_btnPagarConBilletera"/>
    <button id="MY_btnConfirmarPago"/>
</body>

Inizialización y parametros requeridos
Para inicializar el formulario se usa window.TPFORMAPI.hybridForm.initForm. El cual permite setear los elementos e ids requeridos., (*110)

Para inicializar un ítem de pago, es necesario llamar a window.TPFORMAPI.hybridForm.setItem. Éste requiere obligatoriamente el parámetro publicKey que corresponde al PublicRequestKey (entregado por el SAR). Se sugiere agregar los parámetros usuario, e-mail, tipo de documento y número., (*111)

Javascript, (*112)

window.TPFORMAPI.hybridForm.initForm({
    callbackValidationErrorFunction: 'validationCollector',
    callbackCustomSuccessFunction: 'customPaymentSuccessResponse',
    callbackCustomErrorFunction: 'customPaymentErrorResponse',
        callbackBilleteraFunction: 'billeteraPaymentResponse',
    botonPagarId: 'MY_btnConfirmarPago',
    modalCssClass: 'modal-class',
    modalContentCssClass: 'modal-content',
    beforeRequest: 'initLoading',
    afterRequest: 'stopLoading'
});

window.TPFORMAPI.hybridForm.setItem({
    publicKey: 'taf08222e-7b32-63d4-d0a6-5cabedrb5782', //obligatorio
    defaultNombreApellido: 'Usuario',
    defaultNumeroDoc: 20234211,
    defaultMail: 'todopago@mail.com',
    defaultTipoDoc: 'DNI'
});

//callbacks de respuesta del pago
function validationCollector(parametros) {
}
function billeteraPaymentResponse(response) {
}
function customPaymentSuccessResponse(response) {
}
function customPaymentErrorResponse(response) {
}
function initLoading() {
}
function stopLoading() {
}

Callbacks
El formulario define callbacks javascript, que son llamados según el estado y la información del pago realizado: + billeteraPaymentResponse: Devuelve response si el pago se realizó con Billetera. + customPaymentSuccessResponse: Devuelve response si el pago se realizó correctamente. + customPaymentErrorResponse: Si hubo algun error durante el proceso de pago, este devuelve el response con el código y mensaje correspondiente., (*113)

Ejemplo de Implementación: Formulario híbrido, (*114)

Volver a inicio, (*115)

, (*116)

Obtener credenciales

credenciales, (*117)

El SDK permite obtener las credenciales "Authentification", "MerchandId" y "Security" de la cuenta de Todo Pago, ingresando el usuario y contraseña.
Esta funcionalidad es útil para obtener los parámetros de configuración dentro de la implementación., (*118)

  • Crear una instancia de la clase User:

$http_header = array(); $connector = new Sdk($http_header, "test");//instanciar SDK $datosUsuario = array( "user" => "usuario@todopago.com.ar", "password" => "contraseña" ); $credenciales = new TodoPago\Data\User($datosUsuario);

Tambien se puede pasar los datos de usuario de la siguiente manera:, (*119)

$credenciales = new TodoPago\Data\User("usuario@todopago.com.ar", "contraseña");
$credenciales = new TodoPago\Data\User();
$credenciales->setUser("usuario@todopago.com.ar");
$credenciales->setPassword("contraseña");
  • Obtener respuesta de servicio:
$rta = $connector->getCredentials($credenciales);
$rta->getMerchant();
$rta->getApikey();

Observación: El Security se obtiene a partir de apiKey, eliminando TODOPAGO de este último., (*120)

Volver a inicio
, (*121)

, (*122)

Tablas de Referencia

Provincias

Los siguientes códigos son utilizados para control de fraude y para el cálculo de retenciones del Impuesto sobre los Ingresos Brutos., (*123)

Provincia Código
CABA C
Buenos Aires B
Catamarca K
Chaco H
Chubut U
Córdoba X
Corrientes W
Entre Ríos E
Formosa P
Jujuy Y
La Pampa L
La Rioja F
Mendoza M
Misiones N
Neuquén Q
Río Negro R
Salta A
San Juan J
San Luis D
Santa Cruz Z
Santa Fe S
Santiago del Estero G
Tierra del Fuego V
Tucumán T

Volver a inicio, (*124)

, (*125)

Tabla de errores operativos

Id mensaje Mensaje
-1 Tu compra fue exitosa.
1081 Tu saldo es insuficiente para realizar la transacción.
1100 El monto ingresado es menor al mínimo permitido
1101 El monto ingresado supera el máximo permitido.
1102 La tarjeta ingresada no corresponde al Banco indicado. Revisalo.
1104 El precio ingresado supera al máximo permitido.
1105 El precio ingresado es menor al mínimo permitido.
2010 En este momento la operación no pudo ser realizada. Por favor intentá más tarde. Volver a Resumen.
2031 En este momento la validación no pudo ser realizada, por favor intentá más tarde.
2050 Lo sentimos, el botón de pago ya no está disponible. Comunicate con tu vendedor.
2051 La operación no pudo ser procesada. Por favor, comunicate con tu vendedor.
2052 La operación no pudo ser procesada. Por favor, comunicate con tu vendedor.
2053 La operación no pudo ser procesada. Por favor, intentá más tarde. Si el problema persiste comunicate con tu vendedor
2054 Lo sentimos, el producto que querés comprar se encuentra agotado por el momento. Por favor contactate con tu vendedor.
2056 La operación no pudo ser procesada. Por favor intentá más tarde.
2057 La operación no pudo ser procesada. Por favor intentá más tarde.
2059 La operación no pudo ser procesada. Por favor intentá más tarde.
90000 La cuenta destino de los fondos es inválida. Verificá la información ingresada en Mi Perfil.
90001 La cuenta ingresada no pertenece al CUIT/ CUIL registrado.
90002 No pudimos validar tu CUIT/CUIL. Comunicate con nosotros acá para más información.
99005 Tu compra no pudo realizarse. Iniciala nuevamente.
99900 El pago fue realizado exitosamente
99901 No hemos encontrado tarjetas vinculadas a tu Billetera. Podés adherir medios de pago desde www.todopago.com.ar
99902 No se encontro el medio de pago seleccionado
99903 Lo sentimos, hubo un error al procesar la operación. Por favor reintentá más tarde.
99904 Tu compra no puede ser realizada. Comunicate con tu vendedor.
99953 Tu compra no pudo realizarse. Iniciala nuevamente o utilizá otro medio de pago.
99960 Esta compra requiere autorización de VISA. Comunicate al número que se encuentra al dorso de tu tarjeta.
99961 Esta compra requiere autorización de AMEX. Comunicate al número que se encuentra al dorso de tu tarjeta.
99970 Lo sentimos, no pudimos procesar la operación. Por favor reintentá más tarde.
99971 Lo sentimos, no pudimos procesar la operación. Por favor reintentá más tarde.
99978 Lo sentimos, no pudimos procesar la operación. Por favor reintentá más tarde.
99979 Lo sentimos, el pago no pudo ser procesado.
99980 Ya realizaste un pago en este sitio por el mismo importe. Si querés realizarlo nuevamente esperá 5 minutos.
99982 Tu compra no pudo ser procesada. Iniciala nuevamente utilizando otro medio de pago.
99983 Lo sentimos, el medio de pago no permite la cantidad de cuotas ingresadas. Por favor intentá más tarde.
99984 Lo sentimos, el medio de pago seleccionado no opera en cuotas.
99985 Lo sentimos, el pago no pudo ser procesado.
99986 Lo sentimos, en este momento la operación no puede ser realizada. Por favor intentá más tarde.
99987 Lo sentimos, en este momento la operación no puede ser realizada. Por favor intentá más tarde.
99988 Lo sentimos, momentaneamente el medio de pago no se encuentra disponible. Por favor intentá más tarde.
99989 La tarjeta ingresada no está habilitada. Comunicate con la entidad emisora de la tarjeta para verificar el incoveniente.
99990 La tarjeta ingresada está vencida. Por favor seleccioná otra tarjeta o actualizá los datos.
99991 Los datos informados son incorrectos. Por favor ingresalos nuevamente.
99992 La fecha de vencimiento es incorrecta. Por favor seleccioná otro medio de pago o actualizá los datos.
99993 La tarjeta ingresada no está vigente. Por favor seleccioná otra tarjeta o actualizá los datos.
99994 El saldo de tu tarjeta no te permite realizar esta compra. Iniciala nuevamente utilizando otro medio de pago.
99995 La tarjeta ingresada es invalida. Seleccioná otra tarjeta para realizar el pago.
99996 La operación fué rechazada por el medio de pago porque el monto ingresado es inválido.
99997 Lo sentimos, en este momento la operación no puede ser realizada. Por favor intentá más tarde.
99998 Lo sentimos, la operación fue rechazada. Comunicate con la entidad emisora de la tarjeta para verificar el incoveniente o seleccioná otro medio de pago.
99999 Lo sentimos, la operación no pudo completarse. Comunicate con la entidad emisora de la tarjeta para verificar el incoveniente o seleccioná otro medio de pago.

Volver a inicio, (*126)

, (*127)

Tabla de errores de integración

**Id mensaje** **Descripción**
99977 Transaccion denegada por validador de TP
98001 ERROR: El campo CSBTCITY es requerido
98002 ERROR: El campo CSBTCOUNTRY es requerido
98003 ERROR: El campo CSBTCUSTOMERID es requerido
98004 ERROR: El campo CSBTIPADDRESS es requerido
98005 ERROR: El campo CSBTEMAIL es requerido
98006 ERROR: El campo CSBTFIRSTNAME es requerido
98007 ERROR: El campo CSBTLASTNAME es requerido
98008 ERROR: El campo CSBTPHONENUMBER es requerido
98009 ERROR: El campo CSBTPOSTALCODE es requerido
98010 ERROR: El campo CSBTSTATE es requerido
98011 ERROR: El campo CSBTSTREET1 es requerido
98012 ERROR: El campo CSBTSTREET2 es requerido
98013 ERROR: El campo CSPTCURRENCY es requerido
98014 ERROR: El campo CSPTGRANDTOTALAMOUNT es requerido
98015 ERROR: El campo CSMDD7 es requerido
98016 ERROR: El campo CSMDD8 es requerido
98017 ERROR: El campo CSMDD9 es requerido
98018 ERROR: El campo CSMDD10 es requerido
98019 ERROR: El campo CSMDD11 es requerido
98020 ERROR: El campo CSSTCITY es requerido
98021 ERROR: El campo CSSTCOUNTRY es requerido
98022 ERROR: El campo CSSTEMAIL es requerido
98023 ERROR: El campo CSSTFIRSTNAME es requerido
98024 ERROR: El campo CSSTLASTNAME es requerido
98025 ERROR: El campo CSSTPHONENUMBER es requerido
98026 ERROR: El campo CSSTPOSTALCODE es requerido
98027 ERROR: El campo CSSTSTATE es requerido
98028 ERROR: El campo CSSTSTREET1 es requerido
98029 ERROR: El campo CSMDD12 es requerido
98030 ERROR: El campo CSMDD13 es requerido
98031 ERROR: El campo CSMDD14 es requerido
98032 ERROR: El campo CSMDD15 es requerido
98033 ERROR: El campo CSMDD16 es requerido
98034 ERROR: El campo CSITPRODUCTCODE es requerido
98035 ERROR: El campo CSITPRODUCTDESCRIPTION es requerido
98036 ERROR: El campo CSITPRODUCTNAME es requerido
98037 ERROR: El campo CSITPRODUCTSKU es requerido
98038 ERROR: El campo CSITTOTALAMOUNT es requerido
98039 ERROR: El campo CSITQUANTITY es requerido
98040 ERROR: El campo CSITUNITPRICE es requerido
98101 ERROR: El formato del campo CSBTCITY es incorrecto
98102 ERROR: El formato del campo CSBTCOUNTRY es incorrecto
98103 ERROR: El formato del campo CSBTCUSTOMERID es incorrecto
98104 ERROR: El formato del campo CSBTIPADDRESS es incorrecto
98105 ERROR: El formato del campo CSBTEMAIL es incorrecto
98106 ERROR: El formato del campo CSBTFIRSTNAME es incorrecto
98107 ERROR: El formato del campo CSBTLASTNAME es incorrecto
98108 ERROR: El formato del campo CSBTPHONENUMBER es incorrecto
98109 ERROR: El formato del campo CSBTPOSTALCODE es incorrecto
98110 ERROR: El formato del campo CSBTSTATE es incorrecto
98111 ERROR: El formato del campo CSBTSTREET1 es incorrecto
98112 ERROR: El formato del campo CSBTSTREET2 es incorrecto
98113 ERROR: El formato del campo CSPTCURRENCY es incorrecto
98114 ERROR: El formato del campo CSPTGRANDTOTALAMOUNT es incorrecto
98115 ERROR: El formato del campo CSMDD7 es incorrecto
98116 ERROR: El formato del campo CSMDD8 es incorrecto
98117 ERROR: El formato del campo CSMDD9 es incorrecto
98118 ERROR: El formato del campo CSMDD10 es incorrecto
98119 ERROR: El formato del campo CSMDD11 es incorrecto
98120 ERROR: El formato del campo CSSTCITY es incorrecto
98121 ERROR: El formato del campo CSSTCOUNTRY es incorrecto
98122 ERROR: El formato del campo CSSTEMAIL es incorrecto
98123 ERROR: El formato del campo CSSTFIRSTNAME es incorrecto
98124 ERROR: El formato del campo CSSTLASTNAME es incorrecto
98125 ERROR: El formato del campo CSSTPHONENUMBER es incorrecto
98126 ERROR: El formato del campo CSSTPOSTALCODE es incorrecto
98127 ERROR: El formato del campo CSSTSTATE es incorrecto
98128 ERROR: El formato del campo CSSTSTREET1 es incorrecto
98129 ERROR: El formato del campo CSMDD12 es incorrecto
98130 ERROR: El formato del campo CSMDD13 es incorrecto
98131 ERROR: El formato del campo CSMDD14 es incorrecto
98132 ERROR: El formato del campo CSMDD15 es incorrecto
98133 ERROR: El formato del campo CSMDD16 es incorrecto
98134 ERROR: El formato del campo CSITPRODUCTCODE es incorrecto
98135 ERROR: El formato del campo CSITPRODUCTDESCRIPTION es incorrecto
98136 ERROR: El formato del campo CSITPRODUCTNAME es incorrecto
98137 ERROR: El formato del campo CSITPRODUCTSKU es incorrecto
98138 ERROR: El formato del campo CSITTOTALAMOUNT es incorrecto
98139 ERROR: El formato del campo CSITQUANTITY es incorrecto
98140 ERROR: El formato del campo CSITUNITPRICE es incorrecto
98201 ERROR: Existen errores en la información de los productos
98202 ERROR: Existen errores en la información de CSITPRODUCTDESCRIPTION los productos
98203 ERROR: Existen errores en la información de CSITPRODUCTNAME los productos
98204 ERROR: Existen errores en la información de CSITPRODUCTSKU los productos
98205 ERROR: Existen errores en la información de CSITTOTALAMOUNT los productos
98206 ERROR: Existen errores en la información de CSITQUANTITY los productos
98207 ERROR: Existen errores en la información de CSITUNITPRICE de los productos

Volver a inicio, (*128)

The Versions

17/04 2018

dev-master

9999999-dev

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

The Development Requires

09/08 2017

V1.10.1

1.10.1.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

The Development Requires

08/06 2017

V1.10.0

1.10.0.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

The Development Requires

26/04 2017

V1.9.0

1.9.0.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

09/03 2017

V1.8.4

1.8.4.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

18/02 2017

V1.8.2

1.8.2.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

22/12 2016

V1.8.1

1.8.1.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

20/10 2016

V1.8.0

1.8.0.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

13/09 2016

V1.6.0

1.6.0.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

25/06 2016

V1.5.1

1.5.1.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

15/06 2016

V1.5.0

1.5.0.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

24/05 2016

V1.4.1

1.4.1.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

20/04 2016

V1.4.0

1.4.0.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

03/03 2016

V1.3.2

1.3.2.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

26/02 2016

V1.3.1

1.3.1.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

26/02 2016

V1.3.0

1.3.0.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

22/10 2015

V1.2.3

1.2.3.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

13/10 2015

V1.2.2

1.2.2.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

11/09 2015

V1.2.0

1.2.0.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

28/08 2015

V1.1.1

1.1.1.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3

 

25/07 2015

1.0

1.0.0.0

SDK para TodoPago

  Sources   Download

The Requires

  • php >=5.3