Hi Jim,

Normally, when the status is pending, Paypal sends you a new notification when 
the status becomes completed, if it ever becomes completed. So, from your part, 
dying here would just be fine. (or store data for your records)

Lionel.
  ----- Original Message ----- 
  From: Jim Rey 
  To: Alfie John 
  Cc: Mason List 
  Sent: Thursday, February 22, 2007 3:48 PM
  Subject: Re: [Mason] How do I implement PayPal IPN code in Mason?


  Alfie

  The code example shows:


  my $ipn = new Business::PayPal::IPN() or die Business::PayPal::IPN->error();  
# if we come this far, we're guaranteed it was a valid transaction.  if ( 
$ipn->completed() ) {
    # means the funds are already in our paypal account.  } elsif ( 
$ipn->pending() ) {    # the payment was made to your account, but its status 
is still pending    # $ipn->pending() also returns the reason why it is so.
  } elsif ( $ipn->denied() ) {    # the payment denied  } elsif ( 
$ipn->failed() ) {    # the payment failed  }Obviously, I won't use die because 
it is generally bad web practice, but if the returned status is pending, what 
do you do, resubmit at intervals using cron job? 

  Jim


  On 22/02/07, Jim Rey <[EMAIL PROTECTED]> wrote:
    Alfie

    Thanks

    I'll check it out.

    Jim



    On 22/02/07, Alfie John <[EMAIL PROTECTED]> wrote: 
      Hey Jim,


      I've used Business::PayPal::IPN in the past and found it very reliable. 


      CPAN is your friend:
      http://search.cpan.org/search?query=paypal+ipn&mode=all


      Alfie John
      http://www.freehouse.com.au


      On 23/02/2007, at 12:30 AM, Jim Rey wrote:


        Hi

        I have downloaded some sample code written in perl from the PayPal 
site, but it appears to handle the POSTed parameters directly rather like in 
CGI perl. I use mod_perl2 and Apache2 code. Does anyone have a copy of this 
code already converted for Mason2 / mod_perl2 / Apache2?  

        Jim Rey

        The free code provided follows:

        #!/usr/bin/perl

        #(requires LWP::UserAgent)

        # read post from PayPal system and add 'cmd'
        read (STDIN, $query, $ENV{'CONTENT_LENGTH'}); 
        $query .= '&cmd=_notify-validate';

        # post back to PayPal system to validate
        use LWP::UserAgent;
        $ua = new LWP::UserAgent;
        $req = new HTTP::Request 'POST',' http://www.paypal.com/cgi-bin/webscr';
        $req->content_type('application/x-www-form-urlencoded');
        $req->content($query);
        $res = $ua->request($req);

        # split posted variables into pairs 
        @pairs = split(/&/, $query);
        $count = 0;
        foreach $pair (@pairs) {
        ($name, $value) = split(/=/, $pair);
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $variable{$name} = $value; 
        $count++;
        }

        # assign posted variables to local variables
        $item_name = $variable{'item_name'};
        $item_number = $variable{'item_number'};
        $payment_status = $variable{'payment_status'}; 
        $payment_amount = $variable{'mc_gross'};
        $payment_currency = $variable{'mc_currency'};
        $txn_id = $variable{'txn_id'};
        $receiver_email = $variable{'receiver_email'};
        $payer_email = $variable{'payer_email'}; 

        if ($res->is_error) {
        # HTTP error
        }
        elsif ($res->content eq 'VERIFIED') {
        # check the $payment_status=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
        }
        elsif ($res->content eq 'INVALID') {
        # log for manual investigation
        }
        else {
        # error
        }
        print "content-type: text/plain\n\n"; 


        -- 
        Jim Rey
        48 Laburnum Park
        Bradshaw
        Bolton BL2 3BU
        United Kingdom
        Tel: 01204 593 222
        Mob: 07816 751 874
        
------------------------------------------------------------------------- 
        Take Surveys. Earn Cash. Influence the Future of IT
        Join SourceForge.net's Techsay panel and you'll get the chance to share 
your
        opinions on IT & business topics through brief surveys-and earn cash
        
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV_______________________________________________
        Mason-users mailing list
        Mason-users@lists.sourceforge.net
        https://lists.sourceforge.net/lists/listinfo/mason-users 





    -- 
    Jim Rey
    48 Laburnum Park
    Bradshaw
    Bolton BL2 3BU
    United Kingdom
    Tel: 01204 593 222
    Mob: 07816 751 874 



  -- 
  Jim Rey
  48 Laburnum Park
  Bradshaw
  Bolton BL2 3BU
  United Kingdom
  Tel: 01204 593 222
  Mob: 07816 751 874 


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


  -------------------------------------------------------------------------
  Take Surveys. Earn Cash. Influence the Future of IT
  Join SourceForge.net's Techsay panel and you'll get the chance to share your
  opinions on IT & business topics through brief surveys-and earn cash
  http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV


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


  _______________________________________________
  Mason-users mailing list
  Mason-users@lists.sourceforge.net
  https://lists.sourceforge.net/lists/listinfo/mason-users
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Mason-users mailing list
Mason-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mason-users

Reply via email to