Реализация DataCash 3DSecure в C#
Мне было поручено внедрить проверку кредитной карты 3D Secure на нашем существующем сайте. Мне просто интересно, есть ли у кого-нибудь пример кода для настройки 3D Secure?
Я был прямо через документацию, однако ничего не нашел.
2 ответа
Я написал статью об этом сейчас... http://www.alexjamesbrown.com/blog/development/implementing-datacash-3d-secure-with-asp-net/
Надеюсь, что это помогает людям, которые наткнуться на это из Google....
Я пытался заставить одного из парней, с которыми я работаю, что-то опубликовать здесь, поскольку он точно написал это для одного из наших клиентов, но я проведу вас через то, что, как я понимаю, должно быть.
Как правило, после того, как вы выполнили любые запросы предварительной проверки, которые вы выполняете (например, с помощью двоичных файлов DataCash), вы затем отправляете запрос на оплату в DataCash, используя агент DataCash для отправки запроса на оплату.
Если вы настроили 3D Secure в своей учетной записи DataCash и отправили через поля, чтобы сообщить, что эта транзакция может произойти с 3DS, вы, вероятно, получите код состояния, возвращенный 150:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<CardTxn>
<card_scheme>...</card_scheme>
<country>...</country>
<issuer>...</issuer>
<ThreeDSecure>
<acs_url>...</acs_url>
<pareq_message>...</pareq_message>
</ThreeDSecure>
</CardTxn>
<datacash_reference>...</datacash_reference>
<merchantreference>...</merchantreference>
<mode>TEST</mode>
<reason>3DS Payer Verification Required</reason>
<status>150</status>
<time>...</time>
</Response>
Вместе с блоком ThreeDSecure в элементе CardTxn.
Затем вам нужно взять acs_url и pareq_message и использовать их для отправки запроса в банк-эмитент карт для авторизации.
Обычно это происходит в форме самоподачи формы JavaScript, которую можно опубликовать в IFrame:
<!-- Action comes from acs_url returned by DataCash -->
<form method="post"
target="3dAuthFrame"
action="https://testserver.datacash.com/acs">
<!-- Value comes from pareq_message returned by DataCash -->
<input value="[...]"
name="PaReq"
type="hidden" />
<!-- Value is a merchant specified identifier that is dislayed to the user -->
<input value="[...]"
name="MD"
type="hidden" />
<!-- Value is a public URL that the 3D Secure server will post back to -->
<input type="hidden"
name="TermUrl"
value="[...]"/>
<p>
If you do not see your card issuer's instructions, below, please click
<input value="Continue" name="TDAction" type="submit" />
</p>
<iframe style="width:100%;height:400px"
src="javascript:''"
name="3dAuthFrame"></iframe>
<script type="text/javascript">
document.forms[0].elements.TDAction.click();
document.forms[0].elements.TDAction.disabled=true;</script>
</form>
Затем на странице TermUrl будет получен вызов от 3D-защищенных серверов с полями формы "PaRes" и "MD" (т. Е. Ответ от банка-эмитента и указанная вами ранее ссылка).
Затем вы отправляете эти данные авторизации обратно в DataCash в качестве исторической транзакции для завершения платежа.
Подробности об этом можно найти в разделе D.4. 3-D Secure, с DataCash MPI в Руководстве для разработчиков и на этой странице (может потребоваться вход в систему).
Если вам требуется более подробная информация, дайте мне знать, и я постараюсь получить более подробную информацию здесь.