flashmxbir
New Member
سلام.
می خواستم بدونم اگه بخوام مقدار یک متغیر که در یک تابع و در یک فایل دیگه هست رو بخونم باید چکار کنم؟
می خواستم بدونم اگه بخوام مقدار یک متغیر که در یک تابع و در یک فایل دیگه هست رو بخونم باید چکار کنم؟
<?php
/********************************************************************************/
/* */
/* pec+ is a package for useing of Parsian Bank SMP in your site */
/* for electronics payment with all banks in shetab netwotk */
/* Use of SMP protocol for execution payment method */
/* Special Thanks of Dietrich Ayala & Scott Nichol (nusoap) & Farhad Zare(farsi commerce) */
/* for sb24 module */
/********************************************************************************/
/* @version $Page: pec+.php,v 0.1 2007/02/20 Farhad Abtahi Exp $ */
/* @package pec24 */
/* @author Farhad Abtahi ( farhad[at]abtahi[dot]biz ) */
/* @copyright (C) 2005-2006 Farhad Abtahi */
/* @website www.abtahi.biz */
/* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL */
/* */
/****************************************************************************/
//define required variables
define("_INCLUDE_DIR", "includes/classes/lib/"); //Path of required file for include (with full slash)
define("MERCHANT_ID", MODULE_PAYMENT_PEC24_MID); //Merchant ID for settlement money.You must get one from Saman Bank Network
define("MERCHANT_PASSWORD", MODULE_PAYMENT_PEC24_MPASS); //Password of Merchant ID for return money to customer.
define("PEC24_TABLE_RESERVATION", TABLE_PEC24_RESERVATION); //Name of table in mysql database for store reservation data
define("PEC24_TABLE_ERECEIPT", TABLE_PEC24_ERECEIPT); //Name of table in mysql database for store electronic receipt data
define("PEC24_TABLE_RETURNLOG", TABLE_PEC24_RETURNLOG); //Name of table in mysql database for store all money return details
require_once(_INCLUDE_DIR."nusoap.php");
class pec24out {
var $amount = 0; //Amount of money for transaction
var $reservation = ''; //A security number for access user
var $merchantID = MERCHANT_ID; //Your Merchant ID of Saman bank
var $redirect = ''; //User redirect to this URL after compietion transaction
var $orderid; //ID of order for wist user and order after user redirect
var $error_ok = False;
var $errorstr = array();
var $error_save_handele = 0;
function pec24out($oid, $amo) {
if ($amo <= 0) {
$this->error_ok = True;
$this->errorstr[] = "Payment error: Amount cannot be eaqual to or less than zero. ";
$this->save_error();
} else {
$this->amount = $amo;
}
if ($oid <= 0) {
$this->error_ok = True;
$this->errorstr[] = "Payment error: You must enter a valid value for orderid of this payment.";
$this->save_error();
} else {
$this->orderid = $oid;
$this->orderid = $this->create_reservation();
}
}
function set_redirect($url) {
if (!eregi("^(http|https)+(:\/\/)+[a-z0-9_-]+\.+[a-z0-9_-]", $url)) {
$this->error_ok = True;
$this->errorstr[] = "Payment error: Invalid redirect URL.";
$this->save_error();
} else {
$this->redirect = $url;
}
}
function create() {
if(trim($this->merchantID) == '') {
$this->error_ok = True;
$this->errorstr[] = "Payment error: you must enter a mechant id for post to transaction server.";
}
if(trim($this->redirect) == '') {
$this->error_ok = True;
$this->errorstr[] = "Payment error: You must enter a redirect URL for redirect user to your site after compietion transaction";
}
if(intval($this->amount) <= 0) {
$this->error_ok = True;
$this->errorstr[] = "Payment error: Amount cannot be eaqual to or less than zero. ";
}
if(intval($this->orderid) <= 0) {
$this->error_ok = True;
$this->errorstr[] = "Payment error: You must enter a valid value for orderid of this payment.";
}
if($this->error_ok == True) {
$this->save_error();
return False;
}
$soapclient = new soapclient('https://www.pec24.com/pecpaymentgateway/EShopService.asmx?wsdl','wsdl');
if (!$err = $soapclient->getError())
$soapProxy = $soapclient->getProxy() ;
if ( (!$soapclient) OR ($err = $soapclient->getError()) ) {
$error .= $err . "--<br />" ;
echo $error ;
} else {
$this->orderid=generatePassword(5,false,false,true,false);
$params = array(
'pin' => $this->merchantID , // this is our PIN NUMBER
'amount' => intval($this->amount),
'orderId' => $this->orderid,
'callbackUrl' => $this->redirect,
'authority' => 0,
'status' => 1
);
$sendParams = array($params) ;
$res = $soapclient->call('PinPaymentRequest', $sendParams);
$authority = $res['authority'];
$status = $res['status'];
if ( ($authority) and ($status==0) ) {
$output .= tep_draw_hidden_field('au', $authority);
if(!@tep_db_query("INSERT INTO " .PEC24_TABLE_RESERVATION. " VALUES('','" .$this->orderid. "','" .$this->amount. "','" .$authority. "')")) {
$this->error_ok = True;
$this->errorstr[] = "MySQL error: you can't insert data to database.";
$this->save_error();
return False;
}
}
else {
if ($err=$soapclient->getError())
echo "ERROR = $err <br /> " ;
$output .= "OrderID" . $params[orderId] . "<br>***Status:". $status . "--Au:" . $authority ."--"."Couldn't Validate Payment with Parsian<br> " . $this->errorstr[1] ;
}
}
return $output;
}
function create_reservation() {
$this->reservation = generatePassword(10,false,false,true,false);
if(tep_db_query("SELECT * FROM " .PEC24_TABLE_RESERVATION)) {
while(True) {
$randreser = generatePassword(10,false,false,true,false);
if(!tep_db_num_rows(tep_db_query("SELECT id FROM " .PEC24_TABLE_RESERVATION. " WHERE res_number='$randreser'"))) {
break;
}
}
$this->reservation = $randreser;
return True;
} else {
$this->error_ok = True;
$this->errorstr[] = "MySQL error: reservation table not found in database.";
}
$this->save_error();
return False;
}
function save_error() {
if ($this->error_ok == True) {
for ($i=$this->error_save_handele;$i<sizeof($this->errorstr);$i++) {
error_log($this->errorstr[$i]."\n",3,"includes/error.log");
}
$this->error_save_handele = $i;
} else {
$this->error_save_handele = 0;
}
}
}
class pec24return{
var $reference = '0'; //Unique receipt Number from bank
var $referid = 0; //records id of this reference in database
var $allamount = 0; //all amount of transaction
var $returnamount = 0; //amount of transaction that you want returned
var $orderid = 0; //ID of order for wist user and order
var $verify = ''; //state of transaction
var $return_status = 0; //status of reverse web method
var $error_ok = False;
var $errorstr = array();
var $error_save_handele = 0;
function pec24return($refer = '') {
if(trim($refer) != '' AND strlen($refer) == 20) {
$refer = tep_db_input($refer);
@$res = tep_db_query("SELECT * FROM " .PEC24_TABLE_ERECEIPT. " WHERE refer_number='$refer'");
if(tep_db_num_rows($res) == 1) {
$row = tep_db_fetch_array($res);
if ($row['return'] == 0) {
$this->orderid = $row['orderid'];
$this->allamount = $row['amount'];
$this->reference = $row['refer_number'];
$this->verify = $row['verify'];
$this->referid = $row['id'];
} else {
$this->errorstr[] = "Return back error: return action for this referenace number is not available.";
$this->error_ok = True;
}
} else {
$this->errorstr[] = "Return back error: this referenace number can not be found in database.";
$this->error_ok = True;
}
} else {
$this->errorstr[] = 'Return back error: referenace number is invalid!';
$this->error_ok = True;
}
$this->save_error();
}
function back($amount) {
$this->returnamount = intval($amount);
if($this->reference == '0' OR $this->orderid == 0 OR $this->verify <= 0 OR $this->error_ok == True) {
return False;
} else {
$res = tep_db_query("SELECT sum(ret_amount) as sum FROM " .PEC24_TABLE_RETURNLOG. " WHERE erid='" .$this->referid. "' and error=1");
$sum = 0;
list($sum) = tep_db_fetch_array($res);
if (($sum + $this->returnamount) <= $this->allamount) {
$soapclient = new soapclient('https://www.pec24.com/pecpaymentgateway/eshopservice.asmx?wsdl','wsdl');
$soapProxy = $soapclient->getProxy() ;
$result = $soapProxy->ReverseTransaction($this->reference, MERCHANT_ID, MERCHANT_PASSWORD, $this->returnamount); //reference number,sellerid,password,reverse amount
tep_db_query("INSERT INTO " .PEC24_TABLE_RETURNLOG. " VALUES('', '" .$this->referid. "', '" .$this->returnamount. "', '" .$result. "')");
if(($result == 1) AND (($sum + $this->returnamount) == $this->allamount)) {
tep_db_query("UPDATE " .PEC24_TABLE_ERECEIPT. " SET return='1' WHERE id='" .$this->referid. "'");
}
$this->return_status = $result;
if( $result == 1 ) {
return True;
} else {
return False;
}
} else {
$this->return_status = -13;
return False;
}
}
}
function show_msg() {
$web_method_error = array("-1"=>"خطاى داخلى شبکه مالى",
"-2"=>"سپرده ها برابر نيستند.",
"-3"=>"ورودى ها حاوى کاراکترهاى غيرمجاز مى باشند.",
"-4"=>"Merchant Authentication Failed (کلمه عبور يا کد فروشنده اشتباه است).",
"-5"=>"Database Exception",
"-6"=>"سند قبلا برگشت کامل يافته است.",
"-7"=>"رسيد ديجيتالى تهى است.",
"-8"=>"طول ورودى ها بيشتر از حد مجاز است.",
"-9"=>"وجود کاراکترهاى غيرمجاز در در مبلغ برگشتى.",
"-10"=>"رسيد ديجيتالى به صورت Base64 نيست (حاوى کاراکترهاى غيرمجاز مى باشد).",
"-11"=>"طول ورودى ها کمتر از حد مجاز است.",
"-12"=>"مبلغ برگشتى منفى است.",
"-13"=>"مبلغ برگشتى براى برگشت جزئى بيش از مبلغ برگشت نخورده رسيد ديجيتالى است.",
"-14"=>"چنين تراکنشى تعريف نشده است.",
"-15"=>"مبلغ برگشتى به صورت اعشارى داده شده است.",
"-16"=>"خطاى داخلى سيستم",
"-17"=>"برگشت زدن جزئى تراکنشى که با کارت بانکى غير از بانک پارسیان انجام پذيرفته است.",
"-18"=>"دسترسي فروشنده از IP غير مجاز"
);
if($this->return_status < 0 AND $this->return_status > -18)
return $web_method_error[$this->return_status];
elseif($this->return_status == 1)
return "عملیات برگشت زدن رسید دیجیتالی با موفقیت انجام شد.";
else
return "سیستم قادر به برگشت زدن این رسید دیجیتالی نمی باشد. برای اطلاعات بیشتر با مدیریت سایت تماس بگیرید.";
}
function save_error() {
if ($this->error_ok == True) {
for ($i=$this->error_save_handele;$i<sizeof($this->errorstr);$i++) {
error_log($this->errorstr[$i]."\n",3,"includes/error.log");
}
$this->error_save_handele = $i;
} else {
$this->error_save_handele = 0;
}
}
}
//Random Password Generator v1.0
//special tanks from sebflipper (http://www.sebflipper.com)
function generatePassword($plength,$include_letters,$include_capitals,$include_numbers,$include_punctuation) {
$pwd = '';
// First we need to validate the argument that was given to this function
// If need be, we will change it to a more appropriate value.
if(!is_numeric($plength) || $plength <= 0) {
$plength = 8;
}
if($plength > 32) {
$plength = 32;
}
// This is the array of allowable characters.
$chars = "";
if ($include_letters == true) { $chars .= 'abcdefghijklmnopqrstuvwxyz'; }
if ($include_capitals == true) { $chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; }
if ($include_numbers == true) { $chars .= '0123456789'; }
if ($include_punctuation == true) { $chars .= '`??$%^&*()-_=+[{]};:@#~,<.>/?'; }
// If nothing selected just display 0's
if ($include_letters == false AND $include_capitals == false AND $include_numbers == false AND $include_punctuation == false) {
$chars .= '0';
}
// This is important: we need to seed the random number generator
mt_srand(microtime() * 1000000);
// Now we simply generate a random string based on the length that was
// requested in the function argument
for($i = 0; $i < $plength; $i++) {
$key = mt_rand(0,strlen($chars)-1);
$pwd = $pwd . $chars{$key};
}
// Finally to make it a bit more random, we switch some characters around
for($i = 0; $i < $plength; $i++) {
$key1 = mt_rand(0,strlen($pwd)-1);
$key2 = mt_rand(0,strlen($pwd)-1);
$tmp = $pwd{$key1};
$pwd{$key1} = $pwd{$key2};
$pwd{$key2} = $tmp;
}
// Convert into HTML
$pwd = htmlentities($pwd, ENT_QUOTES);
return $pwd;
}
//Close return action
function notreturn($refer = '') {
if(trim($refer) != '' AND strlen($refer) == 20) {
$refer = tep_db_input($refer);
@$res = tep_db_query("SELECT id,return FROM " .PEC24_TABLE_ERECEIPT. " WHERE refer_number='$refer'");
if (@tep_db_num_rows($res) == 1) {
$row = tep_db_fetch_array($res);
if ($row['return'] == 0) {
$rowid = $row['id'];
tep_db_query("UPDATE " .PEC24_TABLE_ERECEIPT. " SET return='1' WHERE id='$rowid'");
$returnvalue = True;
} else {
$returnvalue = False;
}
} else {
$returnvalue = False;
}
} else {
$returnvalue = False;
}
return $returnvalue;
}
?>
<?php
/***************************************************************************/
/* @version $Page: pec24.php,v 0.1 2007/02/20 Farhad Abtahi Exp $ */
/* @package pec24 */
/* @author Farhad Abtahi ( farhad[at]abtahi[dot]biz ) */
/* @copyright (C) 2005-2006 Farhad Abtahi */
/* @website www.abtahi.biz */
/* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL */
/* */
/****************************************************************************/
class pec24 {
var $code, $title, $description, $enabled;
// class constructor
function pec24() {
global $order;
$this->code = 'pec24';
$this->title = MODULE_PAYMENT_PEC24_TEXT_TITLE;
$this->description = MODULE_PAYMENT_PEC24_TEXT_DESCRIPTION;
$this->sort_order = MODULE_PAYMENT_PEC24_SORT_ORDER;
$this->enabled = ((MODULE_PAYMENT_PEC24_STATUS == 'True') ? true : false);
if ((int)MODULE_PAYMENT_PEC24_ORDER_STATUS_ID > 0) {
$this->order_status = MODULE_PAYMENT_PEC24_ORDER_STATUS_ID;
}
$this->style_enabled = ((MODULE_PAYMENT_PEC24_STYLE_STATUS == 'True') ? true : false);
if (is_object($order)) $this->update_status();
$this->form_action_url = 'https://www.pec24.com/pecpaymentgateway/?au='.$authority;
}
// class methods
function update_status() {
global $order;
if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_PEC24_ZONE > 0) ) {
$check_flag = false;
$check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PEC24_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
while ($check = tep_db_fetch_array($check_query)) {
if ($check['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check['zone_id'] == $order->billing['zone_id']) {
$check_flag = true;
break;
}
}
if ($check_flag == false) {
$this->enabled = false;
}
}
}
function javascript_validation() {
return false;
}
function selection() {
$selection = array('id' => $this->code,
'module' => $this->title);
return $selection;
}
function pre_confirmation_check() {
return false;
}
function confirmation() {
return false;
}
function process_button() {
global $order, $currencies, $customer_id;
require(DIR_WS_CLASSES . 'pec+.php');
$amount = ($order->info['total']) * $currencies->currencies['IRR']['value'];
$outclass = new pec24out($customer_id, $amount);
$outclass->set_redirect(tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL'));
$output = $outclass->create();
if($output == false) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_PEC24_ERROR_MESSAGE), 'SSL'));
}
return $output;
}
function before_process() {
global $_POST, $_GET;
$authority = $_GET['au'];
$status = $_GET['rs'];
if ($status==0)
{
$soapclient = new soapclient('https://www.pec24.com/pecpaymentgateway/EShopService.asmx?wsdl','wsdl');
if (!$err = $soapclient->getError())
$soapProxy = $soapclient->getProxy() ;
else
$output .= $err . "Error Connect";
$indbreser = tep_db_input($authority);
@$res = tep_db_query("SELECT orderid, amount FROM " .PEC24_TABLE_RESERVATION. " WHERE res_number='$indbreser'");
if(@tep_db_num_rows($res) == 1) {
$row = tep_db_fetch_array($res);
$amount = $row['amount'];
$orderid = $row['orderid'];
$returnvalue=True;
}
} else {
$amount = 0;
$orderid = 0;
$returnvalue=false;
$output .= $err . "Error not in database";
}
$status = 1 ; // default status
$params = array(
'pin' => MODULE_PAYMENT_PEC24_MID, // this is our PIN NUMBER
'authority' => $authority,
'status' => $status ) ; // to see if we can change it
$sendParams = array($params) ;
$res = $soapclient->call('PinPaymentEnquiry', $sendParams);
$status = $res['status'];
if ($status==0 && $returnvalue==True) {
@$res = tep_db_query("SELECT id, used FROM " .PEC24_TABLE_ERECEIPT. " WHERE refer_number='" .$authority. "'");
@$numrow = tep_db_num_rows($res);
if ($numrow == 0) {
@tep_db_query("INSERT INTO " .PEC24_TABLE_ERECEIPT. " VALUES ('','" .$orderid. "','" .$amount. "','" .$authority. "','1','0','1')");
$returnvalue = True;
}
elseif ($numrow == 1) {
$row = tep_db_fetch_array($res);
if ($row['used'] == 0) {
$rowid = $row['id'];
@tep_db_query("UPDATE " .PEC24_TABLE_ERECEIPT. " SET used='1' WHERE id='$rowid'");
$returnvalue = True;
} else {
$output .= $err . "Used";
$returnvalue = False;
}
} else {
$output .= $err . "Used";
$returnvalue = False;
}
}
else {
$output .= $err . MODULE_PAYMENT_PEC24_MID . "status Error:" . $status;
$returnvalue = False;
}
if($returnvalue== True)
{
echo "Payment Ok";
echo $authurity;
}
else {
// this is a UNsucccessfull payment
// we update our DataBase
$output .= $authority . "***" . $status . "---". "Couldn't Validate Payment with Parsian " ;
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode($output), 'SSL'));
}
}
function after_process() {
return false;
}
function get_error() {
return false;
}
function check() {
if (!isset($this->_check)) {
$check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PEC24_STATUS'");
$this->_check = tep_db_num_rows($check_query);
}
return $this->_check;
}
function install() {
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('فعال کردن موژول بانک پارسیان', 'MODULE_PAYMENT_PEC24_STATUS', 'True', 'آیا شما تمایل به دریافت مبلغ سفارش از طریق بانک پارسیان را دارید؟', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Merchant ID', 'MODULE_PAYMENT_PEC24_MID', '00000000-0000', 'Merchant ID شما که از طرف بانک پارسیان دریافت کردهاید. وارد کردن این مورد برای استفاده از این روش پرداخت الزامی است.', '6', '0', now())");
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('کلمه عبور Merchant ID', 'MODULE_PAYMENT_PEC24_MPASS', '000000', 'کلمه عبور مربوط به Merchant ID شما که از طرف بانک پارسیان دریافت کردهاید.', '6', '0', now())");
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('مرتبه طبقهبندی برای نمایش.', 'MODULE_PAYMENT_PEC24_SORT_ORDER', '0', 'مرتبه طبقهبندی برای نمایش دادن. مقادیر کمتر بالاتر نمایش داده میشوند.', '6', '0', now())");
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('منطقه پرداخت', 'MODULE_PAYMENT_PEC24_ZONE', '0', 'اگر منطقهای انتخاب شود این روش پرداخت فقط برای آن منطقه فعال خواهد بود.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('تنظیم وضعیت نمایش', 'MODULE_PAYMENT_PEC24_ORDER_STATUS_ID', '0', 'سفارشاتی که با این روش پرداخت میشوند روی این مقدار تنظیم شود', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
}
function remove() {
tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
}
function keys() {
return array('MODULE_PAYMENT_PEC24_STATUS', 'MODULE_PAYMENT_PEC24_MID', 'MODULE_PAYMENT_PEC24_MPASS', 'MODULE_PAYMENT_PEC24_SORT_ORDER', 'MODULE_PAYMENT_PEC24_ZONE', 'MODULE_PAYMENT_PEC24_ORDER_STATUS_ID');
}
}
?>
$this->form_action_url = 'https://www.pec24.com/pecpaymentgateway/?au='.$authority;
$this->your_var = $authority;