Ошибка обработки веб-службы - PullRequest
1 голос
/ 18 ноября 2010

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

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

- редактировать - Например : Банк А - другой, Банк Б - я. Человек отправляется в банк А, чтобы внести чек в банке Б, поэтому он использует мою веб-службу для выполнения транзакции, а я осуществляю снятие средств и возвращаю сообщение ОК, но затем, прежде чем банку А удастся добавить деньги на счет, что-то терпит неудачу. Так что теперь я снял деньги, но у человека на самом деле нет денег, потому что Банк А провалил транзакцию.

Ответы [ 2 ]

1 голос
/ 18 ноября 2010

Проблема в том, что вы доверяете клиенту вынуть деньги из одного банка и положить их в другой. В самом деле? Здорово! Я собираюсь сделать несколько вызовов API, утверждая, что я тогда только что получил много денег. Mwuahahahaha!

Серьезно, то, что должно произойти, это то, что клиент берет чек и представляет его банку А (один вызов API). Банк А затем представляет чек Банку Б и получает средства. (Еще один вызов API). Тогда, возможно, клиент может связаться с банком А, чтобы проверить, увеличился ли их счет. Клиент ни в коем случае не должен связываться с Банком Б. Тогда клиент делает только один вызов API, и он не может сломать систему, как в вашем примере.

1 голос
/ 18 ноября 2010

Если я понимаю, вы хотите использовать веб-сервисы, чтобы предоставить клиенту возможность снять деньги с вашего «банка».

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

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

...