Вход Регистрация
Файл: Update 2.1.1/sources/ipn/okpay.php
Строк: 112
<?php
   
/* Check IPN and process payment */
   
error_reporting(E_ALL E_NOTICE);
  
   
// Read the post from OKPAY and add 'ok_verify'
   
$request 'ok_verify=true';
  
   foreach (
$_POST as $key => $value) {
       
$value urlencode(stripslashes($value));
       
$request .= "&$key=$value";
   }
  
   
$fsocket false;
   
$result false;
  
   
// Try to connect via SSL due sucurity reason
   
if ( $fp = @fsockopen('ssl://checkout.okpay.com'443$errno$errstr30) ) {
       
// Connected via HTTPS
       
$fsocket true;
   } elseif (
$fp = @fsockopen('checkout.okpay.com'80$errno$errstr30)) {
       
// Connected via HTTP
       
$fsocket true;
   }
  
   
// If connected to OKPAY
   
if ($fsocket == true) {
       
$header 'POST /ipn-verify HTTP/1.1' "rn" .
                 
'Host: checkout.okpay.com'."rn" .
                 
'Content-Type: application/x-www-form-urlencoded' "rn" .
                 
'Content-Length: ' strlen($request) . "rn" .
                 
'Connection: close' "rnrn";
  
       @
fputs($fp$header $request);
       
$string '';
       while (!@
feof($fp)) {
           
$res = @fgets($fp1024);
           
$string .= $res;
           
// Find verification result in response
           
if ( $res == 'VERIFIED' || $res == 'INVALID' || $res == 'TEST') {
               
$result $res;
               break;
           }
       }
       @
fclose($fp);
   }
  
   if (
$result == 'VERIFIED') {
       
// check the "ok_txn_status" is "completed"
       // check that "ok_txn_id" has not been previously processed
       // check that "ok_receiver_email" is your OKPAY email
       // check that "ok_txn_gross"/"ok_txn_currency" are correct
       // process payment
          
       
if($_POST['ok_txn_status'] == "completed") {
        
$ok_txn_id $_POST['ok_txn_id'];
        
$ok_receiver_email $_POST['ok_receiver_email'];
        
$ok_item_1_id $_POST['ok_item_1_id'];
        
$ok_txn_gross $_POST['ok_txn_gross'];
        
$ok_txn_currency $_POST['ok_txn_currency'];
        
$ok_txn_datetime $_POST['ok_txn_datetime'];
        
$ok_payer_email $_POST['ok_payer_email'];
        
$query $db->query("SELECT * FROM exchanges WHERE id='$ok_item_1_id'");
        if(
$query->num_rows==0) { header("Location: $settings[url]"); }

        
$row $query->fetch_assoc();
        
$accountQuery $db->query("SELECT * FROM companies WHERE name='$row[cfrom]'");
$acc $accountQuery->fetch_assoc();
        if(
checkSession()) { $uid $_SESSION['suid']; } else { $uid 0; }
        
$check_trans $db->query("SELECT * FROM transactions WHERE tid='$ok_txn_id' and date='$ok_txn_datetime' and uid='$uid'");
        if(
$ok_receiver_email == $acc['a_field_1']) {
            if(
$ok_txn_gross == $row['amount_from'] or $ok_txn_currency == $row['amount_currency']) {
                if(
$check_trans->num_rows>0) {
                    echo 
error($lang['error_15']);
                } else {
                    
$insert $db->query("INSERT transactions (tid,from,uid,in,amount,currency,date) VALUES ('$ok_txn_id','$ok_receiver_email','$uid','OKPay','$ok_txn_gross','$ok_txn_currency','$ok_txn_datetime')");
                    
$update $db->query("UPDATE exchanges SET status='2' WHERE id='$row[id]'");
                    echo 
success($lang['success_4']);
                }
            } else {
                echo 
error($lang['error_16']);
            }
        } else { 
            echo 
error($lang['error_17']);
        }
       } else {
        echo 
error($lang['error_19']);
       }
  
   } elseif(
$result == 'INVALID') {
       
// If 'INVALID': log for manual investigation.
  
  
   
} elseif($result == 'TEST') {
       
// If 'TEST': do something
  
  
   
} else {
       
// IPN not verified or connection errors
       // If status != 200 IPN will be repeated later
  
       
header("HTTP/1.1 404 Not Found");
       exit;
   }
?>
Онлайн: 0
Реклама