Давайте посмотрим на требование немного по-другому. В настоящее время это выглядит так:
Как владелец продукта для веб-сайта X, я хочу, чтобы система временно сохраняла информацию о клиентах, чтобы я мог восстановить продажу, которая была отклонена компанией CC
ППЛ склонны так думать и запрашивать функции таким образом. Теперь я думаю, что ваше требование более удобно описать следующим образом:
Как пользователь, я хочу, чтобы веб-сайт X мог повторить платеж за мою покупку, поэтому у меня нет проблем с повторной проверкой, потому что это настоящая боль в ...
Так что нет явного требования для хранения чего-либо (на вашей стороне), не так ли? Это только подразумевается
Платежные системы могут предоставлять программные API для вашего торгового счета и возможность повторной авторизации при отклоненной попытке. я думаю, что @bashmohandes ускользнул от этого раньше
Не все платежные системы могут сделать это, однако я думаю, что это зависит от их отношений с вовлеченными банками. Это то, что вы хотите избежать, т.е. иметь тесные отношения с банками.
Сценарий 1: Предполагая, что все, что я сказал, верно
Вам не нужно хранить ничего, кроме ссылки на попытку авторизации. Некоторые провайдеры платежей даже предоставляют вам прекрасный инструмент для бэк-офиса, так что вам не нужно создавать свои собственные, чтобы выполнять повторные авторизации. Я думаю, что Paygate делает это
Ваша лучшая ставка, на мой взгляд, это опрос ряда поставщиков платежей. они должны знать это как свои пять пальцев. Это потенциально решение с нулевым кодом
Сценарий 2: Предполагая, что я совершенно не прав, но с юридической точки зрения, это хранилище СС - это нормально
Таким образом, вы должны временно хранить эти данные где-то. Я советую:
- использовать двусторонний метод шифрования (естественно), который не зависит от поставщика, поэтому вы можете использовать любой язык / платформу для шифрования / дешифрования
- отделить службу шифрования / дешифрования от вашего приложения и рассматривать ее как черный ящик
- использовать открытый / закрытый ключи для аутентификации в этой службе
- поместить этот компьютер в частную сеть со своими повышенными правилами брандмауэра (не обязательно аппаратный брандмауэр, но аппаратное обеспечение лучше)
- ваши серверы приложений могут обмениваться данными с этим компьютером по протоколу ssl (вы можете получить самоподписанный сертификат, поскольку он находится в вашей локальной сети)
Все, что я предложил в сценарии 2, - это препятствия, но в конечном итоге настойчивость побеждает в гонке за получением ваших данных. Единственный способ обеспечить абсолютную защиту данных - это отключить сервер от эфира, но этот вариант немного радикальный: -)
Сценарий 1 был бы хорош. Не так ли?