Modulo para conexión con gateway de pago Todo Pago
######Instalación ######Versiones de .net soportadas ######Generalidades ######Uso ######[Datos adicionales para prevencion de fraude] (#datosadicionales) ######Ejemplo ######Modo test ######Status de la operación ######Tablas de referencia
Se debe descargar la última versión del SDK desde el botón Download ZIP, branch master. Una vez descargado y descomprimido, se debe agregar a las librerias del proyecto y en el codigo se debe agregar siguiente using.
using TodoPagoConnector;
[Volver a inicio](#inicio)
La versión implementada de la SDK, esta testeada para versiones desde .net 4.X C#.
Volver a inicio
Esta versión soporta únicamente pago en moneda nacional argentina (CURRENCYCODE = 32). Volver a inicio
####1.Inicializar la clase correspondiente al conector (TodoPago).
- crear un String con el Endpoint suministrados por Todo Pago
String endpoint = "https://developers.todopago.com.ar/services/";
- crear un Dictionary<String, String> con los http header suministrados por Todo Pago
var headers = new Dictionary<String, String>();
headers.Add("Authorization", "PRISMA 912EC803B2CE49E4A541068D495AB570");
- crear una instancia de la clase TodoPago
TPConnector tpc = new TPConnector(endpoint, headers);
####2.Solicitud de autorización En este caso hay que llamar a sendAuthorizeRequest(). Este metodo devuelve Dictionary<string, object>
var res = connector.SendAuthorizeRequest(request, payload);
datos propios del comercio
request y payload deben ser un Dictionary<string, string> con la siguiente estructura:
var request = new Dictionary<string, string>();
request.Add(SECURITY, "1234567890ABCDEF1234567890ABCDEF");
request.Add(SESSION, String.Empty);
request.Add(MERCHANT, "305");
request.Add(URL_OK, "www.google.com.ar");
request.Add(URL_ERROR, "www.google.com.ar");
request.Add(ENCODING_METHOD, "XML");
var payload = new Dictionary<string, string>();
payload.Add("MERCHANT", "305");
payload.Add("OPERATIONID", "01");
payload.Add("CURRENCYCODE", "032");
payload.Add("AMOUNT", "54");
payload.Add("EMAILCLIENTE", "prueba@visa.com.ar");
####3.Confirmación de transacción. En este caso hay que llamar a getAuthorizeAnswer(), que retorna Dictionary<string, object>, enviando como parámetro un Dictionary<String, String> como se describe a continuación.
var request = new Dictionary<String, String>();
request.Add(SECURITY, "1234567890ABCDEF1234567890ABCDEF");
request.Add(SESSION, null);
request.Add(MERCHANT, "305");
request.Add(REQUESTKEY, "8496472a-8c87-e35b-dcf2-94d5e31eb12f");
request.Add(ANSWERKEY, "8496472a-8c87-e35b-dcf2-94d5e31eb12f");
var res = connector.GetAuthorizeAnswer(request);
*Importante:El campo AnswerKey se adiciona en la redireccion que se realiza a alguna de las direcciones ( URL ) epecificadas en el servicio SendAurhorizationRequest, esto sucede cuando la transaccion ya fue resuelta y es necesario regresar al Site para finalizar la transaccion de pago, tambien se adiciona el campo Order, el cual tendra 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
Este método devuelve el resumen de los datos de la transacción.
//Example
var parameters = new Dictionary<string, string>();
request.Add("CSBTCITY", "Villa General Belgrano"); //Ciudad de facturación, MANDATORIO.
parameters.Add("CSBTCOUNTRY", "AR");//País de facturación. MANDATORIO. Código ISO.
parameters.Add("CSBTCUSTOMERID", "453458"); //Identificador del usuario al que se le emite la factura. MANDATORIO. No
//puede contener un correo electrónico.
parameters.Add(CSBTIPADDRESS", "192.0.0.4"); //IP de la PC del comprador. MANDATORIO.
parameters.Add(CSBTEMAIL", "decidir@hotmail.com"); //Mail del usuario al que se le emite la factura. MANDATORIO.
parameters.Add(CSBTFIRSTNAME", "Juan");//Nombre del usuario al que se le emite la factura. MANDATORIO.
parameters.Add(CSBTLASTNAME", "Perez");//Apellido del usuario al que se le emite la factura. MANDATORIO.
parameters.Add(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. MANDATORIO.
parameters.Add(CSBTPOSTALCODE", " C1010AAP");//Código Postal de la dirección de facturación. MANDATORIO.
parameters.Add(CSBTSTATE", "B");//Provincia de la dirección de facturación. MANDATORIO. Ver tabla anexa de provincias.
parameters.Add(CSBTSTREET1", "Cerrito 740");//Domicilio de facturación (calle y nro). MANDATORIO.
parameters.Add(CSBTSTREET2", "Piso 8");//Complemento del domicilio. (piso, departamento). NO MANDATORIO.
parameters.Add(CSPTCURRENCY", "ARS");//Moneda. MANDATORIO.
parameters.Add(CSPTGRANDTOTALAMOUNT", "125.38");//Con decimales opcional usando el puntos como separador de decimales.
//No se permiten comas, ni como separador de miles ni como separador de decimales. MANDATORIO.
//(Ejemplos:$125,38-> 125.38 $12-> 12 o 12.00)
parameters.Add(CSMDD7", "");// Fecha registro comprador(num Dias). NO MANDATORIO.
parameters.Add(CSMDD8", "Y"); //Usuario Guest? (Y/N). En caso de ser Y, el campo CSMDD9 no deberá enviarse. NO
//MANDATORIO.
parameters.Add(CSMDD9", "");//Customer password Hash: criptograma asociado al password del comprador final. NO
//MANDATORIO.
parameters.Add(CSMDD10", "");//Histórica de compras del comprador (Num transacciones). NO MANDATORIO.
parameters.Add(CSMDD11", "");//Customer Cell Phone. NO MANDATORIO.
//Example
var parameters = new Dictionary<string, string>();
parameters.Add("CSSTCITY", "rosario");//Ciudad de envío de la orden. MANDATORIO.
parameters.Add("CSSTCOUNTRY", "");//País de envío de la orden. MANDATORIO.
parameters.Add("CSSTEMAIL", "jose@gmail.com");//Mail del destinatario, MANDATORIO.
parameters.Add("CSSTFIRSTNAME", "Jose");//Nombre del destinatario. MANDATORIO.
parameters.Add("CSSTLASTNAME", "Perez");//Apellido del destinatario. MANDATORIO.
parameters.Add("CSSTPHONENUMBER", "541155893737");//Número de teléfono del destinatario. MANDATORIO.
parameters.Add("CSSTPOSTALCODE", "1414");//Código postal del domicilio de envío. MANDATORIO.
parameters.Add("CSSTSTATE", "D");//Provincia de envío. MANDATORIO. Son de 1 caracter
parameters.Add("CSSTSTREET1", "San Martín 123");//Domicilio de envío. MANDATORIO.
parameters.Add("CSMDD12", "");//Shipping DeadLine (Num Dias). NO MADATORIO.
parameters.Add("CSMDD13", "");//Método de Despacho. NO MANDATORIO.
parameters.Add("CSMDD14", "");//Customer requires Tax Bill ? (Y/N). NO MANDATORIO.
parameters.Add("CSMDD15", "");//Customer Loyality Number. NO MANDATORIO.
parameters.Add("CSMDD16", "");//Promotional / Coupon Code. NO MANDATORIO.
//Retail: datos a enviar por cada producto, los valores deben estar separado con #:
parameters.Add("CSITPRODUCTCODE", "electronic_good");//Código de producto. CONDICIONAL. Valores posibles(adult_content;coupon;default;electronic_good;electronic_software;gift_certificate;handling_only;service;shipping_and_handling;shipping_only;subscription)
parameters.Add("CSITPRODUCTDESCRIPTION", "NOTEBOOK L845 SP4304LA DF TOSHIBA");//Descripción del producto. CONDICIONAL.
parameters.Add("CSITPRODUCTNAME", "NOTEBOOK L845 SP4304LA DF TOSHIBA");//Nombre del producto. CONDICIONAL.
parameters.Add("CSITPRODUCTSKU", "LEVJNSL36GN");//Código identificador del producto. CONDICIONAL.
parameters.Add("CSITTOTALAMOUNT", "1254.40");//CSITTOTALAMOUNT=CSITUNITPRICE*CSITQUANTITY "999999[.CC]" Con decimales opcional usando el puntos como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. CONDICIONAL.
parameters.Add("CSITQUANTITY", "1");//Cantidad del producto. CONDICIONAL.
parameters.Add("CSITUNITPRICE", "1254.40");//Formato Idem CSITTOTALAMOUNT. CONDICIONAL.
Existe un ejemplo en la carpeta https://github.com/TodoPago/SDK-.NET/tree/master/Ejemplo que muestra los resultados de los métodos principales del SDK.
La SDK cuenta con un método para consultar el status de la transacción desde la misma SDK. El método se utiliza de la siguiente manera:
TPConnector tpc = new TPConnector(endpoint, headers);
String merchant = "305";
String operationID = "01";
var res = connector.GetStatus(merchant, operationID);// Merchant es el id site y operationID es el id operación que se envio en el array a través del método sendAuthorizeRequest()
El siguiente método retornara el status actual de la transacción en Todopago, y devuelve List<Dictionary<string, object>>. Volver a inicio
######Códigos de Estado ######Provincias
Codigos de Estado
IdEstado | Descripción |
---|---|
1 | Ingresada |
2 | A procesar |
3 | Procesada |
4 | Autorizada |
5 | Rechazada |
6 | Acreditada |
7 | Anulada |
8 | Anulación Confirmada |
9 | Devuelta |
10 | Devolución Confirmada |
11 | Pre autorizada |
12 | Vencida |
13 | Acreditación no cerrada |
14 | Autorizada * |
15 | A reversar |
16 | A registar en Visa |
17 | Validación iniciada en Visa |
18 | Enviada a validar en Visa |
19 | Validada OK en Visa |
20 | Recibido desde Visa |
21 | Validada no OK en Visa |
22 | Factura generada |
23 | Factura no generada |
24 | Rechazada no autenticada |
25 | Rechazada datos inválidos |
28 | A registrar en IdValidador |
29 | Enviada a IdValidador |
32 | Rechazada no validada |
38 | Timeout de compra |
50 | Ingresada Distribuida |
51 | Rechazada por grupo |
52 | Anulada por grupo |
Provincias
Solo utilizado para incluir los datos de control de fraude
Provincia | Código |
---|---|
CABA | C |
Buenos Aires | B |
Catamarca | K |
Chaco | H |
Chubut | U |
Córdoba | X |
Corrientes | W |
Entre Ríos | R |
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 |