Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 33
  1. #1
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662

    Integrare IPN di PayPal

    Ho provato a cercare e a fare da solo, ma mi mancano degli anelli di congiunzione

    Dovrei integrare il sistema di notifica immediata di pagamento tramite PayPal.

    Il concetto dovrebbe essere semplice...
    - l'utente clicca sul tastino PAGA ADESSO
    - vengono inviate alcune info alla pagina PayPal che elabora il pagamento
    - a pagamento eseguito l'utente viene reindirizzato ad una pagina precisa del mio sito dove ho avrò bisogno di 2 variabili, l'ok dell'avenuto pagamento e l'indicazione di quale utente attivare (l'username per es.)

    Ora, tutte le impostazione dal mio account PayPal le ho eseguite (come indicato in questo confuso (confondente) tutorial)
    Ho creato il tasto "Paga Adesso":

    Codice PHP:
    <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
        <input type="hidden" name="cmd" value="_s-xclick">
        <input type="hidden" name="usernamen" value="<?php echo $usernamen?>">
        <input type="hidden" name="hosted_button_id" value="XXXXXXXXX">
        <input type="image" src="https://www.paypal.com/it_IT/IT/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - Il sistema di pagamento online più facile e sicuro!">
        [img]https://www.paypal.com/it_IT/i/scr/pixel.gif[/img]
    </form>
    (si può notare che ho aggiunto un campo per l'username)

    Ho anche creato la pagina dove deve puntare PayPal a pagamento ultimato:

    Codice PHP:
    <?php
    // read the post from PayPal system and add 'cmd'
    $req 'cmd=_notify-synch';

    $tx_token $_GET['tx'];

    $auth_token "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

    $req .= "&tx=$tx_token&at=$auth_token";


    // post back to PayPal system to validate
    $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.sandbox.paypal.com'80$errno$errstr30);
    // If possible, securely post back to paypal using HTTPS
    // Your PHP server will need to be SSL enabled
    // $fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);

    if (!$fp) {
    // HTTP ERROR
    } else {
    fputs ($fp$header $req);
    // read the body data
    $res '';
    $headerdone false;
    while (!
    feof($fp)) {
    $line fgets ($fp1024);
    if (
    strcmp($line"\r\n") == 0) {
    // read the header
    $headerdone true;
    }
    else if (
    $headerdone)
    {
    // header has been read. now read the contents
    $res .= $line;
    }
    }

    // parse the data
    $lines explode("\n"$res);
    $keyarray = array();
    if (
    strcmp ($lines[0], "SUCCESS") == 0) {
    for (
    $i=1$i<count($lines);$i++){
    list(
    $key,$val) = explode("="$lines[$i]);
    $keyarray[urldecode($key)] = urldecode($val);
    }
    // check the payment_status is Completed
    // check that txn_id has not been previously processed
    // check that receiver_email is your Primary PayPal email
    // check that payment_amount/payment_currency are correct
    // process payment
    $firstname $keyarray['first_name'];
    $lastname $keyarray['last_name'];
    $itemname $keyarray['item_name'];
    $amount $keyarray['mc_gross'];

    echo (
    "

    <h3>Thank you for your purchase!</h3></p>"
    );

    echo (
    "[b]Payment Details[/b]
    \n"
    );
    echo (
    "[*]Name: $firstname $lastname\n");
    echo (
    "[*]Item: $itemname\n");
    echo (
    "[*]Amount: $amount\n");
    echo (
    "");
    }
    else if (
    strcmp ($lines[0], "FAIL") == 0) {
    // log for manual investigation
    }

    }

    fclose ($fp);

    ?>

    Your transaction has been completed, and a receipt for your purchase has been emailed to you.
    You may log into your account at [url='https://www.paypal.com'][url]www.paypal.com[/url][/url] to view details of this transaction.
    Ma non so come far funzionare il tutto!!!
    C'è qualcuno che può indirizzarmi verso un tutorial "comprensibile" per Dummies o aiutarmi a trovare una via di scampo?

    Graziegraziegrazie
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  2. #2
    ho lo stesso problema... qualcuno può farci un esempio?
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  3. #3
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Ciao!
    Perdonami, avrei dovuto mettere io subito dove ho trovato la soluzione...

    guarda cosa c'è a questo link?

    http://www.yourinspirationweb.com/20...eparazione-16/

    Molto utile e continuo a ringraziare Maurizio di YIW!!!
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  4. #4
    grazie... la sto seguendo... speriamo bene
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  5. #5
    Ho seguito la guida pezzo pezzo, ma alla fine la pagina non mi ritorna nessun POST.
    Invece mi arrivano le email di sendReport() con tutti i campi vuoti.
    Che posso fare per capirci qualcosa in più?
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  6. #6
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Mi sembra ovvio che c'è un errore da qualche parte.
    Ti premetto che a me Sendbox mi dava problemi, così ho cominciato a testare "sul serio" impostando il pagamento a 0,51€ (in modo da avere un importo inequivocabile) e stornando con i rimborsi tutti i pagamenti.

    Alcune domande (magari qualcosa ti è scappata, non si sa mai):

    - hai impostato nello script l'indirizzo email PRINCIPALE di PayPal?

    - hai impostato la pagina di "ascolto" su PayPal?
    (profilo->strumenti vendita->Notifiche immediate di pagamento->Modifica impostazioni)

    - hai impostato le preferenze per i pagamenti su sito web?
    (profilo->strumenti vendita->Preferenze per i pagamenti su sito web)
    Ritorno automatico: Attivato
    URL di rinvio: (tuo url di reinvio a fine pagamento)
    Trasferimento dei dati del pagamento: Attivato

    Un consiglio, consulta anche la guida ufficiale , non solo il tutorial (uno completa l'altro)
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  7. #7
    Dovrei averle fatte quelle cose

    Ho seguito la guida ed ho fatto le classi quasi identiche a quelle... solo non ho usato il DB ed ho solo stampato a video.
    Il codice del bottone è questo
    Codice PHP:
    <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
    <
    input type="hidden" name="cmd" value="_s-xclick">
    <
    input type="hidden" name="hosted_button_id" value="64EKS4QHVQ7K4">
    <
    input type="image" src="https://www.sandbox.paypal.com/it_IT/IT/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - Il sistema di pagamento online più facile e sicuro!">
    [
    img]https://www.sandbox.paypal.com/it_IT/i/scr/pixel.gif[/img]
    </form
    Il pagamento avviene ma non ritorna nessun dato alla pagina (cmq fino alla pagina arriva)
    Se ho capito bene io potrei aggiungere qui i dati che mi servono come input type=hidden e dovrebbero ritornarmi dopo la verifica... giusto?
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  8. #8
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Se non ho capito male (...se non ho capito male), ti sei incartato dove mi sono bloccato anche io all'inizio.

    La pagina di ascolto (se hai seguito il tutorial è YIIListener.php) non stampa a video nulla!!
    E' una pagina che esegue le operazioni che gli dici in background.
    Per vedere se tutto va bene, o per lo meno per vedere gli "echo" delle variabili per controllarle, dovresti inviartele per email.

    Quindi provvisoriamente inserisci (per forzare) al posto di $to in 'mail' il tuo indirizzo e-mail e all'interno del messaggio inserisci le variabili che vuoi controllare.
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  9. #9
    asp... giusto per vedere se ho capito...
    Io ho la pagina col bottone -> clicco e vado su paypal dove effettuo le operazioni. -> paypal mi rimanda alla pagina di notifica (a me si chiama paypal.php) dove richiamo la classe. Qui non dovrei poter stampare a video i dati?
    Altra cosa... mi arriva sempre la mail del sendReport() che se ho capito bene si esegue quando qualcosa non va.
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  10. #10
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Giusto, quando il pagamento ha fatto casino da qualche parte.
    Hai controllato se all'account dell'amministratore il pagamento è arrivato?
    Stai usando la Sendbox?
    Cosa c'è scritto nella mail?

    ---------------

    La tua pagina paypal.php (che richiama la classe) effettua semplicemente delle operazioni tipo:
    - aggiornare il database
    - inviare mail

    Per vedere dove sbagli dovrai stampare da qualche parte le variabili per vedere cosa ti dice (premetto che io sono un novizio di php e parlo solo per la mia poca esperienza da settembre scorso).

    Per stampare le variabili, non potendo visualizzarle a video, bisognerà passarle per email... quindi:

    dove hai //messaggio all'amministratore
    inserisci le variabili che ti interessa controllare e il tuo indirizzo di posta elettronica, tipo

    $subject = "$add Problema IPN";
    $message = "Si è verificato un problema nella seguente transazione:\r\n\r\n";
    $message .= "Nome: " . $_POST['first_name'] . ' ' . $_POST['last_name'] . "\r\n";
    $message .= "email: " . $_POST['payer_email'] . "\r\n";
    $message .= "id transazione: " . $_POST['txn_id'] . "\r\n";
    $message .= "oggetto: " . $_POST['transaction_subject'];
    $message .= "valore personalizzato: " . $_POST['custom'];

    mail([RED]tua@mail.me[/RED],$subject,$message,"From: " . NO_REPLY);
    return;

    Questo se dovesse dare un problema.
    Per vedere le variabili se tutto va bene inserisci uno script simile a quello di sopra nella funzione isReadyTransaction() giusto sotto return TRUE;

    Oh, posso anche sbagliare eh... mi rimetto sempre a chi mi ha insegnato fino ad oggi tu intanto falla questa prova che credo dovrebbe funzionare.
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.