Autor Zpráva
simeon
Profil
EDIT: Je tam tajný prvok storekey, ale aj tak je to také nejaké čudné, že sa používa obyčajné POST.



Dobrý deň,

e Card VÚB je služba virtuálneho pos terminálu (všeobecné informácie: www.vub.sk/sk/firmy-podnikatelia/ucty-sluzby/platby/ecommerce-pre-obchodnikov/e-card-vub). Požiadal som ich o zaslanie integračného manuálu, ktorý, ako celok, zverejňovať nebudem, ale vypíšem z neho podstatné informácie. Využívam PHP vzor.

Platba kartou funguje tak, že obchodník vytvorí html formulár s hidden inputmi. Escapuje dáta a vytvorí z nich hash, ktorý tiež vloží do formulára. Formulár s dátami sa odošle do platobnej brány.
jsfiddle.net/kgv9fcva

V dokumente sa píše: Ak je transakcia úspešná, obchodník bude presmerovaný na adresu okUrl, ktorá je do platobnej brány odoslaná v kroku 2. Všetky parametre, ktoré obchodník poslal, sa vrátia späť obchodníkovi. Okrem parametrov obchodníka brána vráti aj parametre odpovede transakcie a parametre odpovede MPI (súvisiace s postupom bezpečnej transakcie 3D), ktoré sú uvedené v prílohe A.

Príloha A obsahuje rozpísané parametre odpovede transakcie (teda čo všetko bude v $_POST na okUrl (stránka obchodníka) okrem vstupných parametrov). Medzi nimi sú aj parametre ako:

mdStatus - Kód stavu transakcie 3D
1=overená transakcia
2, 3, 4 = Karta neparticipuje alebo
pokus
5,6,7,8 = Overenie nie je k dispozícii
alebo chyba systému
0 = Overenie bolo neúspešné

Response - Stav platby
Možné hodnoty: „Approved“, „Error“, „Declined“


Vzor stránky okUrl vyzerá takto:
jsfiddle.net/cfpjc3g0

Čiže tento skript porovnáva hash, ktorý dostal v $_POST od platobnej brány s hashom, ktorý vytvoril. Ak sú rovnaké, tak ak je mdStatus rovný 1, vyhodnotí skript platbu ako autorizovanú a obchodník, spoľahnúc sa na tento systém, odošle, napríklad, objednaný tovar.

Už rozumiete, prečo mám obavu? Na prvej stránke s hidden inputmi si viem všetky dáta pozrieť a vytvoriť si vlastný formulár na okUrl s tým, že mdStatus nastaví na 1. Niečo ako:
<form method="post" action="http://obchodnik.sk/okUrl.php">
    <input type="hidden" name="clientid" value="...">
    <input type="hidden" name="amount" value="...">
    <input type="hidden" name="oid" value="...">
    <input type="hidden" name="okurl" value="http://obchodnik.sk/okUrl.php">
    <input type="hidden" name="failUrl" value="...">
    <input type="hidden" name="trantype" value="...">
    <input type="hidden" name="instalment" value="...">
    <input type="hidden" name="MERCHANTSAFEAUTHTYPE" value="...">
    <input type="hidden" name="MERCHANTSAFEKEY" value="...">
    <input type="hidden" name="currency" value="...">
    <input type="hidden" name="rnd" value="...">
    <input type="hidden" name="hash" value="...">
    <input type="hidden" name="storetype" value="3d_pay_hosting">
    <input type="hidden" name="hashAlgorithm" value="ver2">
    <input type="hidden" name="lang" value="sk">
    <!-- tri bodky (...) nahrádzajú získané údaje -->
    
    <input type="hidden" name="mdStatus" value="1">
    <input type="hidden" name="Response" value="Approved">
    <!-- informácie, na základe ktorých obchodník vyhodnotí platbu ako autorizovanú -->
    
    <input type="submit" value="I am a clever thief">
</form>

Alebo sa mýlim?

Vďaka za Váš čas a prípadné pripomienky.
David1234
Profil *
No a co jiného by jsi chtěl využít pro odeslání dat místo metody POST?
Joker
Profil
simeon:
Na prvej stránke s hidden inputmi si viem všetky dáta pozrieť a vytvoriť si vlastný formulár na okUrl s tým, že mdStatus nastaví na 1

Čemu to vadí? I kdyby to tam nebylo, údaje o nákupu ve stránce být musí, údaje odpovědi jsou ve specifikaci API a okUrl se dá zjistit po jednom úspěšném nákupu z prohlížeče.
Keeehi
Profil
A není ten hash o kterém píšeš nějaký speciální hash? Protože jsou takové, k jejichž vytvoření potřebuješ znát nějakou tajnou informaci. Když se na takové tajné informaci dohodneš s druhou stranou, můžeš ověřit, že ten hash skutečně vytvořila ona.

Pak je tu ještě druhý přístup. Po té, co ti přijde návštěvník na okUrl mu hned zboží neposíláš, ale připojíš se na API té platební služby a podle nějakého identifikátoru (což může být třeba ten hash) si ověříš status objednávky.

Vaše odpověď

Mohlo by se hodit

Příspěvky nesouvisející s webem budou odstraněny.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: