| 
<?php
 function my_pre_processing ($ipn)
 {
 // Process IPN as soon as it is received from Paypal server
 }
 
 function my_post_processing ($ipn, $status)
 {
 // Process IPN after the connection to the Paypal secured server
 // Depending of the status (INVALID or VERIFIED or false)
 print_r($ipn);
 }
 
 if(count($_POST)>0)
 {
 include "i_paypal.php";
 
 $pp = new paypal_ipn ();
 
 // If you need proxy support
 //$pp->set_proxy_options ("proxy:8080", "user:pwd");
 
 // Give function references
 $pp->set_process_functions ("my_pre_processing", "my_post_processing");
 
 // Pass the POST table to the Paypal processor
 $pp->process_notification ($_POST, true);
 }
 else
 {
 // Use the form below to simulate a POST from Paypal server
 // Note : MD5 used below are real Paypal IDs
 ?>
 <pre>
 <form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>">
 <input type="submit"><br>
 receiver_email     <input name="receiver_email" value="[email protected]">
 item_name          <input name="item_name" value="Item Name">
 item_number        <input name="item_number" value="10010">
 quantity           <input name="quantity" value="1">
 invoice            <input name="invoice" value="<?php echo md5(microtime()) ?>">
 custom             <input name="custom" value="">
 option_name1       <input name="option_name1" value="">
 option_selection1  <input name="option_selection1" value="">
 option_name2       <input name="option_name2" value="">
 option_selection2  <input name="option_selection2" value="">
 num_cart_items     <input name="num_cart_items" value="">
 payment_status     <select name="payment_status"><option value="Completed">Completed</option><option value="Pending">Pending</option><option value="Failed">Failed</option><option value="Denied">Denied</option></select>
 pending_reason     <select name="pending_reason"><option value="echeck">echeck</option><option value="intl">intl</option><option value="verify">verify</option><option value="address">address</option><option value="upgrade">upgrade</option><option value="unilateral">unilateral</option><option value="other">other</option></select>
 payment_date       <input name="payment_date" value="<?php echo date("h:i:s M j, Y") ?>">
 payment_gross      <input name="payment_gross" value="100">
 payment_fee        <input name="payment_fee" value="5">
 txn_id             <input name="txn_id" value="<?php echo md5(microtime().rand(0,1000)) ?>">
 txn_type           <select name="txn_type"><option value="web_accept">web_accept</option><option value="cart">cart</option><option value="send_money">send_money</option></select>
 first_name         <input name="first_name" value="John">
 last_name          <input name="last_name" value="Smith">
 address_street     <input name="address_street" value="2, Hollywood Bld">
 address_city       <input name="address_city" value="Hollywood">
 address_state      <input name="address_state" value="California">
 address_country    <input name="address_country" value="USA">
 address_status     <select name="address_status"><option value="confirmed">confirmed</option><option value="unconfirmed">unconfirmed</option></select>
 payer_email        <input name="payer_email" value="payer_email@payer_domain.com">
 payer_id           <input name="payer_id" value="ID_123456">
 payer_status       <select name="payer_status"><option value="verified">verified</option><option value="unverified">unverified</option><option value="intl_verified">intl_verified</option></select>
 payment_type       <select name="payment_type"><option value="echeck">echeck</option><option value="instant">instant</option></select>
 notify_version     <input name="notify_version" value="1.3">
 verify_sign        <input name="verify_sign" value="<?php echo md5(rand(1,10000)) ?>">
 mc_gross           <input name="mc_gross" value="">
 mc_fee             <input name="mc_fee" value="">
 mc_currency        <input name="mc_currency" value="">
 </form>
 <pre>
 <?php
 }
 
 ?>
 
 |