Advertisement
Guest User

Untitled

a guest
May 9th, 2013
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.66 KB | None | 0 0
  1. <?php
  2. header('Content-type: text/html; charset=utf-8');
  3. ?>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <?php
  6. // tell PHP to log errors to ipn_errors.log in this directory
  7. ini_set('log_errors', true);
  8. ini_set('error_log', dirname(__FILE__).'/ipn_errors.log');
  9.  
  10. // intantiate the IPN listener
  11. include('ipnlistener.php');
  12. $listener = new IpnListener();
  13.  
  14. // tell the IPN listener to use the PayPal test sandbox
  15. //$listener->use_sandbox = true;
  16.  
  17. // try to process the IPN POST
  18. try {
  19.     $listener->requirePostMethod();
  20.     $verified = $listener->processIpn();
  21. } catch (Exception $e) {
  22.     error_log($e->getMessage());
  23.     exit(0);
  24. }
  25.  
  26. if ($verified) {
  27.     $errmsg = '';   // stores errors from fraud checks
  28.    
  29.     // 1. Make sure the payment status is "Completed"
  30.     if ($_POST['payment_status'] != 'Completed') {
  31.         // simply ignore any IPN that is not completed
  32.         exit(0);
  33.     }
  34.  
  35.     // 2. Make sure seller email matches your primary account email.
  36.     if ($_POST['receiver_email'] != 'anna@energyshop.se') {
  37.         $errmsg .= "'receiver_email' does not match: ";
  38.         $errmsg .= $_POST['receiver_email']."\n";
  39.     }
  40.    
  41.     // 3. Make sure the amount(s) paid match
  42.     /*if ($_POST['mc_gross'] != '9.99') {
  43.         $errmsg .= "'mc_gross' does not match: ";
  44.         $errmsg .= $_POST['mc_gross']."\n";
  45.     }*/
  46.    
  47.     // 4. Make sure the currency code matches
  48.     if ($_POST['mc_currency'] != 'SEK' && $_POST['mc_currency'] != 'USD') {
  49.         $errmsg .= "'mc_currency' does not match: ";
  50.         $errmsg .= $_POST['mc_currency']."\n";
  51.     }
  52.  
  53.     // 5. Ensure the transaction is not a duplicate.
  54.     mysql_connect('****', '****', '****') or exit(0);
  55.     mysql_select_db('****') or exit(0);
  56.  
  57.     $txn_id = mysql_real_escape_string($_POST['txn_id']);
  58.     $sql = "SELECT COUNT(*) FROM orders WHERE txn_id = '$txn_id'";
  59.     $r = mysql_query($sql);
  60.    
  61.     if (!$r) {
  62.         error_log(mysql_error());
  63.         exit(0);
  64.     }
  65.    
  66.     $exists = mysql_result($r, 0);
  67.     mysql_free_result($r);
  68.    
  69.     if ($exists) {
  70.         $errmsg .= "'txn_id' has already been processed: ".$_POST['txn_id']."\n";
  71.     }
  72.    
  73.     if (!empty($errmsg)) {
  74.    
  75.         // manually investigate errors from the fraud checking
  76.         $body = "IPN failed fraud checks: \n$errmsg\n\n";
  77.         $body .= $listener->getTextReport();
  78.         mail('anna@energyshop.se', 'IPN Fraud Warning', $body);
  79.        
  80.     } else {
  81.    
  82.     // add this order to a table of completed orders
  83.     $payer_email = mysql_real_escape_string($_POST['payer_email']);
  84.     $mc_gross = mysql_real_escape_string($_POST['mc_gross']);
  85.     $sql = "INSERT INTO orders VALUES
  86.            (NULL, '$txn_id', '$payer_email', $mc_gross)";
  87.    
  88.     if (!mysql_query($sql)) {
  89.         error_log(mysql_error());
  90.         exit(0);
  91.     }
  92.    
  93.     // send user an email with a confirmation
  94.     $h1 = 0;
  95.     $h2 = 0;
  96.     $h3 = 0;
  97.     $h4 = 0;
  98.     $h5 = 0;
  99.     $h6 = 0;
  100.     $h7 = 0;
  101.     $h8 = 0;
  102.     $h9 = 0;
  103.     $h10 = 0;
  104.     $h11 = 0;
  105.     $h12 = 0;
  106.     $h13 = 0;
  107.     $h14 = 0;
  108.     $h15 = 0;
  109.     $h16 = 0;
  110.     $h17 = 0;
  111.     $h18 = 0;
  112.     $h19 = 0;
  113.     $h20 = 0;
  114.     $h21 = 0;
  115.     $h22 = 0;
  116.     $h23 = 0;
  117.     $h24 = 0;
  118.     $h25 = 0;
  119.     $h26 = 0;
  120.     $h27 = 0;
  121.     $h28 = 0;
  122.     $h29 = 0;
  123.     $h30 = 0;
  124.     $h31 = 0;
  125.     $num = $_POST['num_cart_items'];
  126.     $amount = $_POST['mc_gross'];
  127.     $firstname = $_POST['first_name'];
  128.     $lastname = $_POST['last_name'];
  129.     $to = filter_var($_POST['payer_email'], FILTER_SANITIZE_EMAIL);
  130.     $to2 = filter_var('anna@energyshop.se', FILTER_SANITIZE_EMAIL);
  131.     $date = date('Y-m-d');
  132.     $name = $_POST['item_name'];
  133.     $subject = "Tack för Ert köp! / Thank you for your order!";
  134.     $subject2 = "(COPY) Tack för Ert köp! / Thank you for your order!";
  135.     $headerFields = array(
  136.     'Date: ' . date('r', $_SERVER['REQUEST_TIME']),
  137.     "Subject: =?UTF-8?Q?".imap_8bit($subject)."?=",
  138.     "From: {$to}",
  139.     "MIME-Version: 1.0",
  140.     "Content-Type: text/html;charset=utf-8"
  141.     );
  142.     $headerFields2 = array(
  143.     'Date: ' . date('r', $_SERVER['REQUEST_TIME']),
  144.     "Subject: =?UTF-8?Q?".imap_8bit($subject2)."?=",
  145.     "From: {$to}",
  146.     "MIME-Version: 1.0",
  147.     "Content-Type: text/html;charset=utf-8"
  148.     );
  149.     $message = '<html><body>';
  150.     $message .= "$firstname $lastname, $payer_email \r\n";
  151.     $message .= '<br />';
  152.     $message .= "Tack för din beställning från energyshop.se. $date";
  153.     $message .= '<br>';
  154.     $message .= "Vi hoppas att varorna motsvarar dina förväntningar! \r\n";
  155.     $message .= '<br />';
  156.     $message .= "Du köpte $num produkter för totalt $amount kronor.";
  157.     $message .= '<br>';
  158.     $message .= 'Varor:';
  159.     $message .= "$name";
  160.     $message .= '<br>';
  161.     $message .= 'Moms är inkluderad i priset:';
  162.     $message .= '<br>';
  163.     $message .= "6% moms Böcker, 12% moms EnergyUnion, 25% moms på övriga sortimentet \r\n";
  164.     $message .= '<br />';
  165.     $message .= 'Har du köpt digitala varor, ska du direkt efter betalningen fått tillgång till en sida där du laddar ned din beställning.';
  166.     $message .= '<br>';
  167.     $message .= "Har du köpt fysiska varor, skickas de till dig så snart som möjligt med Posten, dock senast en vecka efter din beställning.\r\n";
  168.     $message .= '<br />';
  169.     $message .= 'Vi på energyshop.se önskar dig en trevlig dag.';
  170.     $message .= '<br>';
  171.     $message .= 'Välkommen tillbaka när du vill!';
  172.     $message .= '</body></html>';
  173.    
  174.     $message2 = "$message";
  175.     $message2 .= '<br />';
  176.     $message2 .= '(NOTE: THIS IS A COPY)';
  177.    
  178.     mail($to, $subject, $message,  implode("\r\n", $headerFields));
  179.     mail('anna@energyshop.se', $subject2, $message2,  implode("\r\n", $headerFields2));  
  180.     }
  181.    
  182. } else {
  183.     // manually investigate the invalid IPN
  184.     mail('anna@energyshop.se', 'Invalid IPN', $listener->getTextReport());
  185. }
  186.  
  187.  
  188. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement