in reply to Re^3: PayPal IPN Script End of script output before headers:
in thread PayPal IPN Script End of script output before headers:

Hi, I updated my script, but now some of the variables are not accessible like item_number here is the code
#!/usr/bin/perl use strict; use warnings; use CGI; use CGI::Carp 'fatalsToBrowser'; use LWP::UserAgent; use Email::Sender::Simple qw(sendmail); use Email::Sender::Transport::SMTPS (); use Email::Simple (); use Email::Simple::Creator (); my $smtpserver = 'smtp.gmail.com'; my $smtpport = '587'; my $smtpuser = 'alexjaquet@gmail.com'; my $smtppassword = ''; my $transport = Email::Sender::Transport::SMTPS->new({ host => $smtpserver, port => $smtpport, ssl => "starttls", sasl_username => $smtpuser, sasl_password => $smtppassword, }); my $q = CGI->new(); my $query = 'cmd=_notify-validate;'.$q->query_string; $query =~ s/;/&/g; my $PP_server = 'ipnpb.sandbox.paypal.com'; # sandbox IP:173.0.82.66 my $url = 'https://'.$PP_server.'/cgi-bin/webscr'; my $ua = LWP::UserAgent->new( ssl_opts => { keep_alive => 1, verify_hostname => 1, SSL_version => 'SSLv23:!TLSv12', } ); my $req = HTTP::Request->new('POST',$url); $req->content_type('application/x-www-form-urlencoded'); $req->header(Host => $PP_server); $req->content($query); my $msg; my $res = $ua->request($req); # make the variable hash my %variable = map { split(m'='x, $_, 2) } grep { m'='x } split(m'&'x, $query); # assign posted variables to local variables my $item_name = $variable{'item_name_1'}; my $item_number = $variable{'item_number'}; my $item_number_1 = $variable{'item_number_1'}; my $payment_status = $variable{'payment_status'}; my $payment_amount = $variable{'mc_gross'}; my $payment_currency = $variable{'mc_currency'}; my $txn_id = $variable{'txn_id'}; my $receiver_email = $variable{'receiver_email'}; my $payer_email = $variable{'payer_email'}; if ($res->is_success) { $msg = "SUCCESS : ".$res->decoded_content; if ($res->decoded_content eq 'VERIFIED') { my $email = Email::Simple->create( header => [ To => 'alexjaquet@gmail.com', From => 'robot@avant-garde.info', Subject => "Payement recu d une publicite p +ar :".$payer_email , ], body => $msg." TX ID : ".$txn_id. " ITEM NUMBER : ".$item +_number . " ITEM NUMBER_1 : ".$item_number_1 ."RECEIVER_EMAIL : ".$r +eceiver_email,); sendmail($email, { transport => $transport }); } } else { $msg = "ERROR : ".$res->status_line; my $email = Email::Simple->create( header => [ To => 'alexjaquet@gmail.com', From => 'robot@avant-garde.info', Subject => 'Erreur dans le payement d une p +ublicite', ], body => $msg,); sendmail($email, { transport => $transport }); }
My html page looks like the Following
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w +3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Supermarket</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1 +" /> <link href="/css/main.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="conteneur"> <br /> <br/> <div class="centre"> <br/> <form method='POST' action='https://www.sandbox.paypal.com/cgi-bin +/webscr'> <input type='hidden' name='cmd' value='_cart'> <input type='hidden' name='upload' value='1'> <input type='hidden' name='business' value='alexjaquet@gmail.com'> <input type='hidden' name='bn' value='OnlineStore_Cart_WPS'> <input type='hidden' name='lc' value='CH'> <input type='hidden' name='currency_code' value='CHF'> <input type='hidden' name='no_note' value='1'> <input type='hidden' name='no_shipping' value='2'> <input type='hidden' name='quantity_1' value='1'> <input type='hidden' name='item_number_1' value='$ARTICLE{'id_article' +}'> <input type='hidden' name='item_name_1' value='$ARTICLE{'name'}'> <input type='hidden' name='amount_1' value='50.00'> <input type="hidden" name='notify_url' value='http://avant-garde.info/ +cgi-bin/ipn.pl'> <input type='submit' style='font-family:Arial;' value='Secure Order Fo +rm' name='submit3'> </form> </td></tr></table></BODY> </HTML>
And my email response is the Following : SUCCESS : VERIFIED TX ID : 4AJ83296LX592004J ITEM NUMBER : ITEM NUMBER_1 : RECEIVER_EMAIL : alexjaquet%40gmail.com

Replies are listed 'Best First'.
Re^5: PayPal IPN Script End of script output before headers:
by poj (Abbot) on Nov 28, 2019 at 18:40 UTC

    Consider adding else to deal with a response other than VERIFIED.

    if ($res->decoded_content eq 'VERIFIED') { # send email for VERIFIED } else { # send email for INVALID or other response }
    poj
Re^5: PayPal IPN Script End of script output before headers:
by marto (Cardinal) on Nov 28, 2019 at 14:19 UTC

    If you are asking for help with something at least show the code that generates the error you report, otherwise you just waste peoples time. In your updated example line 74 is blank.

      Don't understand why but using a custom field fix the problem, thanks all for your help