Поскольку платежи связаны с интернет-индустрией, неизбежно возникнет необходимость сверки.Почти все бизнесы интернет-компаний в той или иной степени связаны с платежами, а более крупные компании даже имеют свои собственные сторонние платежные компании в качестве стандарта. является универсальным. Система сверки является наиболее важной частью платежной системы и последней линией защиты для обеспечения безопасности транзакций и средств. В большинстве интернет-компаний обычно существуют независимые системы сверки для обработки, такие как: платформы электронной коммерции, интернет-финансы, сторонние платежные компании и т. д.
Сверка является частью платежной системы, поэтому перед сверкой давайте разберемся в соответствующих бизнес-знаниях.
знание бизнеса
что такое примирение
Традиционная сверка заключается в проверке счетов, которая относится к работе по проверке и проверке соответствующих данных в бухгалтерских книгах с целью обеспечения правильности и достоверности записей в бухгалтерских книгах. В банковских или сторонних платежах сверка счетов на самом деле представляет собой процесс подтверждения транзакций в течение определенного периода.Как правило, банк или сторонняя платежная компания сортирует транзакции предыдущего дня на второй день и создает выписку для Продавцы платформы загружают и оплачивают кредиторскую задолженность продавцам платформы. На следующем уровне, в индустрии интернет-финансов или электронной коммерции, согласование фактически заключается в подтверждении правильности транзакций и денежных средств с платежным провайдером (банковских и сторонних платежей) в течение фиксированного периода, а также в обеспечении транзакции и денежных средств. обеих сторон.
Общее согласование, все взаимодействия данных между приложениями теоретически должны быть согласованы. Таким образом, согласование также можно разделить на согласование потоков информации и согласование потоков капитала. Согласование информационных потоков также обычно используется для согласования собственных внутренних систем, таких как согласование платежных данных в платежной системе и бизнес-данных в бизнес-системе для обеспечения согласованности операций с капиталом и бизнес-операций. Сверка движения денежных средств — это сверка денежных транзакций между платежной системой и банком или сторонней платежной системой.
Метод сверки
- Односторонняя сверка: обычно используют стороннее платежное учреждение или банковский поток для сверки со своей собственной системой, чтобы предотвратить проблему отбрасывания заказов;
- Двусторонняя сверка: двусторонняя проверка потока между двумя приложениями, такими как заказ и финансовая система, необходимо убедиться, что финансовая система имеет успешную платежную запись, и система заказов также успешна; это также необходимо убедиться, что система заказов записывает успешную запись, и финансовая система также успешна.
Обычно мы используем двустороннее согласование для согласования
Вопросы, связанные с примирением
Проблема несоответствия ежедневных точек отсечки разных систем: скользящая сверка
Обработка ошибок: исправление, компенсация (возврат)
Связанные концепции
выставление счетов и согласование
По каждой сделке записи каждого участника должны совпадать без отклонений. Задача системы выверки счетов состоит в том, чтобы найти несоответствия в записях, то есть остатке на счете, а затем устранить эти различия вручную или автоматически, то есть остатке на счете.
Длинные и отсутствующие заказы
При сверке счетов с банком на основе транзакций платформы и обнаружении транзакций внутри цикла, у платформы есть этот заказ, но нет заказа в стороннем платеже, который становится долгосрочным платежом платформы. Долгая оплата на платформе, как правило, связана с ситуацией, когда пользователь пересекает небо при оплате, например, пользователь создает заказ в 23:58 и оплачивает в 00:03 утра следующего дня. В случае сверки на основе банковских транзакций, у банка есть этот заказ, но у платформы нет этого заказа, то есть на платформе отсутствует заказ. Отсутствующие заказы на платформе случаются редко и, как правило, напрямую передаются в ручную обработку.
Система учета
В общей платежной системе он будет разделен на учетную запись для входа и учетную запись для оплаты, учетная запись для входа относится к удостоверению прав и интересов владельца средств, используемых для транзакций в платежной системе, учетная запись для входа относится к сертификату для входа в систему и личной информации пользователя. в системе. У пользователя может быть несколько учетных записей для входа, а учетная запись для входа может иметь несколько платежных учетных записей, таких как учетная запись для сдачи, учетная запись карты с сохраненной стоимостью и т. д. Как правило, платежные счета не распределяются между несколькими учетными записями. Транзакция сверки, как правило, является платежным счетом для участия в транзакции.
Транзакции и счета
Настройка счета, как правило, начинается с торговли. Осуществление сделки должно поддерживаться счетом, а счет является основным элементом сделки. С точки зрения платежной системы поток средств, участвующих в транзакции, — это поток средств с одного счета на другой. Сторона, инициирующая сделку, называется субъектом сделки, которым может быть лицо или учреждение.
Клиринг и расчет
Клиринг в основном относится к поступлению валюты и платежу между различными банками.Его можно рассматривать как отправку, получение и проверку и подтверждение платежных инструкций банком-инициатором и банком-получателем перед расчетом.Результатом является всесторонний обмен расчетными инструментами и платежная информация и установление окончательного расчета.
Расчет относится к процессу соответствующего учета позиций, подлежащих расчету в банке-отправителе и банке-получателе, завершению перевода средств и уведомлению как плательщика, так и плательщика. В настоящее время большая часть банковских расчетов осуществляется в основном через два типа счетов: один — это агентский счет, открытый друг у друга между банками, а другой — счет, открытый в центральном банке, независимых финансовых учреждениях, таких как UnionPay, или третий — счет. партийные платежные учреждения.
Ликвидация: Рассчитайте время и сумму денег, подлежащих получению и уплате каждой стороной. Расчет: По результату расчета осуществляется фактическая операция по перечислению денежных средств сторонам в указанное время.
Пул капитала
Резервные средства пользователя (например, пополнения) равномерно размещаются на банковском счете предприятия, и предприятие может распоряжаться этими средствами по своему усмотрению, что является фондом пула. Соответственно, стороннее условное депонирование, резервные средства пользователя размещаются на виртуальном счете, открытом предприятием в стороннем платежном учреждении для пользователя, и предприятие не может изъять эти средства по своему желанию. Интернет-финансы теперь полностью требуют доступа к банковскому депозитарию, то есть банк создаст счет фонда для каждого пользователя, чтобы защитить средства пользователя, и интернет-финансовые компании не могут произвольно переводить суммы на эти счета фонда.
система примирения
Дизайн примирения
На этапе проектирования системы согласования система согласования делится на четыре модуля, каждый из которых отвечает за свои функции.
- Модуль сбора файлов: загрузите или прочитайте файл сверки каждого канала
- Модуль синтаксического анализа файлов: создание различных шаблонов синтаксического анализа и получение соответствующих шаблонов синтаксического анализа для анализа в соответствии с каналами и типами файлов.
- Модуль обработки сверки: обработка бизнес-логики сверки
- Модуль обработки ошибок: обработка заказов в пуле ошибок
Как правило, разрабатывается задача синхронизации, которая запускается в фиксированный момент времени каждый день.Класс планирования, управляемый временем, соответственно вызывает четыре модуля для обработки согласования. Некоторые банки будут активно продвигать заявление о сверке, а затем запускать процесс сверки через обратный вызов http.
Алгоритм согласования
1. Процесс:
1. Получить документы сверки от вышестоящих каналов (банков, UnionPay и других финансовых учреждений), а программа их построчно анализирует и сохраняет;
2. В процессе обработки программы, на основе таблицы исходного файла сверки, программа построчно считывает и сравнивает учетные записи с транзакционными записями нашей системы (если есть учетная система, разумное решение должно быть на основании бухгалтерских записей) Сравните и выясните отличия записей;
3. Основываясь на записях транзакций и учетных записях нашей системы, программа считывает и сравнивает восходящие файлы сверки построчно, чтобы найти записи различий.
2. Дефекты:
1. Запрашивайте связанные данные во время процесса согласования.Если объем данных огромен, это сильно повлияет на производительность базы данных, а расширение логики согласования чрезвычайно проблематично;
2. Эффективность алгоритма построчного сравнения низкая, но в алгоритме нет места для оптимизации. Если используются базы данных INTERSECT и MINUS, нагрузка на базу данных также высока;
3. В случае большого объема бизнеса (например, необходимо проверить сотни восходящих каналов, каждый из которых содержит сотни тысяч записей о транзакциях), нагрузка на сервер согласования и сервер базы данных высока. Даже если принято разделение чтения и записи, необходимость использования библиотеки чтения во время согласования учетных записей остается неизменной;
4. Импортировать пакетные файлы, а эффективность построчного складирования относительно низкая (каждый раз нужно устанавливать сетевое соединение и закрывать соединение).
3. Улучшение:
1. Если задействована передача по сети, попробуйте работать в пакетном режиме, чтобы уменьшить потребление сети и затраты времени;
2. Используйте Redis и другие базы данных NOSQL, чтобы снизить нагрузку на серверы баз данных. При этом его также легко расширять, одного сервера Redis недостаточно, и вы можете без ограничений добавлять серверы для сверки аккаунтов;
3. Используйте функцию sdiff коллекции наборов Redis и используйте высокую производительность алгоритма Redis sdiff для сравнения разницы между восходящей записью и нашей записью.
Процесс согласования
1. Скачать выписку
Большинство банков требуют, чтобы сторона доступа предоставляла услугу ftp, и банк регулярно отправляет выписку на ftp-сервер, предоставленный стороной доступа; некоторые банки предоставляют услугу загрузки выписки как через ftp/http, так и через ftp. Большинство из них Кроме того, выписка онлайн-банкинга довольно специфична.Как правило, необходимо войти в фоновую систему управления онлайн-банкингом для расчетов, загрузить ее вручную и импортировать выписку в систему сверки после завершения расчетов. .
Техническая реализация может быть выполнена в заводском режиме.Разные платежные каналы имеют разные классы загрузки.Если это http интерфейс, то файл выписки записывается.Если это ftp сервер, то выписка в сервере загружается в локальный каталог с разбором. Код в основном включает класс инструментов ftp, класс инструментов http(s) и соответствующие операции чтения и записи ввода-вывода.
Что касается выбора технологии, HTTP(S) может использовать apache httpclient для реализации объединения соединений и возобновляемой загрузки, а FTP также может использовать Apache Commons Net API. Но независимо от того, какой именно, вам нужно установить количество повторных попыток и время ожидания соединения. Необходимо соблюдать осторожность при настройке количества повторных попыток и интервала. Слишком частые повторы легко убьют сервер. Если временной интервал слишком велик, последующие этапы обработки будут заблокированы. Подходящим интервалом между повторными попытками является от 5 до 10 минут.
2. Создайте партию
С одной стороны, пакеты создаются для предотвращения повторной сверки, а с другой стороны, информацию о результатах сверки необходимо сохранять в пакете по окончании сверки.
3. Разобрать файл
Файл синтаксического анализа в основном предназначен для синтаксического анализа загруженного файла согласования в тип данных, который мы можем согласовать и сохранить в библиотеке. Проанализированные файлы имеют разные типы в разных каналах, поэтому они также могут быть разработаны в виде разных шаблонов синтаксического анализа, а заводской режим может использоваться для синтаксического анализа файлов разных форматов в единый тип данных, который можно согласовать. Типы анализируемых файлов обычно включают: json, текст, cvs, excle и т. д., а некоторые банки шифруют счета или предоставляют формат пакета zip.Здесь для обработки необходимо разработать дополнительные инструменты zip, а также инструменты шифрования и дешифрования.
Основная информация, содержащаяся в файле сверки, включает в себя: номер заказа продавца, серийный номер транзакции, время транзакции, время платежа, плательщик, сумма транзакции, тип транзакции и статус транзакции.
4. Обработка согласования
Обработка согласования также является основной логикой согласования, которая реализуется в следующих шагах:
- Запросить все ордера, успешно проданные на платформе
- Запрашивайте все торговые ордера на платформе
- Запросить данные в пуле кеша платформы
- Запрос порядка успешной банковской транзакции
- Начните сверку на основе данных платформы, и долгосрочный платеж платформы будет зачислен в буферный пул.
- Начать сверку на основе данных банковского канала
Логика согласования на основе заказов платформы: на основе всех успешных заказов на платформе просмотрите все данные банковских заказов, найдите заказы с одинаковым номером заказа и сравните, соответствуют ли сумма и плата за обработку заказов. Если он согласован, пропустите его; если он несовместим, ордер платформы попадет в пул ошибок; если транзакция не найдена в банковском ордере, ордер попадет в пул кеша, и будет записан долгий платеж платформы. При этом учитываются сумма, связанная с сверкой, и количество заказов.
Логика согласования на основе банковских заказов: на основе данных банковских транзакций, просмотр всех транзакций платформы (включая неудачные заказы), поиск заказов с тем же номером заказа, но несовместимым статусом платежа, и сохранение суммы в пуле ошибок для сравнения. Если заказ не найден в транзакции платформы, пройдитесь по кэш-пулу, чтобы найти соответствующий заказ платформы, чтобы проверить, соответствует ли сумма, и несоответствие попадает в пул ошибок. Если соответствующий заказ по-прежнему не найден в пуле буферов, он напрямую попадет в пул ошибок и запишет пропущенный заказ платформы. При этом учитываются сумма, связанная с сверкой, и количество заказов.
5. Статистика сверки
В соответствии с процессом сверки, связанная со статистикой информация включает в себя: время завершения сверки, успешность сверки, сумму сверки и количество заказов, количество ошибок и количество заказов, сумму буферного пула и количество заказов и т.д.
6. Обработка ошибок
В общей системе существует два типа обработки ошибок: один обрабатывается вручную, а другой обрабатывается системой автоматически.
В основном это следующие ситуации:
- Локальный не платный, платный канал платный. В основном это вызвано тем, что асинхронное уведомление, отправленное каналом, неправильно принимается локально. Общая обработка состоит в том, чтобы изменить локальное состояние на платное и выполнить последующую обработку ответа, например уведомление деловой стороны.
- Локальный платеж был оплачен, и платежный канал был оплачен, но сумма отличается, что требует ручной проверки.
- Платеж был совершен локально, но в канале оплаты нет записи, или нет записи локально, но есть запись в канале оплаты. Помимо исключения факторов пересечения дней, такая ситуация возникает очень редко, и ее необходимо решать после понимания конкретных причин.