static void Main(string[] args) { // apikey e chiave segreta string APIKEY = "<ALIAS>"; // Sostituire con il valore fornito da CartaSi string CHIAVESEGRETA = "CsT830052L63QHNd1E351uh73272Q23h175650k9wU28T7EU1Hd6l156N5I2oBY6U7OW7kP34282C5965r8V0hpG72ojq5B58896G4Q6oXGc36a6z3Tn6J271B4N33p45C28369j7E025O2245GK7T5p1MNN5T25S05UJxCKH0TMc98fBQ66M2NxRDzrR66c7RG2K367D4xiV54X9kY592K5E3V1X1U01AO85P3n4z28eJIL13t8Ww3P28eg24y2"; // Sostituire con il valore fornito da CartaSi string requestUrl = "https://int-ecommerce.cartasi.it/ecomm/api/recurring/pagamentoRicorrente"; DateTime data = DateTime.Now; string codTrans = "TESTPS_" + data.ToString("yyyyMMddHHmmss"); string divisa = "EUR"; string importo = "5000"; string scadenza = "202012"; string timeStamp = (Math.Round((DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds)).ToString(); string numContratto = "NC_TEST_20170407125522"; //CALCOLO MAC SampleXPayRequest sampleXPay = new SampleXPayRequest(); string mac = sampleXPay.HashMac("apiKey=" + APIKEY + "numeroContratto=" + numContratto + "codiceTransazione=" + codTrans + "importo=" + importo + "divisa=" + divisa + "scadenza=" + scadenza + "timeStamp=" + timeStamp + CHIAVESEGRETA); var requestParams = new Dictionary <string, string>(); requestParams["apiKey"] = APIKEY; requestParams["importo"] = importo; requestParams["divisa"] = divisa; requestParams["codiceTransazione"] = codTrans; requestParams["mac"] = mac; requestParams["numeroContratto"] = numContratto; requestParams["scadenza"] = scadenza; requestParams["codiceGruppo"] = "GRUPPOTEST"; requestParams["timeStamp"] = timeStamp; string json = JsonConvert.SerializeObject(requestParams); var response = sampleXPay.Post(requestUrl, json); if (response["esito"] == "OK") { // Transazione andata a buon fine // Calcolo con i parametri di ritorno string macCalculated = sampleXPay.HashMac("esito=" + response["esito"] + "idOperazione=" + response["idOperazione"] + "timeStamp=" + response["timeStamp"] + CHIAVESEGRETA); if (macCalculated != response["mac"]) { Console.WriteLine("errore MAC: " + macCalculated + " non corrisponde a " + response["mac"]); } else { Console.WriteLine("La transazione " + codTrans + " è avvenuta con successo; codice autorizzazione: " + response["codiceAutorizzazione"]); } } else { // Transazione rifiutata Console.WriteLine("La transazione " + codTrans + " è stata rifiutata"); } }
static void Main(string[] args) { // apikey e chiave segreta string APIKEY = "<ALIAS>"; // Sostituire con il valore fornito da Nexi string CHIAVESEGRETA = "CHIAVE SEGRETA PER CALCOLO MAC"; // Sostituire con il valore fornito da Nexi string requestUrl = "https://int-ecommerce.nexi.it/ecomm/api/recurring/pagamentoRicorrente"; DateTime data = DateTime.Now; string codTrans = "TESTPS_" + data.ToString("yyyyMMddHHmmss"); string divisa = "EUR"; string importo = "5000"; string scadenza = "202012"; string timeStamp = (Math.Round((DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds)).ToString(); string numContratto = "NC_TEST_20170407125522"; //CALCOLO MAC SampleXPayRequest sampleXPay = new SampleXPayRequest(); string mac = sampleXPay.HashMac("apiKey=" + APIKEY + "numeroContratto=" + numContratto + "codiceTransazione=" + codTrans + "importo=" + importo + "divisa=" + divisa + "scadenza=" + scadenza + "timeStamp=" + timeStamp + CHIAVESEGRETA); var requestParams = new Dictionary <string, string>(); requestParams["apiKey"] = APIKEY; requestParams["importo"] = importo; requestParams["divisa"] = divisa; requestParams["codiceTransazione"] = codTrans; requestParams["mac"] = mac; requestParams["numeroContratto"] = numContratto; requestParams["scadenza"] = scadenza; requestParams["codiceGruppo"] = "GRUPPOTEST"; requestParams["timeStamp"] = timeStamp; string json = JsonConvert.SerializeObject(requestParams); var response = sampleXPay.Post(requestUrl, json); if (response["esito"] == "OK") { // Transazione andata a buon fine // Calcolo con i parametri di ritorno string macCalculated = sampleXPay.HashMac("esito=" + response["esito"] + "idOperazione=" + response["idOperazione"] + "timeStamp=" + response["timeStamp"] + CHIAVESEGRETA); if (macCalculated != response["mac"]) { Console.WriteLine("errore MAC: " + macCalculated + " non corrisponde a " + response["mac"]); } else { Console.WriteLine("La transazione " + codTrans + " è avvenuta con successo; codice autorizzazione: " + response["codiceAutorizzazione"]); } } else { // Transazione rifiutata Console.WriteLine("La transazione " + codTrans + " è stata rifiutata"); } }
static void Main(string[] args) { // Alias e chiave segreta string ALIAS = "<ALIAS>"; // Sostituire con il valore fornito da Nexi string CHIAVESEGRETA = "<CHIAVE SEGRETA PER CALCOLO MAC>"; // Sostituire con il valore fornito da Nexi string requestUrl = "https://int-ecommerce.nexi.it/ecomm/ecomm/DispatcherServlet"; string merchantServerUrl = "https://my-server.example.tdl/"; DateTime data = DateTime.Now; string codTrans = "TESTPS_" + data.ToString("yyyyMMddHHmmss"); string divisa = "EUR"; string importo = "5000"; string numContratto = "NC_TEST_" + data.ToString("yyyyMMddHHmmss"); string tipoRichiesta = "PR"; // Calcolo MAC SampleXPayRequest sampleXPay = new SampleXPayRequest(); string mac = sampleXPay.HashMac("codTrans=" + codTrans + "divisa=" + divisa + "importo=" + importo + CHIAVESEGRETA); var requestParams = new Dictionary <string, string>(); // Parametri obbligatori requestParams["alias"] = ALIAS; requestParams["importo"] = importo; requestParams["divisa"] = divisa; requestParams["codTrans"] = codTrans; requestParams["url"] = merchantServerUrl + "esito.aspx"; requestParams["url_back"] = merchantServerUrl + "annullo.aspx"; requestParams["mac"] = mac; requestParams["urlpost"] = merchantServerUrl + "notifica.aspx"; requestParams["num_contratto"] = numContratto; requestParams["tipo_servizio"] = "paga_multi"; requestParams["tipo_richiesta"] = tipoRichiesta; requestParams["gruppo"] = "GRUPPOTEST"; // Parametri facoltativi requestParams["mail"] = "*****@*****.**"; requestParams["languageId"] = "ITA"; requestParams["descrizione"] = "Prova di pagamento"; requestParams["session_id"] = "12345"; requestParams["Note1"] = "NOTA 1"; requestParams["Note2"] = "NOTA 2"; requestParams["Note3"] = "NOTA 3"; requestParams["OPTION_CF"] = "RSSMRA74D22A001Q"; requestParams["selectedcard"] = "VISA"; requestParams["TCONTAB"] = "D"; requestParams["infoc"] = "Info su pagamento per compagnia"; requestParams["infob"] = "Info su pagamento per banca"; requestParams["modo_gestione_consegna"] = "completo"; string uri = "?"; foreach (KeyValuePair <string, string> param in requestParams) { uri += param.Key + "=" + param.Value + "&"; } Console.WriteLine(uri); }
static void Main(string[] args) { // chiave segreta string CHIAVESEGRETA = "<CHIAVE SEGRETA PER CALCOLO MAC>"; // Sostituire con il valore fornito da CartaSi // Calcolo MAC SampleXPayRequest sampleXPay = new SampleXPayRequest(); string mac = sampleXPay.HashMac("codTrans=" + args.codTrans + "esito=" + args.esito + "importo=" + args.importo + "divisa=" + args.divisa + "data=" + args.data + "orario=" + args.orario + "codAut=" + args.codAut + CHIAVESEGRETA); // Verifico corrispondenza tra MAC calcolato e MAC di ritorno if (mac != args.mac) { Console.WriteLine("Errore MAC: " + mac + " non corrisponde a " + args.mac); } else { // Nel caso in cui non ci siano errori gestisco il parametro esito if (args.esito == "OK") { Console.WriteLine("OK, pagamento avvenuto, preso riscontro"); } else { Console.WriteLine("KO, pagamento non avvenuto, preso riscontro"); } } }
static void Main(string[] args) { // Alias e chiave segreta string ALIAS = "<ALIAS>"; // Sostituire con il valore fornito da Nexi string CHIAVESEGRETA = "<CHIAVE SEGRETA PER CALCOLO MAC>"; // Sostituire con il valore fornito da Nexi string requestUrl = "https://int-ecommerce.nexi.it/ecomm/api/bo/downloadReport"; string timeStamp = (Math.Round((DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds)).ToString(); string idReport = "123"; // Calcolo MAC SampleXPayRequest sampleXPay = new SampleXPayRequest(); string mac = sampleXPay.HashMac("apiKey=" + ALIAS + "timeStamp=" + timeStamp + "idReport=" + idReport + CHIAVESEGRETA); var requestParams = new Dictionary <string, string>(); // Parametri obbligatori requestParams["apiKey"] = ALIAS; requestParams["timeStamp"] = importo; requestParams["idReport"] = divisa; requestParams["mac"] = mac; string uri = "?"; foreach (KeyValuePair <string, string> param in requestParams) { uri += param.Key + "=" + param.Value + "&"; } string result = requestUrl + uri; }