Příjem POST načte error 404

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Zuben45
Člen | 268
+
0
-

Zdravím,
potřeboval bych poradit, máme u České spořitelny povolené online platby, provádí se zde validation, confirmation a rejection. Zezačátku se odešle formulář metodou POST na ProxyPay (v pořádku) ten pak odešle data k validaci na naši validation URL a jestli data sedí vygeneruje se

<html><head></head><body>[OK]</body></html>

a zde nastává problém, že služba ProxyPay dostane ze stránky error 404, ale když příjdu na stránku z prohlížeče, tak se provede vše jak má, vytvořil jsem si i formulář který odesílá stejná data jako ProxyPay a také vše fungovalo.

Neví někdo co s tím ? Tento problém už řeším něco přes týden a stále žádná změna. Za pomoc budu moc rád.

Děkuji

CZechBoY
Člen | 3608
+
0
-

Zapisuj si url na které přecházíš, zapisuj si data který posíláš. Potom zkus to stejný poslat přes prohlížeč.

Zuben45
Člen | 268
+
0
-

Zapsat si url a data která posílá banka bohužel nemůžu :/, ty data co mi posílá banka se berou z dat která jsem odeslal a přidají se některá ověřovací.

Vyzkoušel jsem vypsat data která dostává/odesílám

	    $httpRequest = $this->getHttpRequest();
	    $data2 = $httpRequest->getPost();
	    $file = fopen("form.txt","w");
	    $template = '1';
	    foreach($data2 as $key => $d){
		$template .= $key.':'.$d.',';
	    }
	    fwrite($file, (string) $template);
	    fclose($file);

a všechny data jsou v pořádku

form.txt

send:Odeslat,merchantid:XXXXX,amount:968,currency:203,brand:MasterCard,transactiontype:sale,merchantref:21503324,merchantdesc:Napájecí kabel,language:CZ,emailcustomer:galek@technimax.cz,merchantvar1:galek@technimax.cz,merchantvar2:968,merchantvar3:01,var1:Napájecí kabel,var2:Osobní odběr,var7:XXXXX XXXXX fakturace-internet 787 01,var8:XXXXX XXXXX fakturace-internet 787 01,do:redirectToPayForm-submit,

XXXXX = jsou reálná data, kvůli bezpečnosti skryta

Edit: Url na které přecházíš tím myslíš url z které to posílám ?

Edit2: Zkoušel jsem i zapsat do souboru když se přistoupí na url, ovšem když se pokouší ProxyPay tak to nic nezapíše, v prohlížeči opět funguje :/

Editoval Zuben45 (26. 1. 2016 15:12)

Myiyk
Člen | 321
+
0
-

Ukládej si všechna vstupní data, které dostáváš od ProxyPay.

Když provedeš request se stejnými daty, musí ti to vrátít to samé, co se vrátí ProxyPay. Jestli ne, neděláš stejný request.

Bude tam nějaká hlavička která dělá problém.

CZechBoY
Člen | 3608
+
0
-

Proč si ty data nemůžeš zapsat? Nikdy neříkej, že to nejde… :D
Prostě si zapiš všechno co můžeš, abys to dokázal potom manuálně přehrát znovu. Třeba si můžeš i pustit lokálně ten tvůj web a přes wireshark odchytávat pakety, nebo já nevim proč nemůžeš ukládat co kam posíláš a co ti přijde…

Zuben45
Člen | 268
+
0
-

Myiyk napsal(a):

Ukládej si všechna vstupní data, které dostáváš od ProxyPay.

Když provedeš request se stejnými daty, musí ti to vrátít to samé, co se vrátí ProxyPay. Jestli ne, neděláš stejný request.

Bude tam nějaká hlavička která dělá problém.

Problém je, že žádná data od ProxyPay nedostanu. :/

CZechBoY napsal(a):

Proč si ty data nemůžeš zapsat? Nikdy neříkej, že to nejde… :D
Prostě si zapiš všechno co můžeš, abys to dokázal potom manuálně přehrát znovu. Třeba si můžeš i pustit lokálně ten tvůj web a přes wireshark odchytávat pakety, nebo já nevim proč nemůžeš ukládat co kam posíláš a co ti přijde…

Neříkám že to nejde :), jen nechápu proč to nejde. Web mám jak lokálně tak na hostingu, jdu vyzkoušet wireshark.

Myiyk
Člen | 321
+
0
-

@Zuben45 jaké jsou poplatky za platbu?
Nesouvicí to s technickým řešením, ale zajímalo by mě to.

GoPay má 2.2% + 3Kč. PayU mlží.

Zuben45
Člen | 268
+
0
-

Myiyk napsal(a):

@Zuben45 jaké jsou poplatky za platbu?
Nesouvicí to s technickým řešením, ale zajímalo by mě to.

GoPay má 2.2% + 3Kč. PayU mlží.

myslím, že asi 3%, ale nejsem si jistý, musel bych se zeptat.

Myiyk
Člen | 321
+
0
-

@Zuben45 povedlo se už vyřešit problém s 404?

Zuben45
Člen | 268
+
+1
-

Stále ne, zkoušel jsem wireshark, ale nějak se v něm nevyznám, až moc dat mi tam běhá :/.

Někde jsem četl, že může být problém v htacess, je to možné ? Popřípadě, jak mohu zaznamenat to co ProxyPay posílá ? Už jsem z toho v koncích :/

Možná to dělám blbě, ale data dostávám tímto způsobem:

public function renderValidation(){
	    $httpRequest = $this->getHttpRequest();
	    $data2 = $httpRequest->getPost();
	    if($this->users->checkOrderValidation($data2) === true){
		$html = "[OK]";
	    }else{
		$html = "[ERROR]".$this->users->checkOrderValidation($data2);
	    }
	    $this->template->validate = $html;
	   //Overeni, ze bylo pristoupeno k scriptu.
	    $template = $this->createTemplate();
	    $template->setFile(__DIR__ . '/templates/Basket/validation.latte');
	    $template->validate = $html;
	    $template->presenter = $this->presenter;
	    $template->_presenter = $this->presenter;
	    $template->control = $this->presenter;
	    $template->_control = $this->presenter;

	    $file = fopen("validation.xml","w");
	    fwrite($file, (string) $template);
	    fclose($file);
	}

mám to i na action, ale nijak to nepomáhá

EDIT: ještě me napadlo, jestli to nebude routováním, pro validation,rejection a confirmation je nutné aby byli na HTTPS, tak jsem je nastavil v routeru následovně:

$router[] = new Route('[<locale=cz cz|sk>/]kosik/confirmation','Basket:confirmation', Route::SECURED);
$router[] = new Route('[<locale=cz cz|sk>/]kosik/validation','Basket:validation', Route::SECURED);
$router[] = new Route('[<locale=cz cz|sk>/]kosik/rejection','Basket:rejection', Route::SECURED);

EDIT2: Tak už vím, konečně jsem se již dostal na Platební bránu, hurááá :D, bylo to právě routováním, odebral jsem parametr locale a zdá se že funguje :)

$router[] = new Route('kosik/confirmation','Basket:confirmation', Route::SECURED);
$router[] = new Route('kosik/validation','Basket:validation', Route::SECURED);
$router[] = new Route('kosik/rejection','Basket:rejection', Route::SECURED);

Editoval Zuben45 (27. 1. 2016 22:39)

iguana007
Člen | 970
+
+1
-

Zuben45 napsal(a):

Stále ne, zkoušel jsem wireshark, ale nějak se v něm nevyznám, až moc dat mi tam běhá :/.

Super, že si to vyřešil. K tomu WireSharku:

  • Je to jednoduché, po spuštění Wiresharku si vyber vlevo nahoře interface, skrz který chceš traffic monitorovat (WiFi/LAN) a klikni v tom okně pro výběr interface na „Start“, což ti začne monitorovat veškerý traffic na vybraném interface.
  • Následně si nad logem klikni na „Expression“ vedle inputu Filter
  • v seznamu Field name si najdi HTTP a vyber si tam některé z pravidel, které by identifikovaly requesty, které tě zajímají, např.: http.request.uri apod.
  • po zadání filtru by si měl vidět ve wiresharku jen to, co tě zajímá
  • u jednotlivých requestu si pak můžeš různě rozklikávat hlavičky, responses atd.
Zuben45
Člen | 268
+
0
-

Tak jsem nyní spustil na ostrý provoz (změnil jsem i routy na správné adresy), a opět dostávám 404.

$router[] = new Route('validcs','Basket:validation', Route::SECURED);
$router[] = new Route('okcs','Basket:transactionOk', Route::SECURED);
$router[] = new Route('nokcs','Basket:transactionError', Route::SECURED);
$router[] = new Route('postcs','Basket:confirmation', Route::SECURED);

ProxyPay se nemůže opět dostat k validcs, vrací chybu 404. Neví někdo, čím by to mohlo být ?

Na adresu <domain>/validcs se bez problému dostanu.

Děkuji

EDIT: Vyřešeno.

Kdyby někdo někdy potřeboval ;)

Podpora u webhostingu přepisovala .htaccess a nastavila:

RewriteCond %{HTTP:Accept-Encoding} gzip

stačilo smáznout a platby frčí :)

EDIT2: Jen se teď hodně zpomalil web :/

Editoval Zuben45 (8. 2. 2016 21:11)