2011-05-12 2 views
1

Каков наилучший способ обработки платежных транзакций в базе данных?оплата транзакций и таблица заказов?

Вот что я придумал:

заказов Таблица

  • КодЗаказа (первичный ключ) **
  • MemberID (FK)
  • OrderTotal
  • Статус (В ожидании , Обработка Завершено)
  • Оплачено (0, 1)

Платежи Таблица

  • PaymentID (первичный ключ)
  • OrderID (относящиеся к таблице Orders)
  • Дата
  • Transaction Статус

Например, если есть две платежные операции от OrderID-123 в таблице Платежи.

Один Отклонить и другой является Sucesss

Если есть ряд Sucesss, то Orders.Paid станет 1

Или, что лучше подходит?

+0

Не забудьте связать PaymentID с его соответствующим идентификатором заказа –

ответ

4

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

Не говоря уже о множестве других случаев, присущих подпискам, например. обновления подписки и понижения, изменения подписки, отмены, отмены отмены, блокировки, а что нет.

Излишне говорить, что проблемы становятся даже thornier, если вы когда-либо придется иметь дело с присоединенными платежей, пользователей меньше счетов-фактур, различные фактуры/доставки контактов, посредников и т.д.

Точный ответ зависит от ваших конкретных требований, очевидно, но я обнаружил, что вы почти всегда лучше начинаете с модели, которая удовлетворяет суровым требованиям бухгалтерского учета T-book (например, дебет/кредит с помощью плана счетов), а затем работает над вашими конкретными продуктами ,

+0

+1 для Denis - особенно в отношении понятия T-book. Записи, связанные с платежами и даже изменениями статуса, должны быть записаны один раз и никогда не обновляться. Это дает вам аудиторский след всех переходов. Другая морщина, которую вам, возможно, потребуется рассмотреть, - это приложение для оплаты, то есть один платеж охватывает (несколько) несколько заказов.Это определенно важно, если у вас есть оплата за заявления (в отличие от счетов-фактур). –

Смежные вопросы