Платежные системы. Не проходят платежи.

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (17)

просмотр истории страницы


h1. Ошибка при переходе на страницу оплаты из личного кабинета

h3. Как проверить что проблема в этом?

Совершить тестовый платёж. На странице оплаты бедет возникает сообщение об ошибке.

h3. Как исправить?

# Включите повышенное логирование модулей кабинета по [статье|Отладка модулей кабинета];
# Попробуйте совершить тестовый платёж;
# Соберите данные по тестовому платежу;
# Отправьте запрос в техническую поддержку платёжной системы с данными о платеже;
# Создайте заявку в helpdesk с комментариями от технической поддержки платёжной системы.

h1. Убедитесь что на стороне платежной системы правильный адрес обработчика биллинга
Был пропущен порт, указанный в [основных настройках платежных систем|CarbonBilling:Основные настройки платежных систем]


h1. Возможно запросы не проходят firewall



h1. Если все равно не удалось понять в чем проблема
h3. Возможно трафик блокирует rp_filter

Создайте заявку в [HelpDesk|http://helpdesk.carbonsoft.ru], опишите результаты проверки по инструкции выше: текст, скриншоты или видео.
Если возможно, сделайте скриншоты настроек *в личном кабинете платёжной системы* и приложите к заявке. Также ускорит решение заявки наличие логов:
Если прочие пункты инструкции Вы проверили и всё в порядке, возможно проблема в 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}
# пришедший пакет в логе
[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.

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}
# 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. Проверка логов платежной системы

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://11.22.33.44:8081/settings/asr_fiscal/osmp/ http://169:254:80:81:8081/settings/asr_fiscal/osmp/
{code}
{info}*169:254:80:81* замените на IP Вашего биллинга{info}
Настройки *ИДЕНТИФИЦИРОВАТЬ* позволяют выбрать, по каким параметрам все обработчики платежных систем ищут абонента. Рекомендуется оставить только один вариант, наилучшим будет *ИДЕНТИФИЦИРОВАТЬ ПОЛЬЗОВАТЕЛЯ ПО НОМЕРУ ДОГОВОРА*

# В лог платежной системы пишутся параметры пришедшие на обработчик в виде XML
# ОСМП-подобные протоколы обязательно должны содержать account и act=pay/check{info}

h1. Если все равно не удалось понять в чем проблема

Создайте заявку в [HelpDesk|http://helpdesk.carbonsoft.ru], опишите результаты проверки по инструкции выше: текст, скриншоты или видео.
Если возможно, сделайте скриншоты настроек *в личном кабинете платёжной системы* и приложите к заявке. Также ускорит решение заявки наличие логов.