Skip to content

Dll en C++ para transaccionar con el gateway 'Todo Pago'. SDK-C++ de Vinculación Implícita

Notifications You must be signed in to change notification settings

maleal/SDK-Cpp-Implicit-Linking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

<<<<<<< HEAD SDK-Cpp-Implicit-Linking:

SDK-Cpp-Implicit-Linking

Dll en C++ para transaccionar con el gateway 'Todo Pago', de vinculación Implícita.

SDK-Cpp-Explicit-Linking

SDK-C++ de Vinculación Implícita

SDK C++

Modulo de conexión con el gateway de pago 'Todo Pago' (Dll impementada como interfaz para 'Todo Pago')

######Instalación ######Generalidades ######Uso ######[Datos adicionales para prevencion de fraude] (#datosadicionales) ######Status de la operación

Instalación

  • a. Se debe descargar la última versión del SDK desde el botón Download ZIP, branch master.
  • b. Una vez descargado y descomprimido, debe incluir el archivo TPConnectorDll.h y enlazar la librería 'IpLinkTPConnectorDll.lib' en su proyecto. Podra definir o no la macro DLL_EXPORTS, con lo cual decidirá si usara el atributo dllexport o dllimport en su proyecto. Si usa Visual C++ 2012 deberá ir a: Property Pages -> C/C++ -> Preprocessor y seleccionar "All Configurations" para luego en "Preprocessor Definitios" crear la macro.
  • c. Archivo 'cacerts.pem' Contiene los certificados públicos otorgados por una autoridad de certificación de confianza, puede descargarlo desde [aqui](http://curl.haxx.se/docs/caextract.html/).

Volver a inicio

Generalidades

Esta versión soporta únicamente pago en moneda nacional argentina (CURRENCYCODE = 32). Volver a inicio

Uso

####1.Solo necesita crear un puntero de la clase 'TPCtor_Interface' e inicializarlo con 'GetDLLInterface()' para tener acceso a todos los metodos de la interfáz a Todo Pago: Ej:

	TPCtor_Interface* pConntor = GetDLLInterface();

####2.Inicializar el conector (TodoPago). Para lo cual deberrá llamar a 'TPConnector_Init()' de la siguiente forma -crear un std::string con el Endpoint suministrados por Todo Pago -crear un std::string Athorization con el dato del http header suministrados por Todo Pago -llame al metodo 'TPConnector_Init' Ej:

 	cout << "---------------- Init TPConnecto .........\n";
	if(ret = pConntor->TPConnector_Init(endPointURL, strAthorization) == 0)
		cout << "---------------- TPConnector_Init() OK\n";

####3.Servicio Web 'Authorize Request' (TodoPago). Antes de consumir el servicio web "AuthorizeRequest" debemos invocar al método "SendAuthorizeRequest_SetParams(request, payload)" este metodo usa dos parámetros del tipo std::map, para cada uno de estos parámetros estan definidas las keys y se usan de la siguiente forma:

	Si 'RParams' es el primer parámetro del metodo, hacemos:
			std::map<std::string, std::string>RParams;
			
			//datos propios del comercio
			RParams[SECURITY]	= "912EC803B2CE49E4A541068D495AB570";
			RParams[SESSION]	= "ABCDEF-1234-12221-FDE1-00000200";
			RParams[MERCHANT]	= "2153";
			RParams[URL_OK]	= "http://google.com";
			RParams[URL_ERROR]	= "http://www.coco.com";
			RParams[ENCODING_METHOD] = "XML";
        Si 'RPayload' es el segundo parametro de este metodo y también del tipo std:map<string, string>
        hacemos:
			map<string, string>PayLParams;
			
			//datos propios del comercio
			PayLParams[EMAILCLIENTE]	= "client_email@dominio.com";
			PayLParams[AMOUNT]		= "55";
			PayLParams[CURRENCYCODE]	= "032";
			PayLParams[OPERATIONID]		= "01";
			PayLParams[PAYL_MERCHANT]	= "2153";
			
			//datos adicionales
			PayLParams[CSBTCITY]		= "Villa General Belgrano"; //MANDATORIO.
			PayLParams[CSSTCITY	]	= "Villa General Belgrano"; //MANDATORIO.
			
			PayLParams[CSBTCOUNTRY]		= "AR";//MANDATORIO. Código ISO.
			PayLParams[CSSTCOUNTRY]		= "AR";//MANDATORIO. Código ISO.
			
			PayLParams[CSBTEMAIL]		= "todopago@hotmail.com"; //MANDATORIO.
			PayLParams[CSSTEMAIL]		= "todopago@hotmail.com"; //MANDATORIO.
			
			PayLParams[CSBTFIRSTNAME]	= "Juan";//MANDATORIO.      
			PayLParams[CSSTFIRSTNAME]	= "Juan";//MANDATORIO.      
			
			PayLParams[CSBTLASTNAME]	= "Perez";//MANDATORIO.
			PayLParams[CSSTLASTNAME]	= "Perez";//MANDATORIO.
			
			PayLParams[CSBTPHONENUMBER]	= "541160913988";//MANDATORIO.     
			PayLParams[CSSTPHONENUMBER]	= "541160913988";//MANDATORIO.     
			
			PayLParams[CSBTPOSTALCODE]	= " 1010";//MANDATORIO.
			PayLParams[CSSTPOSTALCODE]	= " 1010";//MANDATORIO.
			
			PayLParams[CSBTSTATE]		= "B";//MANDATORIO
			PayLParams[CSSTSTATE]		= "B";//MANDATORIO
			
			PayLParams[CSBTSTREET1]		= "Cerrito 740";//MANDATORIO.
			PayLParams[CSSTSTREET1]		= "Cerrito 740";//MANDATORIO.
			
			PayLParams[CSBTCUSTOMERID]	= "453458";; //MANDATORIO.
			PayLParams[CSBTIPADDRESS]	= "192.0.0.4"; //MANDATORIO.       
			PayLParams[CSPTCURRENCY]	= "ARS";//MANDATORIO.      
			PayLParams[CSPTGRANDTOTALAMOUNT]= "125.38";//MANDATORIO.
			PayLParams[CSMDD7		]	="";//NO MANDATORIO.        
			PayLParams[CSMDD8		]	="Y"; //NO MANDATORIO.       
			PayLParams[CSMDD9		]	="";//NO MANDATORIO.       
			PayLParams[CSMDD10		]	="";//NO MANDATORIO.      
			PayLParams[CSMDD11		]	="";//NO MANDATORIO.
			PayLParams[STCITY		]	="rosario";//MANDATORIO.       
			
			PayLParams[STCOUNTRY	]		="";//MANDATORIO.      
			PayLParams[STEMAIL		]	="jose@gmail.com";//MANDATORIO.        
			PayLParams[STFIRSTNAME	]		="Jose";//MANDATORIO.        
			PayLParams[STLASTNAME	]		="Perez";//MANDATORIO.      
			PayLParams[STPHONENUMBER]		= "541155893737";//MANDATORIO.        
			PayLParams[STPOSTALCODE	]		= "1414";//MANDATORIO.        
			PayLParams[STSTATE		]	="D";//MANDATORIO     
			
			PayLParams[STSTREET1	]		="San Martín 123";//MANDATORIO.       
			PayLParams[CSMDD12		]	= "";//NO MADATORIO.     
			PayLParams[CSMDD13		]	= "";//NO MANDATORIO.     
			PayLParams[CSMDD14		]	= "";//NO MANDATORIO.      
			PayLParams[CSMDD15		]	= "";//NO MANDATORIO.        
			PayLParams[CSMDD16		]	= "";//NO MANDATORIO.
			
			PayLParams[CSITPRODUCTCODE] 		= "electronic_good";//CONDICIONAL
			PayLParams[CSITPRODUCTDESCRIPTION]	= "NOTEBOOK L845 SP4304LA DF TOSHIBA";//CONDICIONAL.     
			PayLParams[CSITPRODUCTNAME] 		= "NOTEBOOK L845 SP4304LA DF TOSHIBA";//CONDICIONAL.  
			PayLParams[CSITPRODUCTSKU]		= "LEVJNSL36GN";//CONDICIONAL.      
			PayLParams[CSITTOTALAMOUNT] 		= "1254.40";//CONDICIONAL.      
			PayLParams[CSITQUANTITY]		= "1";//CONDICIONAL.       
			PayLParams[CSITUNITPRICE]		= "1254.40";
			
			cout << "---------------- SendAuthorizeRequest_SetParams()	.........\n";
			if( ret = pConntor->SendAuthorizeRequest_SetParams(RParams, PayLParams) == 0)
				cout << "---------------- SendAuthorizeRequest_SetParams()	OK\n";

Invocamos al servicio web En este caso hay que llamar a SendAuthorizeRequest_Send( Output ). Este metodo devolverá en su parámetro 'Output' un std::map<string, string> con las siguientes Keys necesarias para ubicar los datos de la respuesta del servicio web.

	Out[STATUSCODE]
	Out[Message]
	Out[REQUEST_KEY]
	Out[URL_Request]
		map<string, string>::iterator it;
		map<string, string>output;
		
		cout << "---------------- SendAuthorizeRequest_Send()	..............\n";
		if( ret = pConntor->SendAuthorizeRequest_Send(output) == 0) {
			cout << "---------------- SendAuthorizeRequest_Send()	OK\n";
			for(it=output.begin(); it != output.end(); it++)
				cout << it->first << " = " << it->second << endl;
		}

####4.Confirmación de transacción. En este caso hay que llamar a GetAuthorizeAnswer_Send(input, output), que lleva dos parámetros map<string, string>. El parámetro 'input' llevara los datos necesario para la transaccion y en 'output' se alogará la respuesta, en el siguiente ejemplose muestra su uso:

			Inp[SECURITY]	= string("912EC803B2CE49E4A541068D495AB570");
			Inp[SESSION]	= "";
			Inp[MERCHANT]	= string("2153");

			Inp[REQUEST_KEY]= string("dee4d38b-d228-d077-5b55-2b1a12d24a16");
			Inp[ANSWER_KEY] = string("dee4d38b-d228-d077-5b55-2b1a12d24a16");
			
			if( ret = pConntor->GetAuthorizeAnswer_Send(Inp, Out) == 0) {
				cout << Out[STATUSCODE] << endl;
				cout << Out[AUTH_KEY] 	<< endl;
				cout << Out[ENCOD_METH] << endl;
				cout << Out[PAYLOAD_ANSWER] << endl;
			}

Datos adicionales para control de fraude

Parámetros Adicionales en el post inicial comunes a todos los rubros:
	//Example
	map<string, string>PayLParams;
	
	PayLParams[CSBTCITY]		= "Villa General Belgrano"; //MANDATORIO.
	PayLParams[CSBTCOUNTRY]		= "AR";//MANDATORIO. Código ISO.
	PayLParams[CSBTEMAIL]		= "todopago@hotmail.com"; //MANDATORIO.
	PayLParams[CSBTFIRSTNAME]	= "Juan";//MANDATORIO.      
	PayLParams[CSBTLASTNAME]	= "Perez";//MANDATORIO.
	PayLParams[CSBTPHONENUMBER]	= "541160913988";//MANDATORIO.     
	PayLParams[CSBTPOSTALCODE]	= " 1010";//MANDATORIO.
	PayLParams[CSBTSTATE]		= "B";//MANDATORIO
	PayLParams[CSBTSTREET1]		= "Cerrito 740";//MANDATORIO.
	PayLParams[CSBTCUSTOMERID]	= "453458";; //MANDATORIO.
	PayLParams[CSBTIPADDRESS]	= "192.0.0.4"; //MANDATORIO.       
	PayLParams[CSPTCURRENCY]	= "ARS";//MANDATORIO.      
	PayLParams[CSPTGRANDTOTALAMOUNT]= "125.38";//MANDATORIO.
	
	PayLParams[CSMDD7		]	="";//NO MANDATORIO.        
	PayLParams[CSMDD8		]	="Y"; //NO MANDATORIO.       
	PayLParams[CSMDD9		]	="";//NO MANDATORIO.       
	PayLParams[CSMDD10		]	="";//NO MANDATORIO.      
	PayLParams[CSMDD11		]	="";//NO MANDATORIO.

Parámetros Adicionales en el post inicial para el rubro RETAIL
	//Example
	map<string, string>PayLParams;
	
	PayLParams[CSSTCITY	]	= "Villa General Belgrano"; //MANDATORIO.
	PayLParams[CSSTCOUNTRY]		= "AR";//MANDATORIO. Código ISO.
	PayLParams[CSSTEMAIL]		= "todopago@hotmail.com"; //MANDATORIO.
	PayLParams[CSSTFIRSTNAME]	= "Juan";//MANDATORIO.      
	PayLParams[CSSTLASTNAME]	= "Perez";//MANDATORIO.
	PayLParams[CSSTPHONENUMBER]	= "541160913988";//MANDATORIO.     
	PayLParams[CSSTPOSTALCODE]	= " 1010";//MANDATORIO.
	PayLParams[CSSTSTATE]		= "B";//MANDATORIO
	PayLParams[CSSTSTREET1]		= "Cerrito 740";//MANDATORIO.
	PayLParams[CSMDD12	]	= "";//NO MADATORIO.     
	PayLParams[CSMDD13	]	= "";//NO MANDATORIO.     
	PayLParams[CSMDD14	]	= "";//NO MANDATORIO.      
	PayLParams[CSMDD15	]	= "";//NO MANDATORIO.        
	PayLParams[CSMDD16	]	= "";//NO MANDATORIO.
	PayLParams[CSITPRODUCTCODE] 	= "electronic_good";//CONDICIONAL
	PayLParams[CSITPRODUCTDESCRIPTION]= "NOTEBOOK L845 SP4304LA DF TOSHIBA";//CONDICIONAL.  
	PayLParams[CSITPRODUCTNAME] 	= "NOTEBOOK L845 SP4304LA DF TOSHIBA";//CONDICIONAL.  
	PayLParams[CSITPRODUCTSKU]	= "LEVJNSL36GN";//CONDICIONAL.      
	PayLParams[CSITTOTALAMOUNT] 	= "1254.40";//CONDICIONAL.      
	PayLParams[CSITQUANTITY]	= "1";//CONDICIONAL.       
	PayLParams[CSITUNITPRICE]	= "1254.40";

Status de la Operación

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:

map<string, string>::iterator it;
map<string, string>Inp;
map<string, string>Out;

// MERCHANT es el id site y GOPERATION_ID es el id operación que se envio en el array a través del método //'sendAuthorizeRequest_Send()´

Inp[GOPERATION_ID] 	= "01";
Inp[MERCHANT]		= "2153";

if( ret = pConntor->GetByOperationId_Send(Inp, Out) == 0 ) {
	cout << "---------------- GetByOperationId_Send() -----	OK\n";
	for(it=Out.begin(); it != Out.end(); it++)
		cout << it->first << " = " << it->second << endl;
}

El anterior método retornara el status actual de la transacción en Todopago, y devuelve en Out un map<string, string> con el status.

Volver a inicio

945b90e6632345e118f6d760c5bcee17a2b473ae

About

Dll en C++ para transaccionar con el gateway 'Todo Pago'. SDK-C++ de Vinculación Implícita

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages