Как безопасно обрабатывать онлайн-платежи с помощью веб-сервисов? - PullRequest
1 голос
/ 14 июня 2011

Отказ от ответственности : у меня есть только очень общее представление о том, как работают веб-сервисы, и я не очень разбираюсь в продвинутых темах WS, таких транзакциях и т. Д.интернет-магазин с использованием Java EE, JPA и т. д. Также давайте представим, что у меня есть контракт с провайдером обработки онлайн-платежей для обработки платежей, и он предоставил мне WS API.

Теперь давайте представим, что клиентразместил заказ.В сессионном компоненте (например, внутри OrderSB.placeOrder) я открыл транзакцию, сохранил ордер в БД, и теперь я звоню в WS API провайдера платежей.Он успешно возвращается (и я предполагаю, что к настоящему моменту счет моего клиента был списан), но прежде чем я смогу сохранить соответствующий Платеж Заказа (существует взаимно-однозначная связь между Заказом и Платежом), возникает исключение, и моя транзакция откатывается.

Как можно гарантировать, что при возникновении такого исключения учетная запись моего клиента не будет списана?Или, другими словами, либо оба из вызова WS и OrderSB.placeOrder должны успешно завершиться и зафиксировать, либо оба они должны быть откатаны вместе.

Откат placeOrder легко выполнить в случае сбоя вызова WS, ноЯ не знаю, как я могу откатить вызов WS после его возврата.

1 Ответ

0 голосов
/ 14 июня 2011

Почему бы вам не завершить поток placeOrder и не выполнить вызов WS, только если первый завершился успешно?Тогда, как вы говорите, PlaceOrder легко откатить, если ошибки появляются во втором, просто откатите первый.Или я не правильно понял ваш вопрос?

...