<?php
			
if(isset($_POST['RefNum'])){
	$RefNum = $_POST['RefNum'];
	echo '</br>'.$RefNum ;
}
if(isset($_POST['token'])){
	$Token = $_POST['token'];
	echo '</br>'.$Token;
}
if(isset($_POST['MID'])){
	$MID = $_POST['MID'];
	echo '</br>'.$MID;
}
if(isset($_POST['State'])){
	$State = $_POST['State'];
	echo '</br>'.$State;
}
if(isset($_POST['CardMaskPan'])){
	$CardMaskPan = $_POST['CardMaskPan'];
	echo '</br>'.$CardMaskPan;
}
if(isset($_POST['shaparakTerminalId'])){
	$shaparakTerminalId = $_POST['shaparakTerminalId'];
	echo '</br>'.$shaparakTerminalId;
}			

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

if ( ! class_exists( 'Woocommerce_Ir_Gateway_Fanava' ) ) :

    Persian_Woocommerce_Gateways::register( 'Fanava' );



    class Woocommerce_Ir_Gateway_Fanava extends Persian_Woocommerce_Gateways {
		
		private $payment_token = '';
		

        public function __construct() {

            $this->method_title = 'فن آوا کارت';

            parent::init( $this );
        }

        public function fields() {
            return array(
                'merchant'   => array(
                    'title'       => 'کد پذیرنده (مرچنت)',
                    'type'        => 'text',
                    'description' => 'کد پذیرنده درگاه فن آوا کارت',
                    'default'     => '',
                    'desc_tip'    => true
                ),
                'username'   => array(
                    'title'       => 'نام کاربری',
                    'type'        => 'text',
                    'description' => 'نام کاربری درگاه فن آوا کارت',
                    'default'     => '',
                    'desc_tip'    => true
                ),
                'password'   => array(
                    'title'       => 'کلمه عبور',
                    'type'        => 'password',
                    'description' => 'کلمه عبور درگاه فن آوا کارت',
                    'default'     => '',
                    'desc_tip'    => true
                ),
                'shortcodes' => array(
                    'transaction_id'        => 'کد رهگیری خریدار',
                    'seller_transaction_id' => 'کد رهگیری فروشنده',
                )
            );
        }

        public function request( $order ) {

            $MID         = $this->option( 'merchant' );
            $username    = $this->option( 'username' );
            $password    = $this->option( 'password' );
            $Amount      = $this->get_total( 'IRR' );
            $RedirectURL = $this->get_verify_url();
            $ResNum      = date( 'imdHys' );

         $json_data = '{
				"WSContext":{
							"UserId":"'.$username.'",
							"Password":"'.$password.'"
							},
					"TransType":"EN_GOODS",
					"ReserveNum":"'.$ResNum.'",
					"MerchantId":"'.$MID.'",
					"Amount": "'.$Amount.'",		
					"RedirectUrl":"'.$RedirectURL.'"
									
				}';
					

            $curl = curl_init();
            curl_setopt_array( $curl, array(
                CURLOPT_URL            => 'https://fcp.shaparak.ir/ref-payment/RestServices/mts/generateTokenWithNoSign/',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING       => '',
                CURLOPT_MAXREDIRS      => 10,
                CURLOPT_TIMEOUT        => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION   => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST  => 'POST',
                CURLOPT_POSTFIELDS     => $json_data,
                CURLOPT_HTTPHEADER     => array(
                    'Content-Type: application/json',
                ),
            ) );
            $response = curl_exec( $curl );
            $status_code = curl_getinfo( $curl )['http_code'] ?? 0;
            curl_close( $curl );

            if ( $status_code == 200 ) {
                $response = json_decode( $response );
                if ( ! empty( $response ) && isset( $response->Result ) && $response->Result == 'erSucceed' ) {
                    $token = $response->Token;
                    $finalURL = 'https://fcp.shaparak.ir/_ipgw_/payment/?lang=fa&token=' . $token;
                    header( 'Location: ' . $finalURL );
                } else {
                    echo json_encode( $response );
                }
            } else {
                echo '<br> error not 200, status code:' . $status_code;
            }
        }

		public function verify($order) {

			if (isset($_POST['State']) && $_POST['State'] === 'OK') {
				$RefNum = sanitize_text_field($_POST['RefNum']);
				$token = sanitize_text_field($_POST['token']);

				if (empty($token) || empty($RefNum)) {
					
					return;
				}

				$json_Verifydata = '{
					"WSContext":{
							"UserId":"'.$username.'",
							"Password":"'.$password.'"
							},
					"Token": "' . $token . '",
					"RefNum": "' . $RefNum . '"
				}';
				
				$curl = curl_init();
				curl_setopt_array($curl, array(
					CURLOPT_URL            =>
					'https://fcp.shaparak.ir/ref-payment/RestServices/mts/verifyMerchantTrans/',
					CURLOPT_RETURNTRANSFER => true,
					CURLOPT_ENCODING       => '',
					CURLOPT_MAXREDIRS      => 10,
					CURLOPT_TIMEOUT        => 0,
					CURLOPT_FOLLOWLOCATION => true,
					CURLOPT_HTTP_VERSION   => CURL_HTTP_VERSION_1_1,
					CURLOPT_CUSTOMREQUEST  => 'POST',
					CURLOPT_POSTFIELDS     => $json_Verifydata,
					CURLOPT_HTTPHEADER     => array(
						'Content-Type: application/json',
					),
				));
				$response = curl_exec($curl);
				$status_code = curl_getinfo($curl)['http_code'] ?? 0;
				curl_close($curl);

				if ($status_code == '200') {
					$response = json_decode($response);
										
					if (!empty($response) && isset($response->Result) && $response->Result == 'erSucceed') {
						$order = wc_get_order($order);
						if ($order) {
							$order->payment_complete($RefNum);
						}
					} else {
						$order = wc_get_order($order);
						if ($order) {
							$order->update_status('cancelled');
						}
					}
				} else {
					$order = wc_get_order($order);
					if ($order) {
						$order->update_status('failed');
					}
				}
			}

		}


        private function errors( $error ) {
			switch ( $error ) {

				case "500":
					$message = 'خطایی در اتصال به بانک رخ داده است.';
					break;

				case "1001":
					$message = 'تراکنش ناموفق بود زیرا مبلغ پرداختی خریدار با مبلغ مورد نظر مغایرت دارد.';
					break;

				case "1002":
					$message = 'تراکنش ناموفق بود زیرا مبلغ پرداختی نامتعارف بود.';
					break;

				case "1003":
					$message = 'تراکنش ناموفق بود.';
					break;

				case "TRANSACTION_NOT_FOUND_ERROR":
					$message = 'تراکنش اصلی پیدا نشد یا شماره پیگیری ارسال شده اشتباه است.';
					break;

				case "TRANSACTION_IS_NOT_VERIFIABLE":
					$message = 'تراکنش قبل از تایید شدن توسط سیستم برگشت خورده است.';
					break;

				case "INVALID_SESSION_EXCEPTION":
					$message = 'جلسه کاری کاربر در سمت سرور منقضی شده است و فروشنده باید دوباره درخواست خود را تکرار کند.';
					break;

				case "SYSTEM_ERROR":
					$message = 'خطای داخلی بانک رخ داده است. با پشتیبانی بانک تماس بگیرید.';
					break;

				case 'WsValidationException':
					$message = 'مقادیر ورودی نامعتبر هستند.';
					break;

				case "WsInvalidCredentialException":
					$message = 'نام کاربری یا کلمه عبور درگاه فروشنده اشتباه است.';
					break;

				case "WsClientAddressException":
					$message = 'درگاه از طرف بانک برای این سایت فعال نیست و یا آی پی اشتباه است.';
					break;

				case "WsBlockUserException":
					$message = 'به علت ناموفق بودن تلاش های متوالی برای ورود به سیستم پرداخت ، فعلا امکان برقراری ارتباط با بانک امکان پذیر نمی باشد.';
					break;

				case 'WsInvalidSessionException':
					$message = 'SESSION_ID ارسال شده منقضی شده است.';
					break;

				case 'WsDuplicateTransactionException':
					$message = 'درخواست تسویه حساب قبلا ثبت شده است یا زمان درخواست تسویه به اتمام رسیده است.';
					break;

				case 'WsTransactionNotFoundException':
					$message = 'شماره فروشنده نامعتبر است.';
					break;

				case 'WsInvalidTokenException':
					$message = 'Token خرید نامعتبر است یا برای این فروش نیست.';
					break;

				case 'WsPaymentVerificationException':
					$message = 'امکان تایید وجود ندارد.';
					break;

				case 'WsInvalidAmountException':
					$message = 'مبلغ تایید با مبلغ تراکنش یکسان نیست.';
					break;

				case 'WsAmountConstraintViolationException':
					$message = 'مبلغ برگشتی از مبلغ اصلی بیشتر است.';
					break;

				case 'WsAuthenticationException':
					$message = 'عدم دسترسی به وبسرویس. با بانک تماس بگیرید.';
					break;

				case 'WsPaymentReverseException':
					$message = 'امکان برگشت ناقص وجود ندارد.';
					break;

				case 'WsSystemMalFunctionException':
					$message = 'بروز خطا در شبکه شتاب و عدم امکان واریز مبلغ به کارت خریدار.';
					break;

				case 'WsInsufficientFundsException':
					$message = 'موجودی حساب فروشنده کم تر از مقدار بازگشتی است.';
					break;

				case 'erSucceed':
					$message = 'سرویس با موفقیت اجراء شد.';
					break;

				case 'erAAS_UseridOrPassIsRequired':
					$message = 'کد کاربری و رمز الزامی هست';
					break;

				case 'erAAS_InvalidUseridOrPass':
					$message = 'کد کاربری یا رمز صحیح نمی باشد';
					break;

				case 'erAAS_InvalidUserType':
					$message = 'نوع کاربر صحیح نمی باشد';
					break;

				case 'erAAS_UserExpired':
					$message = 'کاربر منقضی شده است';
					break;

				case 'erAAS_UserNotActive':
					$message = 'کاربر غیر فعال هست';
					break;

				case 'erAAS_UserTemporaryInActive':
					$message = 'کاربر موقتا غیر فعال شده است';
					break;

				case 'erAAS_UserSessionGenerateError':
					$message = 'خطا در تولید شناسه لاگین';
					break;

				case 'erAAS_UserPassMinLengthError':
					$message = 'حداقل طول رمز رعایت نشده است';
					break;

				case 'erAAS_UserPassMaxLengthError':
					$message = 'حداکثر طول رمز رعایت نشده است';
					break;

				case 'erAAS_InvalidUserCertificate':
					$message = 'برای کاربر فایل سرتیفكیت تعریف نشده است';
					break;

				case 'erAAS_InvalidPasswordChars':
					$message = 'کاراکترهای غیر مجاز در رمز';
					break;

				case 'erAAS_InvalidSession':
					$message = 'شناسه لاگین معتبر نمی باشد';
					break;

				case 'erAAS_InvalidChannelId':
					$message = 'کانال معتبر نمی باشد';
					break;

				case 'erAAS_InvalidParam':
					$message = 'پارامترها معتبر نمی باشد';
					break;

				case 'erAAS_NotAllowedToService':
					$message = 'کاربر مجوز سرویس را ندارد';
					break;

				case 'erAAS_SessionIsExpired':
					$message = 'شناسه لاگین معتبر نمی باشد';
					break;

				case 'erAAS_InvalidData':
					$message = 'داده ها معتبر نمی باشد';
					break;

				case 'erAAS_InvalidSignature':
					$message = 'امضاء دیتا درست نمی باشد';
					break;

				case 'erAAS_InvalidToken':
					$message = 'توکن معتبر نمی باشد';
					break;

				case 'erAAS_InvalidSourceIp':
					$message = 'آدرس آی پی معتبر نمی باشد';
					break;

				case 'erMts_ParamIsNull':
					$message = 'پارمترهای ورودی خالی می باشد';
					break;

				case 'erMts_UnknownError':
					$message = 'خطای ناشناخته';
					break;

				case 'erMts_InvalidAmount':
					$message = 'مبلغ معتبر نمی باشد';
					break;

				case 'erMts_InvalidBillId':
					$message = 'شناسه قبض معتبر نمی باشد';
					break;

				case 'erMts_InvalidPayId':
					$message = 'شناسه پرداخت معتبر نمی باشد';
					break;

				case 'erMts_InvalidEmailAddLen':
					$message = 'طول ایمیل معتبر نمی باشد';
					break;

				case 'erMts_InvalidGoodsReferenceIdLen':
					$message = 'طول شناسه خرید معتبر نمی باشد';
					break;

				case 'erMts_InvalidMerchantGoodsReferenceIdLen':
					$message = 'طول شناسه خرید پذیرنده معتبر نمی باشد';
					break;

				case 'erMts_InvalidMobileNo':
					$message = 'فرمت شماره موبایل معتبر نمی باشد';
					break;

				case 'erMts_InvalidPorductId':
					$message = 'طول یا فرمت کد محصول معتبر نمی باشد';
					break;

				case 'erMts_InvalidRedirectUrl':
					$message = 'طول یا فرمت آدرس صفحه رجوع معتبر نمی باشد';
					break;

				case 'erMts_InvalidReferenceNum':
					$message = 'طول یا فرمت شماره رفرنس معتبر نمی باشد';
					break;

				case 'erMts_InvalidRequestParam':
					$message = 'پارامترهای درخواست معتبر نمی باشد';
					break;

				case 'erMts_InvalidReserveNum':
					$message = 'طول یا فرمت شماره رزرو معتبر نمی باشد';
					break;

				case 'erMts_InvalidSessionId':
					$message = 'شناسه لاگین معتبر نمی باشد';
					break;

				case 'erMts_InvalidSignature':
					$message = 'طول یا فرمت امضاء دیتا معتبر نمی باشد';
					break;

				case 'erMts_InvalidTerminal':
					$message = 'کد ترمینال معتبر نمی باشد';
					break;

				case 'erMts_InvalidToken':
					$message = 'توکن معتبر نمی باشد';
					break;

				case 'erMts_InvalidTransType':
					$message = 'نوع تراکنش معتبر نمی باشد';
					break;

				case 'erMts_InvalidUniqueId':
					$message = 'کد یكتا معتبر نمی باشد';
					break;

				case 'erMts_InvalidUseridOrPass':
					$message = 'رمز یا کد کاربری معتبر نمی باشد';
					break;

				case 'erMts_RepeatedBillId':
					$message = 'پرداخت قبض تكراری می باشد';
					break;

				case 'erMts_AASError':
					$message = 'خطای سرور کنترل کاربران';
					break;

				case 'erMts_SCMError':
					$message = 'خطای سرور مدیریت کانال';
					break;

				case 'erScm_ParamIsNull':
					$message = 'پارامترهای ارسالی خالی می باشند';
					break;

				case 'erScm_ParamItemIsNull':
					$message = 'آیتم های پارامترهای ارسالی خالی می باشد';
					break;

				case 'erScm_InvalidAcceptor':
					$message = 'پذیرنده معتبر نمی باشد';
					break;

				case 'erScm_InvalidTerminal':
					$message = 'ترمینال معتبر نمی باشد';
					break;

				case 'erScm_NotBelongTerminalToAcceptor':
					$message = 'ترمینال متعلق به پذیرنده نمی باشد';
					break;

				case 'erScm_InvalidAmount':
					$message = 'مبلغ معتبر نمی باشد';
					break;

				case 'erScm_InvalidLocalDate':
					$message = 'زمان محلی معتبر نمی باشد';
					break;

				case 'erScm_InvalidTraceNo':
					$message = 'شماره پیگیری معتبر نمی باشد';
					break;

				case 'erScm_InvalidTransType':
					$message = 'نوع تراکنش معتبر نمی باشد';
					break;

				case 'erScm_InvalidBillId':
					$message = 'شناسه قبض معتبر نمی باشد';
					break;

				case 'erScm_InvalidPayId':
					$message = 'شناسه پرداخت معتبر نمی باشد';
					break;

				case 'erScm_InvalidToken':
					$message = 'توکن معتبر نمی باشد';
					break;

				case 'erScm_InvalidVocherType':
					$message = 'نوع وچر معتبر نمی باشد';
					break;

				case 'erScm_InvalidReserveNum':
					$message = 'فرمت کد رزرو معتبر نمی باشد';
					break;

				case 'erScm_InvalidCardData':
					$message = 'اطلاعات کارت معتبر نمی باشد';
					break;

				case 'erScm_InvalidCardDataPan':
					$message = 'فرمت شماره کارت معتبر نمی باشد';
					break;

				case 'erScm_InvalidCardDataCvv2':
					$message = 'فرمت سی وی وی کارت معتبر نمی باشد';
					break;

				case 'erScm_InvalidCardDataPin2':
					$message = 'فرمت رمز کارت معتبر نمی باشد';
					break;

				case 'erScm_InvalidCardDataExpireData':
					$message = 'فرمت تاریخ انقضاء کارت معتبر نمی باشد';
					break;

				case 'erScm_InvalidSignature':
					$message = 'امضاء صحیح نمی باشد';
					break;

				case 'erScm_InvalidUniqueId':
					$message = 'کد یكتای داده ها معتبر نمی باشد';
					break;

				case 'erScm_InvalidRedirectUrl':
					$message = 'فرمت آدرس بازنشانی صحیح نمی باشد';
					break;

				case 'erScm_InvalidDiagKey':
					$message = 'کد تراکنش معتبر نمی باشد';
					break;

				case 'erScm_InvalidTransData':
					$message = 'دیتای تراکنش معتبر نمی باشد';
					break;

				case 'erScm_InvalidLanguge':
					$message = 'زبان معتبر نمی باشد';
					break;

				case 'erScm_NotBindUserIdToANyAcceptor':
					$message = 'کاربری با هیچ پذیرنده ای مرتبط نشده است';
					break;

				case 'erScm_BindUserIdToManyTerminal':
					$message = 'کاربر با چندین پذیرنده مرتبط هست';
					break;

				case 'erScm_TransactionDonebefore':
					$message = 'تراکنش تكراری';
					break;

				case 'erScm_InvalidReferenceNum':
					$message = 'کد رفرنس معتبر نمی باشد';
					break;

				case 'erScm_InvalidSessionId':
					$message = 'کد لاگین معتبر نمی باشد';
					break;

				case 'erScm_OrgTransNotApproved':
					$message = 'تراکنش اصلی موفق نبوده است';
					break;

				case 'erScm_OrgTransVerifiedBefore':
					$message = 'تراکنش اصلی قبلا تایید شده است';
					break;

				case 'erScm_AmountNotEqualWithOrgTransAmount':
					$message = 'مبلغ ارسالی با مبلغ تراکنش برابر نمی باشد';
					break;

				case 'erScm_ResNumNotEqualWithOrgTransResNum':
					$message = 'کد رزرو ارسالی با کد رزرو تراکنش معتبر نمی باشد';
					break;

				case 'erScm_OrgTransReversedBefore':
					$message = 'تراکنش قبلا ریورس شده است';
					break;

				case 'erScm_InvalidTransKey':
					$message = 'کد تراکنش معتبر نمی باشد';
					break;

				case 'erScm_CompleteTransBefore':
					$message = 'کد تراکنش معتبر نمی باشد';
					break;

				case 'erScm_QueueStoreError':
					$message = 'خطای صف جهت تعیین تكلیف';
					break;

				case 'erScm_DecideTransNotFound':
					$message = 'تراکنش تعیین تكلیف پیدا نشد';
					break;

				case 'erScm_InvalidParam':
					$message = 'پارامترهای ارسالی معتبر نمی باشد';
					break;

				case 'erScm_NotApproveFromSwitch':
					$message = 'پاسخ موفق از مرکز تراکنش دریافت نگردید';
					break;

				case 'erScm_TimeoutFromSwitch':
					$message = 'پاسخی از مرکز تراکنش دریافت نگردید';
					break;

				case 'erScm_NotConnectSwitch':
					$message = 'عدم برقراری ارتباط با مرکز تراکنش';
					break;

				case 'erScm_ProcessException':
					$message = 'خطای پردازش تراکنش';
					break;

				case 'erScm_InvalidUseridOrPass':
					$message = 'کد یا رمز کاربر صحیح نمی باشد';
					break;

				case 'erScm_TimeMismatch':
					$message = 'عدم هماهنگی زمان تراکنش';
					break;

				case 'erScm_WaitTimeForTransIsFinished':
					$message = 'فرصت انجام تراکنش به پایان رسیده است';
					break;
				case 'erScm_TransRepeatCountIsLimited':
					$message = 'تعداد مجاز تكرار تراکنش بیش از حد مجاز می باشد';
					break;

				case 'erScm_TransactionCompletebefore':
					$message = 'تراکنش قبلا تعیین تكلیف شده است';
					break;

				case 'erScm_AcceptorHaveManyTerminal':
					$message = 'پذیرنده دارای چندین ترمینال اینترنتی می باشد';
					break;

				case 'erScm_InvalidAcceptorType':
					$message = 'پذیرنده از نوع اینترنتی نمی باشد';
					break;

				case 'erScm_InquryNotApprove':
					$message = 'جواب استعلام موفقیت آمیز نبود';
					break;

				case 'erScm_InvalidPorductId':
					$message = 'فرمت کد محصول معتبر نمی باشد';
					break;

				case 'erScm_InvalidRequestParam':
					$message = 'داده های درخواستی معتبر نمی باشد';
					break;

				case 'erScm_InvalidMobileNo':
					$message = 'فرمت کد موبایل معتبر نمی باشد';
					break;

				case 'erScm_BillPaymentIsRepeated':
					$message = 'پرداخت قبض تكراری می باشد';
					break;

				case 'erScm_ReverseNotAllowed':
					$message = 'ریوس تراکنش مجاز نمی باشد';
					break;

				case 'erScm_TransactionNotPermitted':
					$message = 'تراکنش معتبر نمی باشد';
					break;

				case 'erScm_InvalidParamLength':
					$message = 'طول پارامتر معتبرنمی باشد';
					break;

				case 'erScm_InvalidGoodsReferenceIdLen':
					$message = 'فرمت شناسه خرید معتبر نمی باشد';
					break;

				case 'erScm_IncalidMerchantGoodsReferenceIdLen':
					$message = 'فرمت شناسه خرید پذیرنده معتبر نمی باشد';
					break;

				case 'erScm_InvalidEmailAddLen':
					$message = 'فرمت ایمیل معتبر نمی باشد';
					break;

				case 'erScm_InvalidSourceIP':
					$message = 'آی پی مجاز نمی باشد';
					break;

				case 'erScm_InvalidBillList':
					$message = 'لیست قبوض خالی هست';
					break;

				case 'erScm_RepeatedBillId':
					$message = 'شناسه قبض تكراری می باشد';
					break;

				case 'erScm_AcceptorWebInfoNotDefined':
					$message = 'پارامترهای اینترنتی پذیرنده تعریف نشده است';
					break;

				case 'erScm_Repeat':
					$message = 'تكرار باید انجام گیرد';
					break;

				case 'erScm_InvalidChannelId':
					$message = 'کد کانال معتبر نمی باشد';
					break;

				case 'erScm_InvalidUserId':
					$message = 'کد کاربر معتبر نمی باشد';
					break;

				case 'erScm_InvalidAcceptorStatus':
					$message = 'پذیرنده فعال نمی باشد';
					break;

				case 'erScm_InvalidTerminalStatus':
					$message = 'ترمینال فعال نمی باشد';
					break;

				case 'erScm_UseridOrPassIsRequired':
					$message = 'کد کاربر و رمز اجباریست';
					break;

				case 'erScm_InvalidUserType':
					$message = 'نوع کاربر معتبر نمی باشد';
					break;

				case 'erScm_UserExpired':
					$message = 'کاربر منقضی شده است';
					break;

				case 'erScm_UserNotActive':
					$message = 'کاربر غیر فعال هست';
					break;

				case 'erScm_UserTemporaryInActive':
					$message = 'کاربر موقتا غیر فعال هست';
					break;

				case 'erScm_UserSessionGenerateError':
					$message = 'خطا در صدور مجوز لاگین';
					break;

				case 'erScm_UserPassMinLengthError':
					$message = 'خطا در حداقل طول رمز';
					break;

				case 'erScm_UserPassMaxLengthError':
					$message = 'خطا در حداکثر طول رمز';
					break;

				case 'erScm_InvalidPasswordChars':
					$message = 'کاراکتر های نامجاز در رمز';
					break;

				case 'erScm_InvalidSession':
					$message = 'مجوز لاگین معتبر نمی باشد';
					break;

				case 'erScm_NotAllowedToService':
					$message = 'کاربر مجوز انجام سرویس را ندارد';
					break;

				case 'erScm_SessionIsExpired':
					$message = 'مجوز لاگین منقضی شده است';
					break;

				case 'erScm_InvalidData':
					$message = 'دیتا معتبر نمی باشد';
					break;

				case 'erScm_InvalidUser':
					$message = 'کاربر معتبر نمی باشد';
					break;

				case 'erScm_InvalidUserCertificatePass':
					$message = 'خطای رمز سرتیفكیت';
					break;

				case 'erScm_InvalidUserSourceIp':
					$message = 'آی پی مجاز نمی باشد';
					break;

				case 'erScm_AASError':
					$message = 'خطای سرور';
					break;

				case 'erScm_SCMError':
					$message = 'خطای سرور';
					break;

				case 'erScm_UnknownError':
					$message = 'خطای ناشناخته';
					break;

				case 'erScm_MerchantNotHaveOrManySomeProduct':
					$message = 'پذیرنده یا دارای این محصول نمی باشد یا چند محصول مشابه دارد';
					break;

				case 'erScm_VerifyUserNotEqualWithTransUser':
					$message = 'کد کاربر تایید کننده با کد کاربر درخواست کننده تراکنش متفاوت هست';
					break;

				case 'erScm_TransAmountNotEqualWithSrvcAmnt':
					$message = 'مبلغ تراکنش با مبلغ سرویس فروش وچر متفاوت هست';
					break;

				case 'erScm_DBException':
					$message = 'خطای ناشناخته بانک اطلاعاتی';
					break;

				default:
					$message = sprintf( 'خطای با شناسه %s داده است.', $error );
			}
				return $message;
        }
    }
endif;