Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Michal Pflegshörl:26.5.2020 10:53

Odeslání požadavku ze C# Winform aplikace do platebního terminálu a získání odpovědi

Zkusil jsem: Zkoušel jsem kontaktovat banku, ale zatím nemám žádnoi reakci

Chci docílit: Chtěl bych ze C# Winform aplikace odeslat do terminálu přes IP částku, která se má uhradit a získat odpověď zda platba proběhla či nikoli.

 
Odpovědět
26.5.2020 10:53
Avatar
zelvicek
Člen
Avatar
zelvicek:26.5.2020 12:18

Použij pokyny od dané banky. Ta je jediná, která ti může dát aktuální a správný popis komunikačního protokolu. Taky může mít testovací prostředí.

 
Nahoru Odpovědět
26.5.2020 12:18
Avatar
don.jarducius:27.5.2020 21:12

Teď nedávno jsem to řešil. Je potřeba se spojit s poskytovatelem platebních terminálů pro tvoji společnost. Ta ti dodá podklady buď naprosto normálně, nebo proti NDA. Na základě toho, se pak dostaneš k dokumentaci + třeba i knihovně (dll) přes kterou se komunikuje s platebním terminálem. Celkem standardem je možnost zapůjčení testovacího terminálu a karty.

Já třeba řešil napojení terminálů od GlobalPayments (https://www.mujterminal.cz/), kde nebylo potřeba žádné NDA, všechno bylo krásně zdokumentované a pro C# byla dostupná i knihovna.

Pozor na to, že to nefunguje paušálně 1 protokol na všechny. Existuje cca 4 nebo 5 různých komunikačních protokolů.

Nahoru Odpovědět
27.5.2020 21:12
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Odpovídá na don.jarducius
Michal Pflegshörl:22.7.2020 9:58

Tak už jsem dostal podklady od dodavatele terminálu.
Dokumentace http://tiny.cc/…ocumentation
Heslo: Son3t
Příklady http://tiny.cc/…DLL_examples
V příkladech se volá dnes již zastaralá funkce SALE (která již v aktuální dokumentaci není) místo aktuálního CARDSERVICE2

Bohužel z toho nejsem vůbec moudrý :-(
Vůbec netuším jak zadané podklady zapracovat do jednoduchého řešení typu:

Console.WriteLine("Zadejte částku:");
decimal castka = Console.ReadLine();

Terminal term = new Terminal(10.192.168.55); //Definice terminálu pomocí IP adresy
bool platbaProvedena = term.OdesliPlatbu(castka); //Odeslání požadavku na úhradu částky a získání výsledku transakce

if (platbaProvedena)
     Console.WriteLine("Platba provedena");
else
       Console.WriteLine("Platba neprovedena");

Nic víc nepotřebuji.

 
Nahoru Odpovědět
22.7.2020 9:58
Avatar
Odpovídá na Michal Pflegshörl
don.jarducius:22.7.2020 22:52

No, vidíš, tak to nejtěžší máš za sebou :) (Získat dokumentaci, dokonce dokumentaci a příklad v C#)

Opravdu rychle jsem prolítnul dokumentaci a přiložené příklady (a očividně je to od všech poskytovatelů na jedno kopyto).

V HcTerm_Examples\Si­mulator máš VS projekt v C#, který využívá knihovnu hcterm.dll (s konfigurací hcterm.ini, kterou si knihovna načítá - zde si nastavíš sekci [tcpip] dle reality)

Čili to co jsi popsal že by jsi chtěl musí dělat:

new Terminal(10.192.168.55)
// Vytvoří konfigurační ini soubor hcterm.ini s potřebnými daty

a

term.OdesliPlatbu(castka, reference)
// potom provede to, co je ve zmíněném přikladu ve funkci Main.

Sestavení třídy Terminal by pro tebe už měla být brnkačka, protože v tom příkladu je vlastně napsaná :)

PS: req.Amount i req.SystemNumber jsou ASCII kódovaná čísla ... hex 0x31 (dec 51) odpovídá znaku "1".

Nahoru Odpovědět
22.7.2020 22:52
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.