Перейти к содержимому


Фотография
* - - - - 1 Голосов

500 ошибка при возврате от платежного агрегатора успешного платежа.


Лучший Ответ grhgrmgrhrm , 09 January 2017 - 21:24

И Вы в сертификате по ходу забыли поменять хост с www.mysite.com на prmvntl.by. Проверьте этот момент.


 

Подозреваю, что дело в сертификатах, но не уверен.


Скорей всего - техподдержка платежного сервиса - говорит, что при проверке сертификата, получает от моего сервера SSL сертификат который не принадлежит хосту mysite.com, а принадлежит хосту www.prmvntl.by. И интересуется про то, подключен ли SNI. - а хостер говорит, что SNI подключен, но рекомендует взять vps.

 

Решение проблемы - 500 Ошибка возникала из-за того, что сайт с сертификатом находится не на выделенном сервере и платежный сервис думал, что происходит подмена сертификатов. Тут два варианта решения - либо брать vps либо отключить SSL на сайте. 

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 6

#1 grhgrmgrhrm

grhgrmgrhrm

Отправлено 02 January 2017 - 23:45

Здравствуйте!

 

Прикручиваю другой платежный сервис к сайту (по инструкции ), в настройках jbzoo / электронная коммерция / ссылки выбираю ссылку, по которой должен будет возвращаться пользователь в случае успешной оплаты:

/index.php?option=com_zoo&controller=payment&task=paymentSuccess

затем в настройках платежной системы делаю соответствующие изменения и пробую провести платеж. После успешной оплаты, платежная системы возвращает назад на сайт и сразу выскакивает 500 ошибка.

 

При включении в общих настройках сайта / сервер / отладка системы

При таких же действиях получаю:

Undefined Order: Variable name with order ID was not found

 

При этом в адресной строке возврата добавляются параметры от платежной системы:

?option=com_zoo&controller=payment&task=paymentSuccess&billnumber=5462977301411616&ordernumber=19&payerdenial=0

 

Несколько позже, приходит письмо от сервиса с ошибками:

Стек ошибки:
ERROR: Connection Failure. Status code unavailable. 
Unknown host: hostname in certificate didn't match: 
<www.mysite.com> != <www.prmvntl.by> OR <www.prmvntl.by> OR <prmvntl.by>

В самом сайте есть некоторые особенности: несколько языков, подключен сертификат + установлен редирект с http:// на https://

 

Система: Joomla: 3.6.5 JBZoo: 2.3.0 Pro rev3195 Zoo: 3.3.23 WidgetKit: 2.9.1 Версия PHP 5.6.29-0

 

Если нужно - скину явки/пароли

 

 


  • 0

#2 fiction13

fiction13

Отправлено 03 January 2017 - 07:56

500 ошибка - это нормально. Включайте отладку системы, чтобы видеть сообщения системы.

 

Трудно сказать, что у Вас не так, не видя Ваш код (прикрепите его).

 

На первый взгляд Вы неправильно написали функцию getRequestOrderId.

 

Для начала платежная система должна постучаться по адресу, чтобы проверить можно ли провести платеж. На этом этапе все нормально?

/index.php?option=com_zoo&controller=payment&task=paymentCallback

  • 0

#3 grhgrmgrhrm

grhgrmgrhrm

Отправлено 04 January 2017 - 21:39


Для начала платежная система должна постучаться по адресу, чтобы проверить можно ли провести платеж. На этом этапе все нормально?

/index.php?option=com_zoo&controller=payment&task=paymentCallback

Система обрабатывает тестовый платёж успешно. На электронку "заказчика" приходит письмо об успешном платеже. А на следующий день на админ-почту скидывает ошибку с текстом.

    Стек ошибки:
    ERROR: Connection Failure. Status code unavailable. 
    Unknown host: hostname in certificate didn't match: 
    <www.mysite.com> != <www.prmvntl.by> OR <www.prmvntl.by> OR <prmvntl.by>

Код выложу чуть позже, вначале уберу лишнее из него.


Сообщение отредактировал grhgrmgrhrm: 04 January 2017 - 21:39

  • 0

#4 fiction13

fiction13

Отправлено 05 January 2017 - 08:05

Unknown host: hostname in certificate didn't match: != OR OR

И Вы в сертификате по ходу забыли поменять хост с www.mysite.com на prmvntl.by. Проверьте этот момент. 


  • 0

#5 grhgrmgrhrm

grhgrmgrhrm

Отправлено 05 January 2017 - 21:27

Трудно сказать, что у Вас не так, не видя Ваш код (прикрепите его).

<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

/**
 * Class JBCartElementPaymentBelassist
 */
class JBCartElementPaymentBelassist extends JBCartElementPayment
{

    /**
     * @var string
     */
    private $_realUrl = 'https://realurl';

    /**
     * @var string
     */
    private $_testUrl = 'https://test.paysec.by/pay/order.cfm';

    /**
     * Redirect to payment action
     * @return null|string
     */
    public function getRedirectUrl()
    {
        $orderAmount = $this->_getOrderAmount();
        $merchantUrl = $this->isDebug() ? $this->_testUrl : $this->_realUrl;

        $fields = array(
            'OrderAmount'         => $orderAmount->val(),
            'OrderNumber'          => $this->getOrderId(),
            'Merchant_ID'      => $this->config->get('login'),
            'Desc'           => $this->getOrderDescription(),
            'SignatureValue' => $this->_getSignature(),
        );

        if ($this->isDebug()) {
            $fields['IsTest'] = 1;
        }

        return $merchantUrl . '?' . $this->_jbrouter->query($fields);
    }

    /**
     * Checks validation
     * @return null|void
     * @throws AppException
     */
    public function isValid($params = array())
    {
        $crc   = JString::trim(JString::strtoupper($_REQUEST["SignatureValue"]));
        $myCrc = JString::trim(JString::strtoupper(md5(implode(':', array(
            $_REQUEST['OutSum'],
            $this->getOrderId(),
        )))));

        if ($crc === $myCrc) {
            return true;
        }

        return false;
    }

    /**
     * Get security signature
     * @return string
     */
    protected function _getSignature()
    {
        $orderAmount = $this->_getOrderAmount();

        return md5(implode(':', array(
            $this->config->get('login'),
            $orderAmount->val(),
            $this->getOrderId(),
        )));
    }

    /**
     * Detect order id from merchant's robot request
     * @return int
     */
    public function getRequestOrderId()
    {
        return $this->app->jbrequest->get('InvId');
    }

    /**
     * Detect order id from merchant's robot request
     * @return int|JBCartValue
     */
    public function getRequestOrderSum()
    {
        return $this->_getOrderAmount();
    }

    /**
     * Get order amount
     * @return $this
     */
    protected function _getOrderAmount()
    {
        $order       = $this->getOrder();
        $payCurrency = $this->getDefaultCurrency();

        return $this->_order->val($this->getOrderSumm(), $order->getCurrency())->convert($payCurrency);
    }

}

Безымянный.png

 

Это обязательные параметры от платежного сервиса.


  • 0

#6 SmetDenis

SmetDenis

Отправлено 09 January 2017 - 08:52

Дополнительно нужен текст 500й ошибки.
Если это стандартная проверка, то стоит смотреть тут - _error()

media\zoo\applications\jbuniversal\framework\controllers\payment.php

JBZoo c подключенным JBDump будет логировать сообщение из переменной $message + переменные реквеста.

Чтобы включить логирование, нужно включить в код сайта jbdump
https://github.com/JBZoo/JBDump(через include в index.php)

А затем убрать эту строку в файле
media\zoo\applications\jbuniversal\framework\helpers\jbdebug.php

s7ty_200x0.png

После этого в папке logs сайта должны писать логи всех стандартных исключений (500-х) именно при оплате.
Это такой некий режим отладки для разработчиков.

Если в логе ничеге не будет, о нужно как-то иным способом получить текст ошикбки.
Например, эмулировать вход платежного робота на ссылку оплату со всем набором переменных.

Подозреваю, что дело в сертификатах, но не уверен.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#7 grhgrmgrhrm

grhgrmgrhrm

Отправлено 09 January 2017 - 21:24   Лучший Ответ

И Вы в сертификате по ходу забыли поменять хост с www.mysite.com на prmvntl.by. Проверьте этот момент.


 

Подозреваю, что дело в сертификатах, но не уверен.


Скорей всего - техподдержка платежного сервиса - говорит, что при проверке сертификата, получает от моего сервера SSL сертификат который не принадлежит хосту mysite.com, а принадлежит хосту www.prmvntl.by. И интересуется про то, подключен ли SNI. - а хостер говорит, что SNI подключен, но рекомендует взять vps.

 

Решение проблемы - 500 Ошибка возникала из-за того, что сайт с сертификатом находится не на выделенном сервере и платежный сервис думал, что происходит подмена сертификатов. Тут два варианта решения - либо брать vps либо отключить SSL на сайте. 


Сообщение отредактировал grhgrmgrhrm: 13 January 2017 - 11:44

  • 0




Click to return to top of page in style!