|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (42)
просмотр истории страницыПри возникновении проблем с приемом платежей проверьте что пакеты от платежной системы на биллинг приходят и отправляются обратно. |
{toc:maxLevel=3} |
|
Для этого: |
|
h5. 1. Запустите на биллинге tcpdump командой |
h1. Ошибка при переходе на страницу оплаты из личного кабинета |
|
Для стандартных настроек платежной системы без шифрования без шифрования {code}tcpdump -nvi any port 1444{code}Для стандартных настроек платежной системы без шифрования с шифрованием |
h3. Как проверить что проблема в этом? |
|
Совершить тестовый платёж. На странице оплаты возникает сообщение об ошибке. |
|
{code}tcpdump -nvi any port 1443{code} |
h3. Как исправить? |
|
*Примечание: Порты могут быть другие, в зависимости от того, какие указаны у вас в настройках* *[платежных систем|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=49087129]**.* |
# Включите повышенное логирование модулей кабинета по [статье|Отладка модулей кабинета]; # Попробуйте совершить тестовый платёж; # Соберите данные по тестовому платежу; # Отправьте запрос в техническую поддержку платёжной системы с данными о платеже; # Создайте заявку в helpdesk с комментариями от технической поддержки платёжной системы. |
|
h5. 2. Проверяем доступность портов платежных систем |
h1. Убедитесь что на стороне платежной системы правильный адрес обработчика биллинга |
|
h3. Как проверить что проблема в этом? Чтобы проверить, адрес правильный или нет - просто откройте его в браузере, предварительно добавив свой адрес в список разрешенных для доступа к платёжным системам. h3. Как исправить? Укажите правильный адрес с учетом всех нюансов в личном кабинете платёжной системе или попросите их поддежку указать нужную ссылку (зависит от возможности ЛК платёжки). h2. Локализуем проблему h3. Возможно какая-то ошибка в тексте ссылки (неверные символы и тд) * Орфографические ошибки где-то в названии php: {code}https://bestisp.ru:1443/ossssmp.php{code} Ошибка в имени php-файла, правильно "*o{*}{color:red}{*}s{*}{color}{*}mp.php*" * Проверить можно, в том числе и по логу web-сервера asr_fiscal: {code}tail -f /app/asr_fiscal/var/log/httpd/access_log{code} h3. Может не тот протокол (http вместо https или наоборот)? * Неправильный протокол, http вместо https или наоборот: {code}http://bestisp.ru:1443/osmp.php{code} Здесь должен быть протокол *https*, так как используется защищенный порт _1443_ h3. Может не тот порт? (например, 1444 для https или 1443/2443) для http {code:title=Неправильно}https://bestisp.ru/osmp.php{code} {code:title=Правильно}https://bestisp.ru:1443/osmp.php{code} Был пропущен порт, указанный в [основных настройках платежных систем|CarbonBilling:Основные настройки платежных систем] h1. Возможно запросы не проходят firewall Убедитесь, что IP-адреса платёжной системы есть в разрешенном списке. Это можно сделать в меню [настройки сети|CarbonBilling:Настройка сети для платежных систем] платёжных систем. {info} Бывает, что платёжная система меняет IP-адреса с которых приходят данные о платежах. Если данные о платежах не приходят, нужно запросить актуальный список IP-адресов. {info} h3. Как проверить, в этом проблема или нет? # Добавьте в [список разрешенных IP|CarbonBilling:Настройка сети для платежных систем] "весь интернет": подсеть 0.0.0.0/0 # Совершите платёж как обычно Если платёж пройдет - значит точно дело в адресе h3. Как исправить? Заведите адреса или подсети платёжных систем в список разрешенных. {warning}Не забудьте убрать подсеть 0.0.0.0/0 из списка разрешенных когда закончите отладку\!{warning} h2. Локализуем проблему h3. Запросы приходят не с того адреса Если адреса есть в списке, но запросов от платежной системы не видно в логе, проверьте приходит ли от них трафик на [порты платежных систем|CarbonBilling:Основные настройки платежных систем] с помощью tcpdump: {code}tcpdump -nnei any port 1443 or port 2443 or port 1444{code} Такое может случиться если у платёжной сети изменились IP-адреса - возможно у них сменился провайдер или они просто расширили сеть. h3. Запросы приходят не на тот порт {info}Примечание: Порты могут быть другие, в зависимости от того, какие указаны у вас в настройках *[платежных систем|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=49087129]*.{info} Если уверены, что адреса точно правильные, запустите tcpdump без указания порта, но с IP-адресами платежных систем. Допустим, адреса платежной системы 10.0.0.1 и 10.1.1.0/24, команда будет такой: {code}tcpdump -nnei any host 10.0.0.1 or net 10.1.1.0/24{code} Такое может случаться, если со стороны платёжной системы определён ограниченный набор сетевых портов по которым они могут интегрироваться - например, [CarbonBilling:Тинькофф] может отсылать запросы только на порты 80, 8080, 443 и 1443, а на 1444 и 2443 - не может. h4. Как исправить? В том же примере с [CarbonBilling:Тинькофф] \- правилами DNAT. Но попробуйте вернуться к самому первому пункту этой инструкции и убедитесь что правильно указали адрес обработчика. Если ни чего не помогло - видимо проблема глубже и совсем нетипичная. Подключите поддержку платёжной системы к решению. h3. Проверяем доступность портов для платежных систем |
Предварительно на сервере оставьте команду tcpdump, чтобы видеть пакеты. Тестировать прохождение пакетов вы можете командой {code} |
... |
|
h5. 3. Проверяем доступность обработчика платежной системы |
В личном кабинете вашей платежной системы должен быть указан адрес куда сервер платежной системы шлет запросы. |
... |
!pay_sys.png|border=1! |
По возможности проверьте возвращаемый код при передаче параметров В случае, если платежная система использует 443 порт - необходимо изменить поле "ПОРТ, НА КОТОРОМ ДОСТУПЕН ВЕБ-ИНТЕРФЕЙС АБОНЕНТА:", который по умолчанию так же указан 443, на любой другой, например 2443 во вкладке "Платежные системы" |
|
h5. 4. По возможности проверьте возвращаемый код при передаче параметров |
!port443.png|border=1! |
|
Его можно получить самостоятельно если вы разбираетесь в платежных системах. |
|
Либо можно его запросить у специалиста платежной системы. Здесь нужно знать какой запрос шлет платежная система и что ей отвечает на него обработчик. |
h3. Возможно трафик блокирует rp_filter |
|
Запрос будет вида: |
Если прочие пункты инструкции Вы проверили и всё в порядке, возможно проблема в rp_filter. Убедитесь, что ответный маршрут к IP платёжной системы ведёт через тот же интерфейс, на который она обращается. Проверить это можно так: # С tcpdump посмотрите, на какой интерфейс приходит пакет # Посмотрите, как пойдёт ответ с помощью {{ip r g to <IP>}}, где вместо <IP> подставьте адрес платёжки. Интерфейсы должны совпадать. Так же Вы можете включить логирование "марсианских" пакетов - такими ядро Linux считает пакеты, у которых трафик по scr адресу ожидается на другом интерфейсе {code}echo 1 > /proc/sys/net/ipv4/conf/all/log_martians{code} Пример, как диагностировать по логу: |
{code} |
http://11.22.33.44:1444/robokassa.php?<список параметров> |
# пришедший пакет в логе [root@CarbonBillingServer ~]# tail -f /var/log/messages May 23 16:43:42 CarbonBillingServer kernel: martian source 169.254.14.43 from 88.85.210.133, on dev eth0 May 23 16:43:42 CarbonBillingServer kernel: ll header: 0c:c4:7a:e5:a8:56:10:f3:11:14:a3:4a:08:00 # проверка маршрута к адресу источника пакета [root@CarbonBillingServer ~]# ip r g to 88.85.210.133 88.85.210.133 via 172.22.0.1 dev eth1 src 172.22.0.222 cache mtu 1500 hoplimit 64 |
{code} |
Вывод будет похож на скриншот выше, но иметь другой вывод. |
Видно, что пакет к адресу платёжных систем 169.254.14.43 пришел с адреса 88.85.210.133 на интерфейс eth0, а обратный пойдёт через eth1. |
|
h5. 5. При платеже находит несколько абонентов. |
h4. Как исправить |
|
Проверьте настройки: |
# Добавьте маршрут к адресу источника через нужный интерфейс. Для интерфейса eth0 это будет файл {{/etc/sysconfig/network-scripts/route-eth0}} На лету это можно сделать отдельной командой: {code}ip r add 88.85.210.133 via <GATEWAY_IP> dev eth0{code} Где вместо <GATEWAY_IP> укажите IP шлюза на этом интерфейсе. При этом в файл сохранить маршрут тоже нужно. # Если у Вас нет возможность добавить маршрут, можете настроить менее жесткую проверку rp_filter на интерфейсе, откуда куда приходит трафик от платёжной системы, или совсем его отключить. Допустим, это интерфейс eth0, тогда выполните следующую команду {code}sysctl -w net.ipv4.conf.eth0.rp_filter=2{code} И попробуте повторить платёж. Если это решило проблему, добавьте настройку в {{/etc/sysctl.conf}}, чтобы она сохранилась при перезагрузках |
{code} |
http://11.22.33.44:8081/settings/asr_fiscal/osmp/ |
# Controls source route verification net.ipv4.conf.default.rp_filter = 1 # Для платёжных систем net.ipv4.conf.eth0.rp_filter = 2 |
{code} |
{note}{{rp_filter=2}} пропустит трафик, если хотя бы один интерфейс может ответить. Этого должно хватить. Если не поможет - можно совсем отключить rp_filter: {{rp_filter=0}}{note} h2. Проверка логов платежной системы # Если есть трафик проверьте логи http сервера. Есть два лога, с ошибками: {code}/app/asr_fiscal/var/log/httpd/error_log{code} И общий лог для всех соединений. {code}/app/asr_fiscal/var/log/httpd/access_log{code} Если не прошел конкретный платёж найдите его в логе по времени. # Если данные о платеже есть в логе http сервера, проверьте лог обработчика используемой платежной системы (как правило называется подобно наименованию обработчика) и посмотрите, что в нем нет ошибок обработки платежей. Логи платежных систем располагаются в папке: {code}/app/asr_fiscal/var/log/paysystems/{code} Также путь к логу Вы можете узнать в [документации по настройке платежной системы|CarbonBilling:Платёжные системы]. h2. Проверка логов API Убедитесь по журналу API биллинга, что в них отсутствуют ошибки: В первую очередь журнал запросов API в контейнере платежных систем: {code}/app/asr_fiscal/var/log/api.log{code} Если в нем есть какие-либо ошибки, их можно проанализировать в логах биллинга: {code}/app/asr_billing/var/log/django/system_api.log /app/asr_billing/var/log/admin_web_server.log{code} {note}Файлы журналов могут ротироваться каждые сутки и храниться в течение 30 дней; если необходимо найти ошибку, произошедшую в недавнем прошлом, найдите соответствующий архивный файл: /app/asr_billing/var/log/*admin_web_server.log* \- +актуальный+ файл /app/asr_billing/var/log/*admin_web_server.log-20190218.gz* \- +архивный+ файл{note} Пример поиска ошибок в логе */app/asr_fiscal/var/log/api.log*: {code}grep -i err /app/asr_fiscal/var/log/api.log | tail -n 2{code} Вывод: {code}2019-02-18 01:08:58 __call_api->curl_error($ch): Failed to connect to 169.254.80.82 port 8082: Connection refused 2019-02-18 12:23:15 __call_api->curl_error($ch): Operation timed out after 30001 milliseconds with 0 bytes received{code} h1. Примеры решения проблем h2. При платеже находит несколько абонентов. В логе платежной системы возникает ошибка {code} get() returned more than one Abonents -- it returned 2!{code} Проверьте настройки в разделе *Главное меню биллинга - "Платежная системы" - "Настройки OSMP"* Также, для быстрого перехода можно использовать ссылку ниже: {code} http://169:254:80:81:8081/settings/asr_fiscal/osmp/ {code} {info}*169:254:80:81* замените на IP Вашего биллинга{info} |
Настройки *ИДЕНТИФИЦИРОВАТЬ* позволяют выбрать, по каким параметрам все обработчики платежных систем ищут абонента. Рекомендуется оставить только один вариант, наилучшим будет *ИДЕНТИФИЦИРОВАТЬ ПОЛЬЗОВАТЕЛЯ ПО НОМЕРУ ДОГОВОРА* |
h5. 6. В случае, если платежная система использует 443 порт - необходимо изменить поле "ПОРТ, НА КОТОРОМ ДОСТУПЕН ВЕБ-ИНТЕРФЕЙС АБОНЕНТА:", который по умолчанию так же указан 443, на любой другой, например 2443 во вкладке "Платежные системы" |
h2. Стали повторяться номера платежей |
|
!port443.png|border=1! |
Перестали проходить платежи через Робокассу. Сервис выдает ошибку: 40 (со стороны Робокассы). Данная ошибка 40 возникает на стороне магазина. В момент формирования запроса на инициализацию оплаты биллинг передает в Robokassa значение InvId (уникальный номер платежа), которое уже использовалось прежде. Этот параметр должен принимать с каждой переадресацией в сервис ROBOKASSA уникальное значение. Ошибка показывает, что один из клиентов уже оплатил данный номер заказа ранее, а сейчас биллинг переадресует в Robokassa другого плательщика, выставляя ему тот же номер счета. Проблема может возникнуть, если Вы переключили интеграцию Робокассы с другого биллинга на Carbon Billing. Необходимо исправить начальное значение параметра InvId. Это может сделать техническая поддержка по запросу, следовательно, нужно создать заявку с описанием проблемы в Helpdesk. |
|
{info} Платежные системы отправляющие данные в формате XML Примеры: [Биллинговые системы, Центральная Касса, КиберПлат|CarbonBilling:Сбербанк. ООО Биллинговые системы, Центральная Касса, КиберПлат], [ОСМП|CarbonBilling:Инструкция по подключению ОСМП. Несколько операторов] |
|
h5. 7. Все данные, которые удалось получить необходимо будет передать специалистам технической поддержки через заявку в [HelpDesk|http://helpdesk.carbonsoft.ru] |
# В лог платежной системы пишутся параметры пришедшие на обработчик в виде XML # ОСМП-подобные протоколы обязательно должны содержать account и act=pay/check{info} h1. Если все равно не удалось понять в чем проблема Создайте заявку в [HelpDesk|http://helpdesk.carbonsoft.ru], опишите результаты проверки по инструкции выше: текст, скриншоты или видео. Если возможно, сделайте скриншоты настроек *в личном кабинете платёжной системы* и приложите к заявке. Также ускорит решение заявки наличие логов. |