برگزیده های پرشین تولز

عدم کارکرد درست فایل پرداخت آنلاین

pargraphic

کاربر تازه وارد
تاریخ عضویت
24 دسامبر 2012
نوشته‌ها
33
لایک‌ها
5
محل سکونت
Photoshop
سلام
بنده یک اسکریپت دارم که قسمت پرداخت کاربران که میخواهند حساب کاربریشون رو شارژ کنند مبلغ از حساب بانکی کاربر کسر میشود و با موفقیت انجام میشه از سایت درگاه واسط به سایت ما میاد و افزایش موجودی تو پنل کاربر انجام میشه بدون مورد ، ولی ممتاسفانه در بخش مدیریت آن در بخش مربوطه همان تراکنش را ناموفق نشون میده ، میخواستم بدونم چجوری میشه این مورد را رفع کرد و وضعیت هر تراکنش موفق و ناموفق را نشون بده .
محتوای فایل مدیریت مربوطه را در ادامه ارسال کردم:
در ضمن در درگاه واسط تراکنش مربوطه با موفقیت انجام شده و کد بانک دریافت شده .

PHP:
<?php

    class CashierController extends FrontController
    {
        
        public function __construct()
        {
            parent::__construct();
            if(empty($_SESSION['user'])){
                $this->_call($this->config['site_url'] . 'index/login');
                exit();
            }
        }
        
        public function indexAction()
        {
            Loader::loadClass('Cashier');
            
            $error = array();
            $flag = '';
            $_SESSION['user']['user_balance'] = Cashier::getBalance();
            $param = $this->getParam('index', '');
            if($param == 'trxOk'){
                $flag = 'success';
                $error[] = $this->lang['trx_ok2'];
                $_SESSION['user']['user_balance'] = Cashier::getBalance();
            }
            
            if(isset($_SESSION['error'])){
                $error = $_SESSION['error'];
                $flag = 'error';
                unset($_SESSION['error']);
            }
            
            $currency_symbol = Cashier::getSiteSetting('currency_symbol');

            loader::loadClass('Sports');
            

            $this->smarty->assign('currency_symbol', $currency_symbol);
            $this->smarty->assign('user', $_SESSION['user']);
            $this->smarty->assign('c_menu', 'cashier');
            $this->smarty->assign('flag', $flag);
            $this->smarty->assign('error', $error);
            $this->smarty->display('index.tpl.html');
        }
        
        public function depositAction()
        {

            Loader::loadClass('Cashier');
$_SESSION['user']['user_balance'] = Cashier::getBalance();
            $currency_symbol = Cashier::getSiteSetting('currency_symbol');
            $deposit_bonus = Cashier::getSiteSetting('deposit_bonus');
            loader::loadClass('Cashier');
            loader::loadClass('Crypt');
            $pay_params = Cashier::getPayments();
            foreach($pay_params as $k => $v){
                $payments[$v['payment_name']] =$v;
            }
            unset($pay_params);
            loader::loadClass('Sports');
            
            $this->smarty->assign('payments', $payments);
            Loader::loadClass('Front');
                      

            $this->smarty->assign('currency_symbol', $currency_symbol);
            $this->smarty->assign('deposit_bonus', $deposit_bonus);
            $this->smarty->assign('user', $_SESSION['user']);
            $this->smarty->assign('c_menu', 'cashier');
            $this->smarty->display('cashier/deposit.tpl.html');
        }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        public function okpaysAction()
        {
    Loader::loadClass('Cashier');
    
    Loader::loadClass('Front');
 
    
    
$au = $_POST["transid"];
$order_id = $au;
$ss = $this->db->fetchall("SELECT * FROM payment_transactions WHERE trx_outer_id='$au' ORDER BY trx_id DESC LIMIT 1");
foreach($ss as $v){
$money = $v['trx_amount'];
$karbar = $v['trx_user_id'];
$trx_result = $v['trx_result'];
}
$price = $money;



$pin = "080D3E920ADE8E62D79A"; // api pin ra vared konid




$url = 'http://panel.shaparakpay.com/api/verify/'; // don't change
$fields = array(
    'amount' => $price,
    'pin' => urlencode($pin),
    'transid' => $au,
);
$fields_string = "";
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);

if($result == "1"){
    if($money > 199999){
            $deposit_bonus = Cashier::getSiteSetting('deposit_bonus');
            $taghsim = $deposit_bonus / 100;
            $zarb = $money * $taghsim;
            $mablagh = $money + $zarb;
        } else {
            $mablagh = $money;
        }
        if($trx_result == 'fail'){
    $this->db->query("UPDATE users SET user_balance=user_balance+$mablagh WHERE user_id=$karbar");   
    $this->db->query("UPDATE payment_transactions SET trx_result='success' WHERE trx_outer_id=$order_id");       
        }
    $_SESSION['user']['user_balance'] = Cashier::getBalance();
    $error = array();
    $error[] = "پرداخت موفقیت آمیز بوده است .";
    $error[] = "  مبلغ  "  . $mablagh  . "  تومان به حساب کاربری شما اضافه شد .  ";
    if($money > 199999){ $error[] = " پاداش واریز شما به مبلغ  " . $zarb . "  تومان به حساب کاربریتان اضافه شد  "; }
    $flag= 'success';
    $this->smarty->assign('flag', $flag);
    $this->smarty->assign('error', $error);
    $this->smarty->assign('user', $_SESSION['user']);
    $this->smarty->assign('c_menu', 'cashier');
    $this->smarty->display('cashier/deposit.tpl.html');
} else {
        $_SESSION['user']['user_balance'] = Cashier::getBalance();
    $error = array();
        $flag= 'warning';
    $this->smarty->assign('flag', $flag);
        $error[] = "خطایی رخ داد : شماره خطا " . $result;
    $this->smarty->assign('error', $error);
    $this->smarty->assign('user', $_SESSION['user']);
    $this->smarty->assign('c_menu', 'cashier');
    $this->smarty->display('cashier/deposit.tpl.html');
}
    
    
    
    
    
    
    
    

    
    
        }
        

        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        public function depositPaymentAction()
        {
            Loader::loadClass('Cashier');
            
            Loader::loadClass('Front');
        
            
    $amount = $_POST['deposit_amount'];
            if($amount == 0){

$error = array();
        $error[] = "مبلغ را وارد کنید";
$this->smarty->assign('error', $error);
    $this->smarty->display('cashier/deposit.tpl.html');
                exit();
            }

if($_POST['submit']){
    $ss = $this->db->fetchall("SELECT * FROM payment_transactions ORDER BY trx_id DESC LIMIT 1");
foreach($ss as $v){
 $vv = $v['trx_id'];
}
$orderid = ($vv + 1);



$pin = "080D3E920ADE8E62D79A"; // api pin ra vared konid




$callback = $this->config['site_url'].'cashier/okpays/';
$description = $orderid;
    $url = 'http://panel.shaparakpay.com/api/create/'; // don't change
 
    $fields = array(
        'amount' => $amount,
        'pin' => urlencode($pin),
        'description' => urlencode($description),
        'callback' => $callback,
    );
    $fields_string = "";
    foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
    rtrim($fields_string, '&');
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_POST, count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);


    if(is_numeric($result)){
    $error = array();
        $error[] = "خطایی رخ داد : شماره خطا " . $result;
    $this->smarty->assign('error', $error);
    $this->smarty->display('cashier/deposit.tpl.html');
    } else {
        echo $result;
        $trx = array(
                'trx_user_id' => (int) $_SESSION['user']['user_id'],
                'trx_amount' => $amount,
                'trx_date' => jdate('Y-m-d H:i:s'),
                'trx_result' => 'fail',
                'trx_method' => '1',
                'trx_type' => 'deposit',
                'trx_outer_id' => $result,
                'trx_bonus' => $result
            );
            $this->db->insert('payment_transactions', $trx);
        header('Location: http://panel.shaparakpay.com/startpay/'.$result);
    }
}
    
    
    
        }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        public function withdrawAction()
        {
            loader::loadClass('Sports');
          
            Loader::loadClass('Front');
                  
            Loader::loadClass('Cashier');
            $_SESSION['user']['user_balance'] = Cashier::getBalance();
            $currency_symbol = Cashier::getSiteSetting('currency_symbol');
            $min_withdraw_amount = Cashier::getSiteSetting('min_withdraw_amount');
            
            if(isset($_POST['withdraw_amount'])){
                Loader::loadClass('Filter');
                
                $user_balance = Cashier::getBalance();
                
                $error = array();
                $amount = floatval($_POST['withdraw_amount']);

                if($amount < $min_withdraw_amount){
                    $error[] = $this->lang['min_withdraw_amount'];
                }
                if($amount > $user_balance){
                    $error[] = $this->lang['mb_withdraw_insufficient'];
                }
                $email = Filter::clear($_POST['email']);
                $email2 = Filter::clear($_POST['email2']);
                
                
                if(empty($error)){
                    Loader::loadClass('Moneybookers');
                    Loader::loadClass('Crypt');
                    
                    // currency setting
                    $site_currency = Cashier::getSiteSetting('site_currency');
                    
                    // payment method params
                    $pay_params = Cashier::getPaymentParams('moneybookers');
                    foreach($pay_params as $k => $v){
                        $pay_params[$v['param_name']] = Crypt::decrypt($v['param_value']);
                    }
                    $idd = (int) $_SESSION['user']['user_id'];
                    // payment transaction
                    $payment_transaction = array(
                        'trx_user_id' => (int) $_SESSION['user']['user_id'],
                        'trx_amount' => $amount,
                        'trx_date' => jdate('Y-m-d H:i:s'),
                        'trx_result' => 'waiting',
                        'trx_method' => 3,
                        'trx_type' => 'withdraw',
                        'trx_comment' => $email.'/'.$email2
                    );
                    $this->db->insert('payment_transactions', $payment_transaction);
                    $trx_id = $this->db->lastInsertId();
                    $this->db->update('users', $trx, "trx_id='$trx_id'");
                    $this->db->query("UPDATE users SET user_balance=user_balance-$amount WHERE user_id=$idd LIMIT 1");;
                    $this->_call($this->config['site_url'] . 'cashier/index/trxOk');

                
                } else {
                    $this->smarty->assign('flag', 'error');
                }
            }
            
            $this->smarty->assign('error', $error);
            $this->smarty->assign('currency_symbol', $currency_symbol);
            $this->smarty->assign('min_withdraw_amount', $min_withdraw_amount);
            $this->smarty->assign('user', $_SESSION['user']);
            $this->smarty->assign('c_menu', 'p_bardasht');
            $this->smarty->display('cashier/withdraw.tpl.html');
        }
        
        public function historyAction()
        {

            loader::loadClass('Sports');
            Loader::loadClass('Front');
            Loader::loadClass('Cashier');
                        Loader::loadClass("Pager");


                        $page = (int)$this->getParam("page", 1);
            $show = (int)$this->getParam("show", 20);

            $url = "cashier/history/show/$show/page/";
                        $user_id = intval($_SESSION['user']['user_id']);
                        $data_count = $this->db->fetchOne("SELECT COUNT(*) FROM payment_transactions WHERE trx_user_id='$user_id'");
            $pager = new Pager($page, $data_count);
             $pager->setItemsPerPage($show);
            $pages_num = $pager->getPages();
            $pages_text = $pager->getPagesAdditional();
            $limit = $pager->getLimit();
            $page = $pager->getCurrentPage();

            $log = Cashier::getTrxHistory('',$limit['from'],$show);

            if($data_count > $show)$this->smarty->assign("paging_on", "yes");
            $this->smarty->assign("page", $page);
            $this->smarty->assign("show", $show);
            $this->smarty->assign("url", $url);
            $this->smarty->assign("pages_num", $pages_num);
            $this->smarty->assign("pages_text", $pages_text);

                        $_SESSION['user']['user_balance'] = Cashier::getBalance();
            $currency_symbol = Cashier::getSiteSetting('currency_symbol');
            $this->smarty->assign('currency_symbol', $currency_symbol);
            $this->smarty->assign('history', $log);
            $this->smarty->assign('user', $_SESSION['user']);
            $this->smarty->assign('c_menu', 'p_listvarizi');
            $this->smarty->display('cashier/history.tpl.html');
        }







public function backmoneyAction()
        {
            loader::loadClass('Sports');
            
            Loader::loadClass('Front');
          

            $this->smarty->assign('currency_symbol', $currency_symbol);
            $this->smarty->assign('user', $_SESSION['user']);
            if (strtolower($_SERVER['REQUEST_METHOD']) == "post") {
$id = (int) $_SESSION['user']['user_id'];

$method = $this->db->fetchall("SELECT * FROM payment_transactions WHERE trx_result='waiting' AND trx_user_id=$id AND trx_type='withdraw' order by trx_id desc LIMIT 1");

$error = array();
if(empty($method)){
$error[] = "شما درخواستی برای واریز به حساب بانکی ثبت نکرده اید";
}
if(empty($error)){
foreach($method as $v){
$amount = $v['trx_amount'];
$trxuserid = $v[trx_user_id];
$this->db->query("UPDATE users SET user_balance=user_balance+$amount WHERE user_id=$trxuserid");

$idd = $v[trx_id];
$dataa = array(
'trx_result' => 'cancelled',
'trx_comment' => 'کنسل شده توسط کاربر',
);
$this->db->update('payment_transactions', $dataa, "trx_id='$idd'");
$flag                             = 'success';
$error[] = "برگشت اخرین درخواست واریزی به حساب کاربری شما با موفقیت انجام شد.";

                      }

}
}
$this->smarty->assign('flag', $flag);
$this->smarty->assign('error', $error);
$this->smarty->assign('c_menu', 'p_backmoney');
$this->smarty->display('cashier/back_win.tpl.html');
}






    
    }
    
?>
 

A2D3D

Registered User
تاریخ عضویت
10 دسامبر 2008
نوشته‌ها
856
لایک‌ها
616
به جدول payment_transactions یه گزینه به نام done با مقدار 0 و 1 اضافه کنید
زمانی که پرداخت موفق آمیز بود مقدار 1 رو ست کنید در غیر این صورت مقدار 0 باشه
در مدیریت چک کنید اگر مقدار done برابر 1 بود یعنی پرداخت موفقیت آمیز بوده
 
بالا