<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های MoonriseGeo</title><link>https://virgool.ir/feed/@ArefMohajer</link><description>مون‌رایز ۹ سال است که در تفلیس برای مشتریانی از ایران، کویت و کشورهای دیگر کار می‌کند: مهاجرت و اقامت، ثبت ازدواج بین‌المللی، خرید و اجارهٔ ملک، ثبت‌نام دانشگاه و نوبت پزشکان متخصص</description><language>fa</language><pubDate>2026-11-11 11:06:26</pubDate><image><url>https://files.virgool.ir/upload/users/1421127/avatar/h5dnSW.png</url><title>MoonriseGeo</title><link>https://virgool.ir/@ArefMohajer</link></image><item><title>تور یک‌روزه گوری و اوپلیستسیخه از تفلیس؛ ترتیب بازدید، زمان‌بندی و نکات سفر</title><link>https://virgool.ir/@ArefMohajer/تور-یک-روزه-گوری-و-اوپلیستسیخه-از-تفلیس-ترتیب-بازدید-زمان-بندی-و-نکات-سفر-zilpshpteyrv</link><description>اگر چند روزی در تفلیس هستید و یک سفر یک‌روزه می‌خواهید که هم تاریخ داشته باشد و هم خسته‌تان نکند، گوری و اوپلیستسیخه یکی از منطقی‌ترین انتخاب‌هاست. گوری حدود ۸۵ کیلومتر از تفلیس فاصله دارد و اوپلیستسیخه حدود ۱۰ کیلومتر بعد از آن است. مسیر رفت با ماشین معمولاً حدود یک ساعت و ربع تا یک‌ونیم ساعت طول می‌کشد، بسته به ترافیک خروج از تفلیس. در این نوشته می‌گویم هر ایستگاه چیست، به چه ترتیب بروید و پیش از حرکت چه چیزهایی را بپرسید.## گوری چه شهری است؟گوری شهری متوسط در مرکز گرجستان است و بیشتر مسافران آن را با یک نام می‌شناسند: زادگاه استالین. یوسف استالین در همین شهر، در سال ۱۸۷۸، به دنیا آمد. دو چیز در شهر برای گردشگر مهم است: موزهٔ استالین و قلعهٔ گوری که روی تپه‌ای بالای شهر ساخته شده است.موزهٔ استالین. موزه مجموعه‌ای از عکس‌ها، اسناد و وسایل شخصی است و کنار آن خانهٔ کوچک محل تولد و واگن قطار شخصی استالین نگهداری می‌شود. موزه از نظر تاریخی و سیاسی بحث‌برانگیز است و اگر برایتان مهم است که چه روایتی از تاریخ می‌شنوید، بهتر است با نگاه انتقادی بازدید کنید. برای وقت‌گذاشتن حدود یک ساعت کافی است.قلعهٔ گوری. از مرکز شهر تا قلعه چند دقیقه پیاده‌روی است. خود قلعه ساده است و کار اصلی‌اش چشم‌انداز شهر و رودخانه است. اگر ساعت بازدید برایتان مهم است، پیش از رفتن بپرسید، چون ساعت و قواعد ورود در فصل‌های مختلف عوض می‌شود.## اوپلیستسیخه؛ شهر غاری بسیار کهناوپلیستسیخه (Uplistsikhe) به معنای «قلعهٔ ارباب» است؛ شهر غاری که در صخره‌های کنار رود مت‌کواری کنده شده است. قدمتش به هزارهٔ اول پیش از میلاد برمی‌گردد و قرن‌ها مرکز دینی و تجاری منطقه بود. بقایای تالارها، راهروهای سنگی، آثار معبدهای باستانی و یک کلیسای کوچک مسیحی در آن دیده می‌شود.چند نکتهٔ عملی:- کفش راحت و ته‌صاف بپوشید؛ مسیر روی صخره و پله‌های سنگی است و بعد از باران لغزنده می‌شود.- در تابستان زمین سنگی داغ است. صبح زود یا نزدیک عصر بروید.- بازدید معمولاً یک تا دو ساعت است. اگر عکاسی می‌کنید، بیشتر.- قیمت بلیت و ساعت کار را عمداً ننوشته‌ام، چون عوض می‌شوند؛ همان هفته بپرسید.## ترتیب پیشنهادی بازدید۱. صبح زود از تفلیس حرکت کنید تا هم ترافیک را رد کنید و هم به گروه‌های بزرگ تور نخورید.۲. اول اوپلیستسیخه، چون در ساعت‌های خنک‌تر صبح مسیر صخره‌ای راحت‌تر است.۳. بعد گوری: ناهار، موزهٔ استالین و قلعه.۴. اگر وقت و انرژی دارید، در برگشت مسخت را اضافه کنید؛ سه بنای یونسکوی آن نزدیک تفلیس‌اند و بازدیدشان کوتاه است.اگر زمان‌تان کم است، گوری و اوپلیستسیخه را بدون مسخت ببینید. سه‌تایی را در یک روز می‌شود دید ولی روز فشرده‌ای است.## چطور برویم؟- مینی‌بوس (مارشروتکا): از ایستگاه دیدوبه (Didube) در تفلیس مینی‌بوس به گوری می‌رود و ارزان‌ترین راه است. از گوری تا اوپلیستسیخه باید تاکسی بگیرید. ساعت برگشت را از قبل بپرسید.- تاکسی یا ماشین با راننده: برای ترکیب دو یا سه ایستگاه در یک روز بهترین است. قیمت کل روز را پیش از حرکت توافق کنید.- تور یک‌روزه: راحت‌ترین گزینه است، به‌خصوص اگر راهنما می‌خواهید. بپرسید راهنما همراه است یا فقط راننده و ورودی‌ها داخل قیمت هست یا نه.## نکات پیش از رفتن- گذرنامه یا کپی آن را همراه داشته باشید.- کمی لاری نقد داشته باشید؛ همه‌جا کارت قبول نمی‌شود.- بهار و پاییز بهترین زمان‌اند. تابستان گرم است و زمستان ممکن است سرد و لغزنده باشد.- آب و کلاه برای اوپلیستسیخه فراموش نشود، چون سایه‌ای در مسیر نیست.## جمع‌بندیگوری و اوپلیستسیخه یک روز کوتاه و پرمحتوا هستند: یک شهر با تاریخ قرن بیستم و یک شهر غاری با تاریخ هزاران ساله. با حرکت صبح زود و برنامهٔ مشخص، همه را بدون عجله می‌شود دید.---منبع و جزئیات بیشتر: راهنمای گوری و سفرهای یک‌روزه از تفلیس در moonrisegeo</description><category>MoonriseGeo</category><author>MoonriseGeo</author><pubDate>Wed, 04 Nov 2026 15:23:15 +0330</pubDate></item><item><title>تحصیل پزشکی و دندانپزشکی در دانشگاه یوروپین گرجستان: آنچه پیش از ثبت‌نام باید بدانید</title><link>https://virgool.ir/@ArefMohajer/تحصیل-پزشکی-و-دندانپزشکی-در-دانشگاه-یوروپین-گرجستان-آنچه-پیش-از-ثبت-نام-باید-بدانید-xlinvr2sbyit</link><description>دانشگاه یوروپین گرجستان (European University) یکی از دانشگاه‌های خصوصی تفلیس است که رشته‌های پزشکی و دندانپزشکی را به زبان انگلیسی هم ارائه می‌کند. این دانشگاه بین دانشجوهای ایرانی پرسش‌های زیادی دارد، به سه دلیل: هزینهٔ نسبتاً مناسب، آموزش به انگلیسی، و امکان انتقالی از دانشگاه‌های چند کشور دیگر.این نوشته به پرسش‌هایی جواب می‌دهد که پیش از ثبت‌نام بیشتر پرسیده می‌شود.چه رشته‌هایی دارد؟دانشگاه چهار دانشکدهٔ اصلی دارد:پزشکی و دندانپزشکی (به زبان گرجی و انگلیسی)دامپزشکی (به زبان گرجی)کامپیوتر (به زبان گرجی)حقوق (به زبان گرجی)اگر گرجی نمی‌دانید، رشته‌های قابل خواندن به انگلیسی در عمل پزشکی و دندانپزشکی هستند.هزینهٔ تحصیل پزشکی چقدر است؟شهریهٔ سالانهٔ پزشکی، بسته به زبان تدریس (گرجی یا انگلیسی)، بین ۵۰۰۰ تا ۸۰۰۰ دلار است. هزینهٔ زندگی، بیمه و اقامت جدا حساب می‌شود و رقم هر سال را باید از خود دانشگاه تأیید بگیرید.آیا انتقالی از دانشگاه‌های دیگر ممکن است؟دانشگاه یوروپین دانشجوی انتقالی از دانشگاه‌های روسیه، ترکیه، چین و ارمنستان را می‌پذیرد. برای کسی که به هر دلیلی (جنگ، تحریم یا مشکل شخصی) نمی‌تواند در دانشگاه فعلی ادامه دهد، این یک مسیر عملی است. هر پرونده جداگانه بررسی می‌شود و قبولی قطعی نیست.اگر بخواهم به گرجی بخوانم؟می‌توان پیش از شروع، دورهٔ یک‌سالهٔ آموزش زبان گرجی را در دانشگاه فنی گرجستان گذراند. این دوره برای ورود به رشته‌های گرجی‌زبان لازم می‌شود.بعد از فارغ‌التحصیلی چه می‌شود؟فارغ‌التحصیلان پزشکی و دندانپزشکی می‌توانند در آزمون رزیدنسی گرجستان شرکت کنند و مجوز کار بگیرند. این آزمون به گرجی برگزار می‌شود. دربارهٔ اعتبار مدرک در ایران و کشورهای دیگر، فهرست به‌روز وزارت علوم یا مرجع همان کشور را خودتان بررسی کنید.مراحل ثبت‌نامترجمهٔ مدارک به انگلیسی و تأیید در وزارت امور خارجه و سفارت گرجستانترجمهٔ دوباره به گرجیثبت‌نام اولیه و تأیید مدارک در وزارت آموزش گرجستانعقد قرارداد با دانشگاهدرخواست اقامت تحصیلی (حداکثر تا ۴۰ روز پیش از پایان اعتبار ویزا یا اقامت فعلی)این فرایند زمان‌بر است و بهتر است حداقل دو ماه پیش از موعد شروع شود.جمع‌بندیدانشگاه یوروپین برای کسی مناسب است که پزشکی یا دندانپزشکی را به انگلیسی می‌خواهد و بودجهٔ متوسطی دارد. پیش از هر تصمیمی، مدارک خودتان، هزینهٔ همان سال و وضعیت اعتبار مدرک در کشور مقصد را بررسی کنید.منبع و جزئیات بیشتر: راهنمای تحصیل در دانشگاه یوروپین در مون رایز</description><category>MoonriseGeo</category><author>MoonriseGeo</author><pubDate>Wed, 04 Nov 2026 14:17:17 +0330</pubDate></item><item><title>sandbox درگاه زرین پال</title><link>https://virgool.ir/@ArefMohajer/sandbox-درگاه-زرین-پال-lnypdjxdrkuk</link><description>zarinpal_function.php:&lt;?php&#xA;/*&#xA; * ZarinPal Advanced Class&#xA;&#xA; * author  : aref mohajer&#xA; * e-mail  : amohajerrad@@gmail.com&#xA;&#xA;*/&#xA;&#xA;class zarinpal&#xA;{&#xA;    private function curl_check()&#xA;    {&#xA;        return (function_exists(&#39;curl_version&#39;)) ? true : false;&#xA;    }&#xA;&#xA;    private function soap_check()&#xA;    {&#xA;        return (extension_loaded(&#39;soapx&#39;)) ? true : false;&#xA;    }&#xA;&#xA;    private function error_message($code, $desc, $cb, $request=false)&#xA;    {&#xA;        if (empty($cb) &amp;&amp; $request === true)&#xA;        {&#xA;            return &#34;لینک بازگشت ( CallbackURL ) نباید خالی باشد&#34;&#xA;        }&#xA;&#xA;        if (empty($desc) &amp;&amp; $request === true)&#xA;        {&#xA;            return &#34;توضیحات تراکنش ( Description ) نباید خالی باشد&#34;&#xA;        }&#xA;&#xA;&#xA;        $error = array(&#xA;            &#34;-1&#34;   =&gt; &#34;اطلاعات ارسال شده ناقص است.&#34;,&#xA;            &#34;-2&#34;   =&gt; &#34;IP و يا مرچنت كد پذيرنده صحيح نيست&#34;,&#xA;            &#34;-3&#34;   =&gt; &#34;با توجه به محدوديت هاي شاپرك امكان پرداخت با رقم درخواست شده ميسر نمي باشد&#34;,&#xA;            &#34;-4&#34;   =&gt; &#34;سطح تاييد پذيرنده پايين تر از سطح نقره اي است.&#34;,&#xA;            &#34;-11&#34;  =&gt; &#34;درخواست مورد نظر يافت نشد.&#34;,&#xA;            &#34;-12&#34;  =&gt; &#34;امكان ويرايش درخواست ميسر نمي باشد.&#34;,&#xA;            &#34;-21&#34;  =&gt; &#34;هيچ نوع عمليات مالي براي اين تراكنش يافت نشد&#34;,&#xA;            &#34;-22&#34;  =&gt; &#34;تراكنش نا موفق ميباشد&#34;,&#xA;            &#34;-33&#34;  =&gt; &#34;رقم تراكنش با رقم پرداخت شده مطابقت ندارد&#34;,&#xA;            &#34;-34&#34;  =&gt; &#34;سقف تقسيم تراكنش از لحاظ تعداد يا رقم عبور نموده است&#34;,&#xA;            &#34;-40&#34;  =&gt; &#34;اجازه دسترسي به متد مربوطه وجود ندارد.&#34;,&#xA;            &#34;-41&#34;  =&gt; &#34;اطلاعات ارسال شده مربوط به AdditionalData غيرمعتبر ميباشد.&#34;,&#xA;            &#34;-42&#34;  =&gt; &#34;مدت زمان معتبر طول عمر شناسه پرداخت بايد بين 30 دقيه تا 45 روز مي باشد.&#34;,&#xA;            &#34;-54&#34;  =&gt; &#34;درخواست مورد نظر آرشيو شده است&#34;,&#xA;            &#34;100&#34;  =&gt; &#34;عمليات با موفقيت انجام گرديده است.&#34;,&#xA;            &#34;101&#34;  =&gt; &#34;عمليات پرداخت موفق بوده و قبلا PaymentVerification تراكنش انجام شده است.&#34;,&#xA;        );&#xA;&#xA;        if (array_key_exists(&#34;{$code}&#34;, $error))&#xA;        {&#xA;            return $error[&#34;{$code}&#34;];&#xA;        } else {&#xA;            return &#34;خطای نامشخص هنگام اتصال به درگاه زرین پال&#34;&#xA;        }&#xA;    }&#xA;&#xA;    private function zarinpal_node()&#xA;    {&#xA;        if ($this-&gt;curl_check() === true)&#xA;        {&#xA;            $ir_ch = curl_init(&#34;https://www.zarinpal.com/pg/services/WebGate/wsdl&#34;);&#xA; curl_setopt($ir_ch, CURLOPT_TIMEOUT, 1);&#xA; curl_setopt($ir_ch, CURLOPT_SSL_VERIFYPEER, false);&#xA; curl_setopt($ir_ch, CURLOPT_RETURNTRANSFER, true);&#xA; curl_exec($ir_ch);&#xA;            $ir_info = curl_getinfo($ir_ch);&#xA; curl_close($ir_ch);&#xA;&#xA;            $de_ch = curl_init(&#34;https://de.zarinpal.com/pg/services/WebGate/wsdl&#34;);&#xA; curl_setopt($de_ch, CURLOPT_TIMEOUT, 1);&#xA; curl_setopt($de_ch, CURLOPT_SSL_VERIFYPEER, false);&#xA; curl_setopt($de_ch, CURLOPT_RETURNTRANSFER, true);&#xA; curl_exec($de_ch);&#xA;            $de_info = curl_getinfo($de_ch);&#xA; curl_close($de_ch);&#xA;&#xA;            $ir_total_time = (isset($ir_info[&#39;total_time&#39;]) &amp;&amp; $ir_info[&#39;total_time&#39;] &gt; 0) ? $ir_info[&#39;total_time&#39;] : false;&#xA;            $de_total_time = (isset($de_info[&#39;total_time&#39;]) &amp;&amp; $de_info[&#39;total_time&#39;] &gt; 0) ? $de_info[&#39;total_time&#39;] : false;&#xA;&#xA;            return ($ir_total_time === false || $ir_total_time &gt; $de_total_time) ? &#34;de&#34; : &#34;ir&#34;&#xA;        } else {&#xA;            if (function_exists(&#39;fsockopen&#39;))&#xA;            {&#xA;                $de_ping   = $this-&gt;zarinpal_ping(&#34;de.zarinpal.com&#34;, 80, 1);&#xA;                $ir_ping   = $this-&gt;zarinpal_ping(&#34;www.zarinpal.com&#34;, 80, 1);&#xA;&#xA;                $de_domain     = &#34;https://de.zarinpal.com/pg/services/WebGate/wsdl&#34;&#xA;                $ir_domain     = &#34;https://www.zarinpal.com/pg/services/WebGate/wsdl&#34;&#xA;&#xA;                $ir_total_time = (isset($ir_ping) &amp;&amp; $ir_ping &gt; 0) ? $ir_ping : false;&#xA;                $de_total_time = (isset($de_ping) &amp;&amp; $de_ping &gt; 0) ? $de_ping : false;&#xA;&#xA;                return ($ir_total_time === false || $ir_total_time &gt; $de_total_time) ? &#34;de&#34; : &#34;ir&#34;&#xA;            } else {&#xA;                $webservice = &#34;https://www.zarinpal.com/pg/services/WebGate/wsd&#34;&#xA;                $headers   = @get_headers($webservice);&#xA;&#xA;                return (strpos($headers[0], &#39;200&#39;) === false) ? &#34;de&#34; : &#34;ir&#34;&#xA;            }&#xA;        }&#xA;    }&#xA;&#xA;    private function zarinpal_ping($host, $port, $timeout)&#xA;    {&#xA;        $time_b    = microtime(true);&#xA;        $fsockopen     = @fsockopen($host, $port, $errno, $errstr, $timeout);&#xA;&#xA;        if (!$fsockopen)&#xA;        {&#xA;            return false;&#xA;        }  else {&#xA;            $time_a = microtime(true);&#xA;            return round((($time_a - $time_b) * 1000), 0);&#xA;        }&#xA;    }&#xA;&#xA;    public function redirect($url)&#xA;    {&#xA;        @header(&#39;Location: &#39;. $url);&#xA;        echo &#34;&lt;meta http-equiv=&#39;refresh&#39; content=&#39;0; url={$url}&#39; /&gt;&#34;&#xA;        echo &#34;.href = &#39;{$url}&#39;;&#34;&#xA;        exit;&#xA;    }&#xA;&#xA;    public function request($MerchantID, $Amount, $Description=&#34;&#34;, $Email=&#34;&#34;, $Mobile=&#34;&#34;, $CallbackURL, $SandBox=false, $ZarinGate=false)&#xA;    {&#xA;        $ZarinGate = ($SandBox == true) ? false : $ZarinGate;&#xA;&#xA;        if ($this-&gt;soap_check() === true)&#xA;        {&#xA;            $node  = ($SandBox == true) ? &#34;sandbox&#34; : $this-&gt;zarinpal_node();&#xA;            $upay  = ($SandBox == true) ? &#34;sandbox&#34; : &#34;www&#34;&#xA;&#xA;            $client = new SoapClient(&#34;https://{$node}.zarinpal.com/pg/services/WebGate/wsdl&#34;, [&#39;encoding&#39; =&gt; &#39;UTF-8&#39;]);&#xA;&#xA;            $result = $client-&gt;PaymentRequest([&#xA;                &#39;MerchantID&#39;     =&gt; $MerchantID,&#xA;                &#39;Amount&#39;         =&gt; $Amount,&#xA;                &#39;Description&#39;    =&gt; $Description,&#xA;                &#39;Email&#39;          =&gt; $Email,&#xA;                &#39;Mobile&#39;         =&gt; $Mobile,&#xA;                &#39;CallbackURL&#39;    =&gt; $CallbackURL,&#xA;            ]);&#xA;&#xA;            $Status       = (isset($result-&gt;Status)     &amp;&amp; $result-&gt;Status != &#34;&#34;)     ? $result-&gt;Status : 0;&#xA;            $Authority        = (isset($result-&gt;Authority)   &amp;&amp; $result-&gt;Authority != &#34;&#34;)   ? $result-&gt;Authority : &#34;&#34;&#xA;            $StartPay     = (isset($result-&gt;Authority)   &amp;&amp; $result-&gt;Authority != &#34;&#34;)   ? &#34;https://{$upay}.zarinpal.com/pg/StartPay/&#34;. $Authority : &#34;&#34;&#xA;            $StartPayUrl   = (isset($ZarinGate)         &amp;&amp; $ZarinGate == true)           ? &#34;{$StartPay}/ZarinGate&#34; : $StartPay;&#xA;&#xA;            return array(&#xA;                &#34;Node&#34;        =&gt; &#34;{$node}&#34;,&#xA;                &#34;Method&#34;   =&gt; &#34;SOAP&#34;,&#xA;                &#34;Status&#34;   =&gt; $Status,&#xA;                &#34;Message&#34;  =&gt; $this-&gt;error_message($Status, $Description, $CallbackURL, true),&#xA;                &#34;StartPay&#34;     =&gt; $StartPayUrl,&#xA;                &#34;Authority&#34; =&gt; $Authority&#xA;            );&#xA;        } else {&#xA;            $node  = ($SandBox == true) ? &#34;sandbox&#34; : &#34;ir&#34;&#xA;            $upay  = ($SandBox == true) ? &#34;sandbox&#34; : &#34;www&#34;&#xA;&#xA;            $data = array(&#xA;                &#39;MerchantID&#39;     =&gt; $MerchantID,&#xA;                &#39;Amount&#39;         =&gt; $Amount,&#xA;                &#39;Description&#39;    =&gt; $Description,&#xA;                &#39;CallbackURL&#39;    =&gt; $CallbackURL,&#xA;            );&#xA;&#xA;            $jsonData = json_encode($data);&#xA;            $ch = curl_init(&#34;https://{$upay}.zarinpal.com/pg/rest/WebGate/PaymentRequest.json&#34;);&#xA; curl_setopt($ch, CURLOPT_USERAGENT, &#39;ZarinPal Rest Api v1&#39;);&#xA; curl_setopt($ch, CURLOPT_CUSTOMREQUEST, &#39;POST&#39;);&#xA; curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);&#xA; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);&#xA; curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&#xA; curl_setopt($ch, CURLOPT_HTTPHEADER, array(&#39;Content-Type: application/json&#39;, &#39;Content-Length: &#39; . strlen($jsonData)));&#xA;&#xA;            $result = curl_exec($ch);&#xA;            $err   = curl_error($ch);&#xA; curl_close($ch);&#xA;&#xA;            $result = json_decode($result, true);&#xA;&#xA;            if ($err)&#xA;            {&#xA;                $Status       = 0;&#xA;                $Message      = &#34;cURL Error #:&#34; . $err;&#xA;                $Authority        = &#34;&#34;&#xA;                $StartPay     = &#34;&#34;&#xA;                $StartPayUrl   = &#34;&#34;&#xA;            } else {&#xA;                $Status       = (isset($result[&#34;Status&#34;])    &amp;&amp; $result[&#34;Status&#34;] != &#34;&#34;)    ? $result[&#34;Status&#34;] : 0;&#xA;                $Message      = $this-&gt;error_message($Status, $Description, $CallbackURL, true);&#xA;                $Authority        = (isset($result[&#34;Authority&#34;])     &amp;&amp; $result[&#34;Authority&#34;] != &#34;&#34;)     ? $result[&#34;Authority&#34;] : &#34;&#34;&#xA;                $StartPay     = (isset($result[&#34;Authority&#34;])     &amp;&amp; $result[&#34;Authority&#34;] != &#34;&#34;)     ? &#34;https://{$upay}.zarinpal.com/pg/StartPay/&#34;. $Authority : &#34;&#34;&#xA;                $StartPayUrl   = (isset($ZarinGate)         &amp;&amp; $ZarinGate == true)           ? &#34;{$StartPay}/ZarinGate&#34; : $StartPay;&#xA;            }&#xA;&#xA;            return array(&#xA;                &#34;Node&#34;        =&gt; &#34;{$node}&#34;,&#xA;                &#34;Method&#34;   =&gt; &#34;CURL&#34;,&#xA;                &#34;Status&#34;   =&gt; $Status,&#xA;                &#34;Message&#34;  =&gt; $Message,&#xA;                &#34;StartPay&#34;     =&gt; $StartPayUrl,&#xA;                &#34;Authority&#34; =&gt; $Authority&#xA;            );&#xA;        }&#xA;    }&#xA;&#xA;    public function verify($MerchantID, $Amount, $SandBox=false, $ZarinGate=false)&#xA;    {&#xA;        $ZarinGate = ($SandBox == true) ? false : $ZarinGate;&#xA;&#xA;        if ($this-&gt;soap_check() === true)&#xA;        {&#xA;            $au    = (isset($_GET[&#39;Authority&#39;]) &amp;&amp; $_GET[&#39;Authority&#39;] != &#34;&#34;) ? $_GET[&#39;Authority&#39;] : &#34;&#34;&#xA;            $node  = ($SandBox == true) ? &#34;sandbox&#34; : $this-&gt;zarinpal_node();&#xA;&#xA;            $client = new SoapClient(&#34;https://{$node}.zarinpal.com/pg/services/WebGate/wsdl&#34;, [&#39;encoding&#39; =&gt; &#39;UTF-8&#39;]);&#xA;&#xA;            $result = $client-&gt;PaymentVerification([&#xA;                &#39;MerchantID&#39;     =&gt; $MerchantID,&#xA;                &#39;Authority&#39;      =&gt; $au,&#xA;                &#39;Amount&#39;         =&gt; $Amount,&#xA;            ]);&#xA;&#xA;            $Status       = (isset($result-&gt;Status)     &amp;&amp; $result-&gt;Status != &#34;&#34;)     ? $result-&gt;Status  : 0;&#xA;            $RefID           = (isset($result-&gt;RefID)      &amp;&amp; $result-&gt;RefID != &#34;&#34;)      ? $result-&gt;RefID   : &#34;&#34;&#xA;            $Message      = $this-&gt;error_message($Status, &#34;&#34;, &#34;&#34;, false);&#xA;&#xA;            return array(&#xA;                &#34;Node&#34;        =&gt; &#34;{$node}&#34;,&#xA;                &#34;Method&#34;   =&gt; &#34;SOAP&#34;,&#xA;                &#34;Status&#34;   =&gt; $Status,&#xA;                &#34;Message&#34;  =&gt; $Message,&#xA;                &#34;Amount&#34;   =&gt; $Amount,&#xA;                &#34;RefID&#34;    =&gt; $RefID,&#xA;                &#34;Authority&#34; =&gt; $au&#xA;            );&#xA;        } else {&#xA;            $au    = (isset($_GET[&#39;Authority&#39;]) &amp;&amp; $_GET[&#39;Authority&#39;] != &#34;&#34;) ? $_GET[&#39;Authority&#39;] : &#34;&#34;&#xA;            $node  = ($SandBox == true) ? &#34;sandbox&#34; : &#34;ir&#34;&#xA;            $upay  = ($SandBox == true) ? &#34;sandbox&#34; : &#34;www&#34;&#xA;&#xA;            $data = array(&#39;MerchantID&#39; =&gt; $MerchantID, &#39;Authority&#39; =&gt; $au, &#39;Amount&#39; =&gt; $Amount);&#xA;            $jsonData = json_encode($data);&#xA;            $ch = curl_init(&#34;https://{$upay}.zarinpal.com/pg/rest/WebGate/PaymentVerification.json&#34;);&#xA; curl_setopt($ch, CURLOPT_USERAGENT, &#39;ZarinPal Rest Api v1&#39;);&#xA; curl_setopt($ch, CURLOPT_CUSTOMREQUEST, &#39;POST&#39;);&#xA; curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);&#xA; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);&#xA; curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&#xA; curl_setopt($ch, CURLOPT_HTTPHEADER, array(&#39;Content-Type: application/json&#39;, &#39;Content-Length: &#39; . strlen($jsonData)));&#xA;&#xA;            $result = curl_exec($ch);&#xA;            $err   = curl_error($ch);&#xA; curl_close($ch);&#xA;&#xA;            $result = json_decode($result, true);&#xA;&#xA;            if ($err)&#xA;            {&#xA;                $Status       = 0;&#xA;                $Message      = &#34;cURL Error #:&#34; . $err;&#xA;                $Status       = &#34;&#34;&#xA;                $RefID           = &#34;&#34;&#xA;            } else {&#xA;                $Status       = (isset($result[&#34;Status&#34;]) &amp;&amp; $result[&#34;Status&#34;] != &#34;&#34;) ? $result[&#34;Status&#34;] : 0;&#xA;                $RefID           = (isset($result[&#39;RefID&#39;])     &amp;&amp; $result[&#39;RefID&#39;] != &#34;&#34;)     ? $result[&#39;RefID&#39;]     : &#34;&#34;&#xA;                $Message      = $this-&gt;error_message($Status, &#34;&#34;, &#34;&#34;, false);&#xA;            }&#xA;&#xA;            return array(&#xA;                &#34;Node&#34;        =&gt; &#34;{$node}&#34;,&#xA;                &#34;Method&#34;   =&gt; &#34;CURL&#34;,&#xA;                &#34;Status&#34;   =&gt; $Status,&#xA;                &#34;Message&#34;  =&gt; $Message,&#xA;                &#34;Amount&#34;   =&gt; $Amount,&#xA;                &#34;RefID&#34;    =&gt; $RefID,&#xA;                &#34;Authority&#34; =&gt; $au&#xA;            );&#xA;        }&#xA;    }&#xA;}request.php:&lt;?php&#xA;/*&#xA; * ZarinPal Advanced Class&#xA; *&#xA;&#xA;* author  : aref mohajer  * e-mail  : amohajerrad@gmail.com&#xA;*/&#xA;&#xA;require_once(&#34;zarinpal_function.php&#34;);&#xA;&#xA;$MerchantID    = &#34;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&#34;&#xA;$Amount       = 100;&#xA;$Description   = &#34;تراکنش زرین پال&#34;&#xA;$Email           = &#34;&#34;&#xA;$Mobile       = &#34;&#34;&#xA;$CallbackURL   = &#34;https://club.sabzgasht.com/zarin/verify.php&#34;&#xA;$ZarinGate        = false;&#xA;$SandBox      = true;&#xA;&#xA;$zp    = new zarinpal();&#xA;$result = $zp-&gt;request($MerchantID, $Amount, $Description, $Email, $Mobile, $CallbackURL, $SandBox, $ZarinGate);&#xA;&#xA;if (isset($result[&#34;Status&#34;]) &amp;&amp; $result[&#34;Status&#34;] == 100)&#xA;{&#xA; // Success and redirect to pay&#xA; $zp-&gt;redirect($result[&#34;StartPay&#34;]);&#xA;} else {&#xA; // error&#xA; echo &#34;خطا در ایجاد تراکنش&#34;&#xA;    echo &#34;&lt;br /&gt;کد خطا : &#34;. $result[&#34;Status&#34;];&#xA;    echo &#34;&lt;br /&gt;تفسیر و علت خطا : &#34;. $result[&#34;Message&#34;];&#xA;}verify.php:&lt;?php&#xA;/*&#xA; * ZarinPal Advanced Class&#xA;&#xA; * author  : aref mohajer&#xA; * e-mail  : amohajerrad@gmail.com&#xA;&#xA;*/&#xA;require_once(&#34;zarinpal_function.php&#34;);&#xA;&#xA;$MerchantID    = &#34;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&#34;&#xA;$Amount       = 100;&#xA;$ZarinGate        = false;&#xA;$SandBox      = true;&#xA;&#xA;$zp    = new zarinpal();&#xA;$result = $zp-&gt;verify($MerchantID, $Amount, $SandBox, $ZarinGate);&#xA;&#xA;if (isset($result[&#34;Status&#34;]) &amp;&amp; $result[&#34;Status&#34;] == 100)&#xA;{&#xA; // Success&#xA; echo &#34;تراکنش با موفقیت انجام شد&#34;&#xA;    echo &#34;&lt;br /&gt;مبلغ : &#34;. $result[&#34;Amount&#34;];&#xA;    echo &#34;&lt;br /&gt;کد پیگیری : &#34;. $result[&#34;RefID&#34;];&#xA;    echo &#34;&lt;br /&gt;Authority : &#34;. $result[&#34;Authority&#34;];&#xA;} else {&#xA; // error&#xA; echo &#34;پرداخت ناموفق&#34;&#xA;    echo &#34;&lt;br /&gt;کد خطا : &#34;. $result[&#34;Status&#34;];&#xA;    echo &#34;&lt;br /&gt;تفسیر و علت خطا : &#34;. $result[&#34;Message&#34;];&#xA;}</description><category>MoonriseGeo</category><author>MoonriseGeo</author><pubDate>Mon, 27 Dec 2021 13:11:31 +0330</pubDate></item></channel></rss>