Какая оптимальная структура БД платежной системы сайта?
Примерно я представляю как оно должно быть, но интересуют так скажем "лучшие практики", чтобы не изобретать велосипед. Как я себе это представляю, должна быть таблица orders, payments, payment_types, payment_statuses и возможно еще таблицы xxxxx_response для ответов соответствующих платежных систем. Схема работы: покупатель (зарегистрированный пользователь) выбирает товар и после выбора метода оплаты (payment_types) создается запись в orders с соответствующим статусом. Возможно будут использоваться вебхуки или крон-скрипты, но это детали. Интересует оптимальная схема такой структуры БД с полями и связями. Нагуглить не вышло.
Таблица xxxxx_response не нужна!
Скриптом от платежной системы сразу меняется СТАТУС заказа.
Таблица одна - ЗАКАЗЫ. Она связана с таблицей ТОВАРЫ, ПОКУПАТЕЛИ и пожалуй хватит для вас)))
Ну а если по сути:
Все лучшие практики по созданию магазина в одиночку заканчиваются получением паспорта и началом настоящей взрослой жизни с девками, блекджеком и коньяком.
hack504, эта таблица есть у платежного сервиса, очевидно же, что в ходе разбирательств ваша таблица ниочем будет)))
вы вообще в другую плоскость вот так вот легко перешли и думаете я за вами побегу?)))
А что делать, если клиент провел деньги, а предприниматель их не получил?
каким боком тут будет замешан скрипт вашего магазина?))))
alex-1917, я не автор вопроса. Ну вообще согласен, предприниматель в любом случае свое бабло не потеряет, а вот если зайти со стороны клиенты? Как ему быстро дать ответ - действительно крон-скрипты не отработали и не поменяли статус в табличке orders, или же клиент сам дурак и ничего не оплатил.
xxxxx_response вроде как и лишняя будет, но мало-ли что, как говорится
да ладно! А что делать, если клиент провел деньги, а предприниматель их не получил?
Если предприниматель получил информацию о платеже - он сменит статус в таблице заказов.
Если он не получил информацию - а что ему, собственно, хранить в отдельной таблице?
Если хочется хранить и анализировать запросы и ответы между серверами - то место для этого в логах, а не в БД. Потому что проблемы работы с БД могут как раз и быть одной из причин, почему что-то пошло не так.
camradee, чтобы дать ответ в случае, когда вся автоматика не отработала так, как надо, вам нужно будет самому лезть в админку сайта и личный кабинет платежной системы. Неизбежно.
Как правило, это будет либо человеческий фактор, либо не зависящие от вас обстоятельства. Например, мобильная коммерция рекламируется как мгновенная, а по факту сигнал о переводе может прийти от оператора только через час после того, как клиент подтвердил платеж.