رفتن به مطلب
lorus

مشکل با افزونه های پرداخت جی تو استور

پست های پیشنهاد شده

ارسال شده در (ویرایش شده)

با سلام و عرض ادب و احترام خدمت دوستان و اساتید محترم

قالب سایت من از شرکت یوم تم هستش و صفحه اول و پیش خوانش را با صفحه ساز یوم تم پیاده کردم. فروشگاه سایت با جی تو استور پیکر بندی شده و برای پرداخت از پلاگین :قوامین سایان کارت و بانکی ملی سداد استفاده می بره تا 96/10/29 هیچ مشکلی با پرداخت قوامین نداشتم ولی به یکباره از کار افتاد و صفحه زیر به نمایش در میاد و به درگاه وصل نمیشه البته اولش هم مشکل داشت و تو ارجاع بعد پرداخت صفحه سفید میاد گزارش دادم و خودشون رفع اش کردن ولی الان می گن ایراد از سایت هستش!؟ 

پلاگین بانک ملی رو بعد از مشکل درگاه قوامین نصب کردم اون مشکلی تو وصل شدن به درگاه نداره و همه چیز جز یک مورد اوکی هستش اون هم ارجاع بعد از پرداخت موفق به صفحه تشکر جی تو استور هستش اگر منو پیش فرض روی محتوا و صفحه ی که با صفحه ساز قالب ساخته شده تنظیم کنم پرداخت انجام نمیشه و کد های لازم از طرف بانک ارسال نمیشه و به صفحه اول ارجاع میشه ولی اگر منوی پیش فرض روی محتوا جوملا تنظیم بشه و منو غیر منوی پیش فرض باشه به صفحه تشکر جی تو استور ارجاع داده میشه و کدهای رهگیری و غیر صادر و مشکلی تو پرداخت پیش نمیاد.

می خواستم کسی میتونه راه حلی پیشنهاد بده و این مشکلات حل بشه.

با تشکر فراون از راهنمایی های شما عزیزان محترم

?_task=mail&_action=get&_mbox=Sent&_uid=

ویرایش شده توسط lorus

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

با سلام و عرض ادب

تو مستندات جی تو استور نوشته میشود بعد از پرداخت موفق بجای ارجاع به صفحه تشکر یک مطلب خاص به نمایش در بیاد 

طبق این مستند این تغییر کجا باید اضافه بشه و چطور .

مستند جی تو استور:

نقل قول

function _postPayment( $data )
{
    // Process the payment
    $app = JFactory::getApplication();
    $paction = $app ->input->getString('paction');

    $vars = new JObject();

    switch ($paction)
    {
        case "display":
            $vars->message = 'Thank you for the order.';
            $html = $this->_getLayout('message', $vars);
            //get the thank you message from the article (ID) provided in the plugin params
            $html .= $this->_displayArticle();
            break;
        case "callback":
            //Its a call back. You can update the order based on the response from the payment gateway
            $vars->message = 'Some message to the gateway'
            $html = $this->_getLayout('message', $vars);
            echo $html; 
            $app->close();
            break;
        case "cancel":
            //cancel is called. 
            $vars->message = 'Sorry, you have cancelled the order'
            $html = $this->_getLayout('message', $vars);
            break;
        default:
            $vars->message = 'Seems an unknow request.'
            $html = $this->_getLayout('message', $vars);
            break;
    }

    return $html;
}

و 

برای پلاگین بانک ملی:

نقل قول

<?php
    /**
     * Created by PhpStorm.
     * User: mohsen
     * Date: 5/8/16
     * Time: 2:33 PM
     */
    defined('_JEXEC') or die('Restricted access');

    require_once(JPATH_ADMINISTRATOR . '/components/com_j2store/library/plugins/payment.php');
    require_once(JPATH_ADMINISTRATOR . '/components/com_j2store/helpers/j2store.php');

    class plgJ2StorePayment_melli extends J2StorePaymentPlugin {
        /**
         * @var $_element  string  Should always correspond with the plugin's filename,
         *                         forcing it to be unique
         */
        var $_element = 'payment_melli';
        private
                $merchantCode = '',
                $merchantId = '',
                $terminalId = '',
                $terminalKey = '',
                $callBackUrl = '',
                $redirectToMelli = '';

        public function __construct(& $subject, $config) {
            parent::__construct($subject, $config);
            $this->loadLanguage('', JPATH_ADMINISTRATOR);
            $this->merchantCode = trim($this->params->get('merchant_id'));
            $this->merchantId = trim($this->params->get('merchant_id'));
            $this->terminalId = trim($this->params->get('terminal_id'));
            $this->terminalKey = trim($this->params->get('terminal_key'));
            $this->callBackUrl = JUri::root() . '/index.php?option=com_j2store&view=checkout&task=confirmPayment&orderpayment_type=payment_melli&paction=callback';
            $this->redirectToMelli = 'https://www.melli.com/pg/StartPay/';
        }

        public function _renderForm($data) {
            $vars = new JObject();
            $vars->message = JText::_("J2STORE_MELLI_PAYMENT_MESSAGE");
            $html = $this->_getLayout('form', $vars);
            return $html;
        }

        public function _prePayment($data) {
            $vars = new StdClass();
            $vars->display_name = $this->params->get('display_name', '');
            $vars->onbeforepayment_text = JText::_("J2STORE_MELLI_PAYMENT_PREPARATION_MESSAGE");


            $amount = (int)$data['orderpayment_amount'];


            $redirect = $this->callBackUrl;

            $terminal_id = trim($this->params->get('terminal_id'));
            $merchant_id = trim($this->params->get('merchant_id'));
            $terminal_key = trim($this->params->get('terminal_key'));
            // todo: order_id need to be retrieved
            $order_id = rand(100000, 999999);
            $sign_data = $this->sadad_encrypt($terminal_id . ';' . $order_id . ';' . $amount, $terminal_key);


            $parameters = array(
                    'MerchantID' => $merchant_id,
                    'TerminalId' => $terminal_id,
                    'Amount' => $amount,
                    'OrderId' => $order_id,
                    'LocalDateTime' => date('Ymdhis'),
                    'ReturnUrl' => $redirect,
                    'SignData' => $sign_data,
            );

            $error_flag = false;
            $error_msg = '';

            $result = $this->sadad_call_api('https://sadad.shaparak.ir/VPG/api/v0/Request/PaymentRequest', $parameters);
            if ($result != false) {
                if ($result->ResCode == 0) {
                    $vars->token = $result->Token;
                    $vars->redirectToMelli = 'https://sadad.shaparak.ir/VPG/Purchase';
                    $html = $this->_getLayout('prepayment', $vars);
                    return $html;
                } else {
                    //bank returned an error
                    $error_flag = true;
                    $error_msg = JText::_("J2STORE_MELLI_PAYMENT_REDIRECT_ERROR") . $this->sadad_request_err_msg($result->ResCode);
                }
            } else {
                // couldn't connect to bank
                $error_flag = true;
                $error_msg = JText::_("J2STORE_MELLI_PAYMENT_CONNECTION_ERROR");
            }

            if ($error_flag) {
                $vars->error = $error_msg;
            }
            $html = $this->_getLayout('prepayment', $vars);
            return $html;
        }

        public function _postPayment($data) {
            $vars = new JObject();
            //get order id
            $orderId = $data['order_id'];
            // get instatnce of j2store table
            F0FTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_j2store/tables');
            $order = F0FTable::getInstance('Order', 'J2StoreTable')->getClone();
            $order->load(array('order_id' => $orderId));

            if ($order->load(array('order_id' => $orderId))) {

                $currency = J2Store::currency();
                $currencyValues = $this->getCurrency($order);
                $orderPaymentAmount = $currency->format($order->order_total, $currencyValues['currency_code'], $currencyValues['currency_value'], false);
                $orderPaymentAmount = (int)$orderPaymentAmount;

                $order->add_history(JText::_('J2STORE_CALLBACK_RESPONSE_RECEIVED'));

                if ($orderId && isset($_POST['token']) && isset($_POST['OrderId']) && isset($_POST['ResCode'])) {
                    $token = $_POST['token'];

                    //verify payment
                    $parameters = array(
                            'Token' => $token,
                            'SignData' => $this->sadad_encrypt($token, trim($this->params->get('terminal_key')))
                    );

                    $error_flag = false;
                    $error_msg = '';

                    $result = $this->sadad_call_api('https://sadad.shaparak.ir/VPG/api/v0/Advice/Verify', $parameters);
                    if ($result != false) {
                        if ($result->ResCode == 0) {
                            //successfully verified
                            $order->payment_complete();
                            $order->empty_cart();
                            $message = JText::_("J2STORE_MELLI_PAYMENT_SUCCESS") . PHP_EOL;
                            $message .= JText::_("J2STORE_MELLI_PAYMENT_REF") . $result->RetrivalRefNo;
                            $vars->message = $message;
                            $html = $this->_getLayout('postpayment', $vars);
                            return $html;
                        } else {
                            //couldn't verify the payment due to a back error
                            $error_flag = true;
                            $error_msg = JText::_("J2STORE_MELLI_PAYMENT_PROCESS_ERROR") . $this->sadad_verify_err_msg($result->ResCode);
                        }
                    } else {
                        //couldn't verify the payment due to a connection failure to bank
                        $error_flag = true;
                        $error_msg = JText::_("J2STORE_MELLI_PAYMENT_NO_VERVIFY_ERROR");
                    }

                    $message = JText::_("J2STORE_MELLI_PAYMENT_FAILED") . PHP_EOL;
                    $message .= JText::_("J2STORE_MELLI_PAYMENT_ERROR");
                    $message .= $error_msg . PHP_EOL;
                    $message .= JText::_("J2STORE_MELLI_PAYMENT_CONTACT") . PHP_EOL;
                    $vars->message = $message;
                    $html = $this->_getLayout('postpayment', $vars);
                    return $html;

                }


            }

            $vars->message = JText::_("J2STORE_MELLI_PAYMENT_PAGE_ERROR");
            $html = $this->_getLayout('postpayment', $vars);
            return $html;
        }
        


        private function sadad_encrypt($data, $secret) {
            //Generate a key from a hash
            $key = base64_decode($secret);

            //Pad for PKCS7
            $blockSize = mcrypt_get_block_size('tripledes', 'ecb');
            $len = strlen($data);
            $pad = $blockSize - ($len % $blockSize);
            $data .= str_repeat(chr($pad), $pad);

            //Encrypt data
            $encData = mcrypt_encrypt('tripledes', $key, $data, 'ecb');

            return base64_encode($encData);
        }

        private function sadad_call_api($url, $data = false) {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json; charset=utf-8'));
            curl_setopt($ch, CURLOPT_POST, 1);
            if ($data) {
                curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
            }
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
            $result = curl_exec($ch);
            curl_close($ch);
            return !empty($result) ? json_decode($result) : false;
        }

        private function sadad_request_err_msg($err_code) {
            return JText::_("J2STORE_MELLI_PAYMENT_REQ_" . $err_code);
        }

        private function sadad_verify_err_msg($res_code) {
            return JText::_("J2STORE_MELLI_PAYMENT_VER_" . $res_code);
        }


    }

با تشکر

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید ارسال داشته باشید و بعد ثبت نام خود را در سایت کامل نمایید. اگر حساب کاربری در سایت دارید، جهت ارسال با حساب کاربری خود هم اکنون وارد سایت شوید

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • افزودن...