我的任务是在我们现有的网站上实施3D安全信用卡验证。
我只是想知道是否有人可以使用示例代码来设置3D Secure?
我看过文档没错,但是什么也没找到。
最佳答案
我试图让一个与我合作的人在这里发布一些东西,因为他是为我们的一位客户精心编写的,但是我将带您了解我所理解的过程。
基本上,一旦执行了要执行的任何预验证请求(例如,使用DataCash二进制文件),就可以使用DataCash代理将付款请求提交给DataCash以发送付款请求。
如果您在DataCash帐户上设置了3D Secure,并且已通过字段发送消息说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>
以及CardTxn元素中的ThreeDSecure块。
然后,您需要使用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,并在this page上(可能需要登录)。
如果您需要更多详细信息,请告诉我,我将尝试在此处获取更多详细信息。