Visualizzazione risultati 1 fino 9 di 9

Discussione: phpprobid e fsockopen()

  1. #1
    Guest

    Predefinito phpprobid e fsockopen()

    Sto testando su av il cms phpprobids per una società maltese, in pratica ho un problema con il pagamento di paypal

    il sito funziona in account mode, ovvero l'user ricarica il proprio account per mettere le aste (il pagamento viene scalato dall'ammontare generale).

    procedendo al pagamento in testmode (modalità interna per il testing di pagamento) nessun problema; i crediti vengono accreditati

    con paypal, dopo aver impostato il callback url nel pannello ipn di paypal, ho provato a fare un pagamento: soldi ricevuti, code 200 di pp, ritorno sul sito con il callback che riconosce il pagamento effettuato, ma non mi accredita nessun dindino nell'account.


    contattando il supporto, mi ha detto che non è abilitato fsopen_url (il che non è possibile perchè ho il server to server abilitato)

    ecco il codice del processore del pagamento:
    Codice PHP:
    session_start();

    define ('IN_SITE', 1);

    include_once (
    'includes/global.php');
    include_once (
    'includes/class_fees.php');

    (string)
    $active_pg = 'PayPal';
    (string)
    $error_output = null;

    $pg_enabled = $db->get_sql_field("SELECT checked FROM " . DB_PREFIX . "payment_gateways WHERE
    name='"
    . $active_pg . "' LIMIT 0,1", "checked");

    if (!
    $pg_enabled) { die(GMSG_NOT_AUTHORIZED); }

    $req = 'cmd=_notify-validate';

    foreach (
    $_POST as $key => $value)
    {
    $value = urlencode(stripslashes($value));
    $req .= '&' . $key . '=' . $value;
    }

    $header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";

    $fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);
    //$fp = fsockopen('ssl://www.sandbox.paypal.com',443,$err_num,$err_str,30);


    $payment_status = $_POST['payment_status'];
    $payment_gross = $_POST['mc_gross'];
    $payment_currency = $_POST['mc_currency'];
    $txn_id = $_POST['txn_id'];

    list(
    $custom, $fee_table) = explode('TBL',$_POST['custom']);

    if (!
    $fp)
    {
    $error_output = $errstr . ' (' . $errno . ')';
    }
    else
    {
    fputs ($fp, $header . $req);

    while (!
    feof($fp))
    {
    $res = fgets ($fp, 1024);

    if (
    strcmp ($res, "VERIFIED") == 0 && $payment_status == "Completed")
    {
    $process_fee = new fees();
    $process_fee->setts = &$setts;

    $process_fee->callback_process($custom, $fee_table, $active_pg, $payment_gross, $txn_id, $payment_currency);
    }
    }
    fclose ($fp);
    }
    ?>
    any ideas???

  2. #2
    Guest

    Predefinito

    prima ancora di controllare la logica

    proverei fsockopen+ssl su un sito qs

  3. #3
    Guest

    Predefinito

    nel sito live sarà:
    $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

    ma non funge uguale... è una settimana che ci sbatto.

    non capisco perchè nn accrediti gli account

  4. #4
    Guest

    Predefinito

    si lo immaginavo (ssl://www.paypal.com)

    ma intendevo

    creare una pagina con dentro

    // codice pigramente ripreso dalla doc di php
    <?php
    $fp = fsockopen("ssl://www.google.com", 443, $errno, $errstr, 30);
    if (!$fp) {
    echo "$errstr ($errno)<br />\n";
    } else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.google.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
    echo fgets($fp, 128);
    }
    fclose($fp);
    }
    ?>

    e vedere se 'funziona'

    solo in seguito, verificare la logica del codice che hai incollato ec
    Ultima modifica di FormularioDiDrakensang : 17-08-2014 alle ore 13.25.58

  5. #5
    Guest

  6. #6
    Guest

    Predefinito

    beh la risposta che mi aspettavo è
    HTTP/1.1 302 Found Cache-Control: private Content-Type: text/html; charset=UTF-8 Location: https://www.google.it/?gfe_rd=cr&ei=rJfwU8bcNcio8weXkYK4Dg Content-Length: 259 Date: Sun, 17 Aug 2014 11:53:16 GMT Server: GFE/2.0 Connection: close

    mentre a te dice
    HTTP/1.0 302 Found Cache-Control: private Date: Sun, 17 Aug 2014 11:53:33 GMT Location: http://www.google.de/?gfe_rd=cr&ei=vZfwU_fCE4iJ8Qeqs4CoDw Server: GFE/2.0 Content-Length: 258 Content-Type: text/html; charset=UTF-8 Alternate-Protocol: 80:quic

    ma https è off su whsicilia

    aka pare sia uscito dal tunnel ssl

    comunque in

    if (strcmp ($res, "VERIFIED") == 0 && $payment_status == "Completed")
    aggiungerei

    print "sono arrivato qui";
    print $setts;

    ---------------
    Ultima modifica di FormularioDiDrakensang : 17-08-2014 alle ore 14.03.26

  7. #7
    Guest

    Predefinito

    in realtà il
    print "sono arrivato qui";
    print $setts;

    me lo da quando mi redireziona al paymentcompleted.php ...

    ti spiego meglio... effettuato il pagamento (quindi dopo if (strcmp ($res, "VERIFIED") == 0 && $payment_status == "Completed") mi rientra nel sito riconoscendo che ho correttamente pagato.

    il problema è che non riconosce l'mc_gross e le altre variabili trasmesse con il pagamento

    $payment_status = $_POST['payment_status'];
    $payment_gross = $_POST['mc_gross'];
    $payment_currency = $_POST['mc_currency'];
    $txn_id = $_POST['txn_id'];
    Ultima modifica di studentisito : 17-08-2014 alle ore 14.06.47

  8. #8
    Guest

    Predefinito

    quello lo consigliavo perchè:

    if (strcmp ($res, "VERIFIED") == 0 && $payment_status == "Completed") // ok pagamento accettato
    {
    $process_fee = new fees(); // creo oggetto fees
    $process_fee->setts = &$setts; // importo dati da chissadove

    $process_fee->callback_process($custom, $fee_table, $active_pg, $payment_gross, $txn_id, $payment_currency);
    // accredito
    }
    }

    volevo sapere se qui ci arrivava il codice e spt se setts è definito, se non lo è, non puoi accreditare alcunchè, ovvio che anche il resto deve essere ok ($custom, $fee_table, $active_pg, $payment_gross, $txn_id, $payment_currency

    quando il codice non è tuo, la via piu' breve per capire cosa succede è piazzare dei paletti
    Ultima modifica di FormularioDiDrakensang : 17-08-2014 alle ore 14.10.55

  9. #9
    Guest

    Predefinito

    dici così???
    Codice PHP:
    if (strcmp ($res, "VERIFIED") == 0 && $payment_status == "Completed")
    {
    print
    "sono arrivato qui";
    print
    $setts;
    /*$process_fee = new fees();
    $process_fee->setts = &$setts;

    $process_fee->callback_process($custom, $fee_table, $active_pg, $payment_gross, $txn_id, $payment_currency); */
    }

    edit: ho provato con il file modificato, ma mi va in payment_completed.php quindi non vedo nulla, ma è strano perchè non capisco da dove viene il redirect se ho commentato

    Non so come ho fatto, ma ho risolto il mistero...
    Ultima modifica di studentisito : 18-08-2014 alle ore 13.25.58

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •