Я решил вернуться к этому вопросу, чтобы объяснить, как был достигнут конечный результат. Надеемся, что некоторые пользователи SO найдут это полезным.
Чтобы получить правильный «поток», вам понадобятся две страницы. Вы не сможете реально выполнить всю транзакцию на одной странице. На первой странице будут указаны данные карты; номер карты, срок действия, CVN, адрес для выставления счета и т. д. При выборе метода оплаты / отправки я бы порекомендовал сохранить транзакцию в источник данных как «необработанный» или что-то подобное. Как только все ваши данные сохранены - пока не выполняется обработка карты - перенаправьте с помощью HTTPS на вторую страницу.
Ваш клиент может никогда не узнать, существует ли эта страница, в зависимости от того, как вы ее настроили. Вторая страница будет содержать код .netCharge в качестве моего вопроса и обрабатывать карту. Когда 3D-защита включена (.Apply3DSecure = 1), клиент будет перенаправлен в свой банк, чтобы ввести дополнительные сведения, и он вернется на эту вторую страницу. Он не ведет себя как обратный вызов или обновление, поэтому не беспокойтесь о повторном вызове обработки страницы дважды. Вы получите 1 из 3 возможных статусов; Авторизован, Ошибка и Отклонен. Ваша страница может перенаправить на другие необходимые страницы (поэтому клиенты никогда не знают, что эта средняя страница существует) или отобразить результаты непосредственно на этой странице обработки.
Есть одна заключительная «ошибка», которую вы увидите очень быстро. Вторая страница (страница обработки) нуждается в деталях карты для фактической обработки. Вы не можете просто передать данные карты в форме или даже строке запроса, это безответственно. .netCharge поставляется с функциями .Encrypt и .Decrypt; просто передайте ему значение для шифрования и какой-то хэш и временно сохраните эти данные на первой странице, прочитайте и расшифруйте на второй странице, а затем удалите их. Это означает, что данные надежны, в большинстве случаев они сохраняются менее 5 секунд, и вы не подвергаетесь воздействию, поскольку они уничтожены.
Надеюсь, это поможет - если у кого-то возникнут вопросы, просто крикните мне.