Plus Forum E-handelsforumet Betalsystem Problem med klarna | woocommerce

Visar 7 inlägg - 1 till 7 (av 7 totalt)
  • Författare
    Inlägg
  • #99747
    seoonline
    Deltagare

    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!!!!!!!!!!

    #160627
    seoonline
    Deltagare

    Jag fick detta på wn.se:

    print_r($_SERVER);

    Vad skulle detta kunna vara och var skall jag sätta in det?

    #160628
    Dan
    Deltagare

    Det 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.

    #160631
    seoonline
    Deltagare

    Resolved.

    $_SERVER

    #160632

    HTTP_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;

    #160633
    seoonline
    Deltagare

    Inte 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.

    #160634

    Jag 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).

Visar 7 inlägg - 1 till 7 (av 7 totalt)
  • Du måste vara inloggad för att svara på detta ämne.