Startsida › Forum › E-handelsforumet › Betalsystem › Problem med klarna | woocommerce
Etiketter: klarna, woocommerce, wordpress
- Detta ämne har 6 svar, 3 deltagare, och uppdaterades senast för 11 år, 9 månader sedan av Christoffer Tyrefors.
-
FörfattareInlägg
-
7 mars, 2013 kl. 12:09 #99747seoonlineDeltagare
Har prövat allt men hoppas att någon har samma problem och löst det…
I have a problem when checkingout in my webshop. Website sends a ”internal” ip ( 10.0.18.5) from isp and my payment gateway dont accept it.
My isp tells me to change this:
$_SERVER ===> $_SERVER
(då försvinner paypal och direktbetalning som alternativ… skumt)My payment gateway tell me to change:
return $tmp_ip; ====> return $_SERVER[”HTTP_X_FORWARDED_FOR”];My Code:
[PHP]/**
* Returns the clients IP address.
*
* @return string
*/
public function getClientIP() {
//Proxy handling.
$tmp_ip = $_SERVER;
$x_fwd = isset($_SERVER[”HTTP_X_FORWARDED_FOR”]) ? $_SERVER[”HTTP_X_FORWARDED_FOR”] : null;
if(self::$x_forwarded_for && $x_fwd !== null) {
//Cut out the first IP address
if(($cpos = strpos($x_fwd, ’,’)) !== false) {
$tmp_ip = substr($x_fwd, 0, $cpos);
$x_fwd = substr($x_fwd, $cpos+2);
}
else { //Only one IP address
$tmp_ip = $x_fwd;
$x_fwd = null;
}
}
$this->x_fwd = $x_fwd;return $tmp_ip;
}[/PHP]
HELP!!!!!!!!!!7 mars, 2013 kl. 13:13 #160627seoonlineDeltagareJag fick detta på wn.se:
print_r($_SERVER);
Vad skulle detta kunna vara och var skall jag sätta in det?
7 mars, 2013 kl. 13:19 #160628DanDeltagareDet skriver ut arrayen $_SERVER. Det löser inga problem men kanske kan felsöka det.
Ligger du via någon vpn eller proxy eller nått på din server, det låter helt knäppt upplägg och som att antingen din server-setup eller din kod är helt fucked up.
Om du inte kan koda ska du inte sitta och fulhacka sådana ändringar i din kod.
7 mars, 2013 kl. 13:47 #160631seoonlineDeltagareResolved.
$_SERVER
7 mars, 2013 kl. 13:48 #160632Christoffer TyreforsDeltagareHTTP_X_FORWARDED_FOR kan ju ge flera ipadresser (en för klienten, och en proxy TROR jag) och förmodligen är det så att den ibland INTE hittar någon klient och då returnerar enbart proxyns och fuckar up. Det är bara ett rimligt antagande som inte direkt löser något, så som andra sagt borde du kasta in print_r($server) och se hur det ser ut egentligen. Lägg det på första raden i metoden och gör en testsida i stil med
$obj = new Vad-klassen-detta-ligger-i-nu-heter();
$ip = $obj->getClientIP();
echo $ip;7 mars, 2013 kl. 13:49 #160633seoonlineDeltagareInte direkt ett fulhack tycker jag. Nu fungerar det i alla fall. Skrämmande att inte Klarnas utvecklare spikade det vid första titten.
Det står tom return tmp… Kunde jag nog förstått men det är lätt att vara efterklok.
7 mars, 2013 kl. 14:35 #160634Christoffer TyreforsDeltagareJag tror nog visst att du gör ett fulhack. HTTP_X_REAL_IP är inte riktigt samma sak som HTTP_X_FORWARDED_FOR. Att den heter tmp är är för att den, när den sätts i början av metoden, är temporär eftersom man ännu inte prövat om de andra server-variablerna finns. Problemet kan lika gärna vara ”self::$x_forwarded_for” som inte syns någonstans i din kod. Kanske sätts den inte i konstruktorn som den (förmodligen) borde?
Allt är ju lite beroende på om denna klass är enkom för Klarna eller om den används av andra betalsätt (vilket den verkar göra då du säger att detta förstör andra betalsätt).
-
FörfattareInlägg
- Du måste vara inloggad för att svara på detta ämne.