Transcations, API и проектирование на отказ - PullRequest
0 голосов
/ 17 июля 2011

Я работал над приложением, которое должно регистрировать транзакции по кредитным картам, которое зависит от использования внешнего API.В моем приложении у меня есть концепция счета-фактуры с итоговой суммой и транзакция, которая при успешной оплате кредитной картой вычитается из этой общей суммы.

Это в большей степени независимый от платформы вопрос, но я работаю с Django, Python и MySQL.

Мой вопрос в основном касается использования транзакций при работе с внешними API-интерфейсами и разработки программного обеспечения для обработки потенциальных сбоев.Как Django, так и MySQL поддерживают транзакции, так что само по себе это не проблема, но предполагается следующий сценарий:

  • Кредитная карта отправлена ​​через API оплаты
  • Кредитная карта успешно обработана
  • Этот ответ затем регистрируется в базе данных как платеж по этому счету
  • При сохранении платежа в базу данных по той или иной причине произошла ошибка

ЧтоВы делаете это сейчас?

Если бы не было вызова API, ответ был бы ясен, откат транзакции базы данных и возникновение ошибки.Но вызов внешнего API усложняет ситуацию, потому что на самом деле это не способ отката внешнего вызова API.

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

1 Ответ

1 голос
/ 17 июля 2011

С этим сложно справиться в программном обеспечении. Однако, если ваш платежный шлюз вызывает обратный вызов, чтобы показать, что транзакция успешна, он, вероятно, зарегистрирует ошибку, если этот обратный вызов не завершится, и вы сможете настроить его так, чтобы он предупреждал вас в этом случае, возможно, по электронной почте. Тогда вам решать исправить ситуацию вручную.

...