id = 'pasargad_bwg';
$this -> method_title = 'درگاه بانک پاسارگاد';
$this->icon = WP_PLUGIN_URL . "/" . plugin_basename(dirname(__FILE__)) . '/images/logo.png';
$this -> has_fields = false;
$this -> init_form_fields();
$this -> init_settings();
$this -> title = $this-> settings['title'];
$this -> description = $this-> settings['description'];
$this -> merchantCode = $this-> settings['merchantCode'];
$this -> terminalCode = $this-> settings['terminalCode'];
$this -> redirect_page_id = $this-> settings['redirect_page_id'];
$this -> privateKey = $this-> settings['privateKey'];
$this -> msg['pasargad_bwg_message'] = "";
$this -> msg['pasargad_bwg_class'] = "";
add_action('woocommerce_api_' . strtolower( get_class( $this ) ), array( $this, 'pasargad_bwg_check_response' ) );
if ( version_compare( WOOCOMMERCE_VERSION, '2.0.0', '>=' ) ) { // Compatibalization plugin for diffrent versions.
add_action( 'woocommerce_update_options_payment_gateways_pasargad_bwg', array( &$this, 'process_admin_options' ) );
} else {
add_action( 'woocommerce_update_options_payment_gateways', array( &$this, 'process_admin_options' ) );
}
add_action('woocommerce_receipt_pasargad_bwg', array(&$this, 'pasargad_bwg_receipt_page'));
}
/**
* Declaring admin page fields.
*/
function init_form_fields(){
$this -> form_fields = array(
'enabled' => array(
'title' => 'فعال سازی/غیر فعال سازی :',
'type' => 'checkbox',
'label' => 'فعال سازی درگاه پرداخت بانک پاسارگاد',
'description' => 'برای امکان پرداخت کاربران از طریق این درگاه باید تیک فعال سازی زده شده باشد .',
'default' => 'no'),
'merchantCode' => array(
'title' => 'شماره پذیزنده :',
'type' => 'text',
'description' => 'شما میتوانید این کد را از بانک ارائه دهنده درگاه دریافت نمایید .'),
'terminalCode' => array(
'title' => 'شماره ترمینال :',
'type' => 'text',
'description' => 'شما میتوانید این کد را از بانک ارائه دهنده درگاه دریافت نمایید .'),
'privateKey' => array(
'title' => 'کد مخفی PrivateKey :',
'type' => 'textarea',
'description' => 'این کد در زمان دریافت درگاه توسط نرمافزاری از طرف بانک پاسارگاد تولید میشود .'),
'title' => array(
'title' => 'عنوان درگاه :',
'type'=> 'text',
'description' => 'این عتوان در سایت برای کاربر نمایش داده می شود .',
'default' => 'بانک پاسارگاد'),
'description' => array(
'title' => 'توضیحات درگاه :',
'type' => 'textarea',
'description' => 'این توضیحات در سایت، بعد از انتخاب درگاه توسط کاربر نمایش داده می شود .',
'default' => 'پرداخت وجه از طریق درگاه بانک پاسارگاد توسط تمام کارت های عضو شتاب .'),
'redirect_page_id' => array(
'title' => 'آدرس بازگشت',
'type' => 'select',
'options' => $this -> pasargad_bwg_get_pages('صفحه مورد نظر را انتخاب نمایید'),
'description' => "صفحهای که در صورت پرداخت موفق نشان داده میشود را نشان دهید."),
);
}
public function admin_options(){
echo '
درگاه پرداخت بانک پاسارگاد
';
echo '';
echo '
';
}
/**
* Receipt page.
**/
function pasargad_bwg_receipt_page($order_id){
if (!class_exists('PasargadBank_GateWay')) {
require_once("pasargadGatewayClass.php"); // Add Pasargad class To Plugin
}
global $woocommerce;
$order = new WC_Order($order_id);
$callback = ($this -> redirect_page_id=="" || $this -> redirect_page_id==0)?get_site_url() . "/":get_permalink($this -> redirect_page_id);
$callback = add_query_arg( 'wc-api', get_class( $this ), $callback );
$merchantCode = $this->merchantCode;
$terminalCode = $this->terminalCode;
$privateKey = str_replace("[AlaFalaki]", "+", urldecode( str_replace("+", "[AlaFalaki]", $this->privateKey )));
$order_total = round($order -> order_total);
if(get_woocommerce_currency() == "IRT")
{
$order_total = $order_total*10;
}
$gateWay = new PasargadBank_GateWay();
$gateWay->SendOrder($order_id,date("Y/m/d H:i:s"),$order_total, $merchantCode, $terminalCode, $callback, $privateKey);
}
/**
* Process_payment Function.
**/
function process_payment($order_id){
$order = new WC_Order($order_id);
return array('result' => 'success', 'redirect' => add_query_arg('order',
$order->id, add_query_arg('key', $order->order_key, $this->get_return_url($this->order)))
);
}
/**
* Check for valid payu server callback
**/
function pasargad_bwg_check_response(){
global $woocommerce;
if (!class_exists('PasargadBank_GateWay')) {
require_once ("pasargadGatewayClass.php");
}
session_start();
$order_id = $_GET['iN'];
$tref = $_GET['tref'];
$order = new WC_Order($order_id);
$merchantCode = $this -> merchantCode;
$terminalCode = $this -> terminalCode;
$privateKey = str_replace("[AlaFalaki]", "+", urldecode( str_replace("+", "[AlaFalaki]", $this->privateKey )));
$OrderStatus = new PasargadBank_GateWay();
$order_total = round($order -> order_total);
if(get_woocommerce_currency() == "IRT")
{
$order_total = $order_total*10;
}
$result = $OrderStatus->getOrder($_GET['tref']);
if(($_SESSION['pasargadAmount']) == $order_total){
if($result['resultObj']['result'] == "True"){ // Check the result.
if($OrderStatus->verifyOrder($merchantCode, $terminalCode, $privateKey)){
if($order->status !=='completed'){
$this -> msg['pasargad_bwg_class'] = 'woocommerce_message';
$this -> msg['pasargad_bwg_message'] = "پرداخت شما با موفقیت انجام شد.";
$order->payment_complete();
$order->add_order_note('پرداخت موفق، کد پرداخت: '.$tref);
$woocommerce->cart->empty_cart();
}
}else{
$this -> msg['pasargad_bwg_class'] = 'woocommerce_error';
$this -> msg['pasargad_bwg_message'] = "پرداخت شما تایید نشد.";
$order -> add_order_note('پرداخت تایید نشد.');
}
}else{
$this -> msg['pasargad_bwg_class'] = 'woocommerce_error';
$this -> msg['pasargad_bwg_message'] = "پرداخت ناموفق بود.";
$order -> add_order_note('پرداخت ناموفق بود.');
}
}else{
$this -> msg['pasargad_bwg_class'] = 'woocommerce_error';
$this -> msg['pasargad_bwg_message'] = "پرداخت نامعتبر.";
$order -> add_order_note('پرداخت نا معتبر.');
}
unset($_SESSION['pasargadAmount']);
$redirect_url = ($this->redirect_page_id=="" || $this->redirect_page_id==0)?get_site_url() . "/":get_permalink($this->redirect_page_id);
$redirect_url = add_query_arg( array('pasargad_bwg_message'=> urlencode($this->msg['pasargad_bwg_message']), 'pasargad_bwg_class'=>$this->msg['pasargad_bwg_class'], 'tref' => $tref), $redirect_url );
wp_redirect( $redirect_url );
exit;
}
// get all pages
public function pasargad_bwg_get_pages($title = false, $indent = true) {
$wp_pages = get_pages('sort_column=menu_order');
$page_list = array();
if ($title) $page_list[] = $title;
foreach ($wp_pages as $page) {
$prefix = '';
// show indented child pages?
if ($indent) {
$has_parent = $page->post_parent;
while($has_parent) {
$prefix .= ' - ';
$next_page = get_page($has_parent);
$has_parent = $next_page->post_parent;
}
}
// add to page list array array
$page_list[$page->ID] = $prefix . $page->post_title;
}
return $page_list;
}
}
/**
* Add the Gateway to WooCommerce.
**/
function woocommerce_add_pasargad_bwg_gateway($methods) {
$methods[] = 'pasargad_bwg_full_payment';
return $methods;
}
add_filter('woocommerce_payment_gateways', 'woocommerce_add_pasargad_bwg_gateway' );
}
if( isset($_GET['pasargad_bwg_message']) )
{
add_action('the_content', 'pasargad_bwg_show_message');
function pasargad_bwg_show_message($content)
{
return ''.urldecode($_GET['pasargad_bwg_message']).'
شماره پیگیری پرداخت: ' . urldecode($_GET['tref']) . '
'.$content;
}
}
?>