Я участвовал в обзоре соответствия PCI около 4 лет назад, и тогда политика заключалась в том, чтобы просто вернуть принятый или отклоненный и идентификатор транзакции пользователю. Если транзакция была отклонена, мы добавили примечание «Для получения дополнительной информации свяжитесь с поставщиком кредитной карты и укажите этот номер ...».
Причина заключается в том, что если кто-то пытается сгенерировать номера карт, вы не хотите предоставлять им какую-либо информацию о том, что нужно изменить, чтобы получить действительную карту. Если это реальный человек, существует слишком много вещей, которые могут не сработать с транзакцией, которую вы не можете исправить, просто скажите им, чтобы они связались с провайдером своей карты. Даже если ответом на транзакцию является «Срок действия карты истек», это может быть что-то другое, вы не знаете, поэтому не догадайтесь.
Также, если вы вернетесь на страницу с полями оплаты, не заполняйте их, оставьте их пустыми. Клиенты могут стать параноиками, думая: «Эй, эта штука запоминает информацию о моей кредитной карте !?» Наиболее вероятная причина, по которой карта была отклонена, заключается в том, что они ввели что-то неправильно, и, предварительно заполнив ее неверной информацией, вы просто заставляете их нажимать кнопку Отправить снова и снова, пока их кредитный лимит не будет превышен. Был там, сделал это.