标签: 3d-secure

如何安全地实施3d安全支付

我想知道接受需要3-D安全验证的信用卡付款的最佳方式是什么.目前结帐流程如下:

  1. 客户提交付款
  2. 支付网关返回一个错误,指出该卡需要3-D安全代码处理.返回响应中的ACS URL
  3. 我将用户重定向到发卡银行的验证网站,并在完成验证后传递ACS的回调网址以进行重定向
  4. 客户输入验证码,ACS使用授权令牌重定向到回调URL,表明验证成功
  5. 要完成此过程,我必须使用授权令牌将原始请求重新提交到支付网关

我的问题是最后一步.由于我需要重新提交原始请求(其中包含客户的信用卡信息),我需要暂时将其存储在某处,以便在调用回调URL时检索它.有替代方案吗?

我正在考虑尝试iframe解决方案:原始表单永远不会关闭,我会在iframe中显示验证过程.当进程完成时,即调用回调网址时,我隐藏iframe并使用所需的值更新原始表单并重新提交.以前有人尝试过这种技术吗?


security credit-card 3d-secure

14
推荐指数
1
解决办法
1万
查看次数

如何在Native移动应用程序(例如IOS)上实现3D Secure(Visa/MasterCard SecureCode验证)

此问题特定于本移动应用程序(例如,实际上不使用浏览器访问网站的IOS,Android,WP应用程序).

我们有一个现有的电子商务网站,需要支付大部分主要的信用卡,而且还通过执行付款人认证3DSecure程序(如实施Visa验证万事达卡安全).这有助于否定欺诈并减少退款.

现有方案是这样的,结算和付款阶段时,它涉及重定向客户从你的网站了,到银行/卡发行人网站上,客户可以输入他们先前建立的密码来验证他们确实是卡持有人.然后,该网站会将客户重定向回您的网站,并提供完成交易所需的信息.(还有更多内容,但这是它的基本前提).

因此,我们正在努力建立一个本地的IOS(最初),是不是只是用户浏览与Safari浏览器的网站,而是一个的ObjectiveC实现,给出了一个原生的经验,是为用户丰富和任务集中的用户界面和易于应用操作.

我们不能做的是从本机应用程序打开'n浏览器窗口,以便将用户重定向到某处,进行身份验证,然后重定向回来.原因是:

  • 这是一个原生应用程序,而不是一个网站,因此无处可去(URL)重定向回.
  • 用户体验很糟糕,从干净的用户界面切换到另一个网站上的风格和风格不同的网络表单,然后又回来了.

有没有人必须尝试使用Native应用程序(WP/IOS/Andriod)实现3D Secure(VbV/SecureCode )?可以吗?你采取了不同的方法吗?

谢谢阅读!

android native credit-card 3d-secure ios

11
推荐指数
2
解决办法
1万
查看次数

3D安全和网上银行网站是否使用x-frame-options标头?

我试图在IFrame中嵌入3D安全和网络银行页面,我能够成功地为我测试的一些网站实现它.但我怀疑所有银行页面是否会在IFrame中打开.

如果有任何银行将x-frame-otpions设置为SAMEORIGIN或DENY怎么办?

尝试搜索有关此的技术规格,但找不到任何东西.
是否有一个常见的拇指规则或约定(在任何规范中),验证银行应该/不应该使用此标头?如果这对所有银行都有效,我怎么相信?
任何澄清都会有很大帮助.

PS:我知道还有其他方法可以打开授权网关.但是,我仍需要明确这种方法.

iframe onlinebanking 3d-secure x-frame-options

10
推荐指数
1
解决办法
758
查看次数

从代码隐藏中更改IFrames InnerHtml

我试图在运行时从代码隐藏设置Iframe的HTML.

在我的aspx页面中,我有:

<asp:Button ID="btnChange" runat="server" Text="Change iframe content" 
onclick="btnChange_Click" />

<br />

<iframe id="myIframe" runat="server" />
Run Code Online (Sandbox Code Playgroud)

在后面的代码中:

protected void btnChange_Click(object sender, EventArgs e)
{
    myIframe.InnerHtml = "<h1>Contents Changed</h1>";
}
Run Code Online (Sandbox Code Playgroud)

当我运行它....它回发,但不会改变myIframe内容...我做错了什么?


我需要这样做,因为我实施3D安全到我的结账过程..基本上:

1)客户输入信用卡详细信息2)提交表单,如果需要3d安全,则检查支付网关.如果是,则为银行安全位置生成url以输入信息3)我创建对此URL的POST请求,其包含长安全令牌和一些其他信息.我抓住从这个POST请求返回的HTML,并需要在iFrame中显示它.

下面是文档说要做的事情:

<html>
<head>
<title>Please Authenticate</title>
</head>
<body onload="OnLoadEvent();">
<form name="downloadForm" action="https://mybank.com/vbyv/verify" method="POST">
<input type="hidden" name="PaReq" value="AAABBBBCCCCHHHHHH=">
<input type="hidden" name="TermUrl" value="https:// www. MyWidgits.Com/next.cgi">
<input type="hidden" name="MD" value="200304012012a">
</form>

<script language="Javascript"> <!-- function OnLoadEvent(){ document.downloadForm.target = "ACSframe"; document.downloadForm.submit(); } //--> </script>

<!-- MERCHANT TO FILL IN THEIR OWN BRANDING HERE …
Run Code Online (Sandbox Code Playgroud)

c# asp.net iframe 3d-secure

9
推荐指数
1
解决办法
3万
查看次数

具有3D安全性的Cyber​​source静默订单

我已经实现了cybersource silent order api.它正在测试环境中工作.但现在我还要添加3D安全.我没有得到任何帮助如何添加此功能.那里的文档仅提供简单的订单api的一些信息.

python 3d-secure cybersource

8
推荐指数
1
解决办法
309
查看次数

Android:3d安全重定向响应

我有一个Android应用程序,我在应用程序中处理付款.付款还需要3d-secure验证.因此,这需要将用户重定向到可以进行适当操作的网页:例如输入代码等.在我的情况下,该应用程序针对瑞典用户,并将其重定向到一个页面,他们必须bank ID在同一设备或另一个设备上打开另一个" "应用程序,以执行此验证.

在我们的iOS应用程序上,此功能按预期工作 一旦用户执行了验证,浏览器就会收到一个回调,然后可以用它来相应地更新应用程序,但是Android,WebView我正在使用的是不通知的.所以到目前为止,我无法处理用户验证事件.

有没有人有这个或任何类似的用例的经验?任何帮助表示赞赏.

payment android 3d-secure android-webview bankid

5
推荐指数
1
解决办法
2043
查看次数

在保存卡以备将来付款时使用Stripe 3D Secure

保存卡以备将来付款时是否可以使用3D Secure?

从Stripe的文档中,https://stripe.com/docs/sources/three-d-secure。这似乎是这样做的方法。

但是根据文档,不再建议使用而是使用PaymentIntents:

不再建议使用此API。如果您希望使用3D Secure,我们强烈建议您采用我们的新付款API PaymentIntents。

因此,有没有办法使用PaymentIntents(以利用3D安全)仅保存卡而无需立即付款?

3d-secure stripe-payments

5
推荐指数
2
解决办法
894
查看次数

3DSv2 Sagepay 直接集成基础知识

协议 4.00 的文档可能会更有帮助。对于每个努力让 3DSV2 工作的人来说,我希望任何已经设法让 3DSV2 工作的人能够详细阐述基础知识。

我将根据我的理解总结流程,请大家帮忙纠正必要的地方并添加任何问题,例如从 VPSTx_Id 中删除 {} 大括号。

  1. 向 SagePay 发出注册交易的请求,包括 ThreeDSNotificationURL,这是 ACS 在成功或失败时将重定向您的客户的 URL。
  2. 如果 SagePay 的响应是 3DAUTH,则构建一个表单以向客户显示,其中包含带有必需字段“acsUrl”、“creq”和“thirdDSSessionData”的 iFrame,这些字段是从 SagePay 响应中填写的。(协议 4 指南第 16 页)。笔记 *

    该文档说要使其成为自动提交表单,但最好告知客户为什么要向银行进行身份验证并让他们单击按钮继续。青年MMV

  3. 客户在 iFrame 中填写身份验证表单。
  4. 发卡银行向您的 ThreeDSNotificationURL 发送成功或失败的响应
  5. ThreeDSSessionData 或 (MD) 以及 CRes 或 (PARes) 在此响应中发送回,具体取决于响应的 3DSv2 或 (3DSv1)。
  6. 然后,您的 ThreeDSNotificationURL 代码必须再次发布到 SagePay 回调页面 VPSTxId 和 Cres 或 MD 和 PARes,具体取决于 3DSv2 或 3DSv1
  7. 如果 3DS 身份验证成功,SagePay 将请求卡授权。
  8. 如果授权获得批准,SagePay 随后会使用 VPSTxId 和 10 位安全密钥进行响应。
  9. 显示完成页面并告知客户交易成功或不成功。
  10. 需要一些澄清,“在后备方案中,Sage Pay MPI 将执行 3DSv1 …

3d-secure opayo

5
推荐指数
1
解决办法
3791
查看次数

一些发卡银行拒绝3D安全请求

我们有一个商业网站,我们正试图通过设置3D Secure(由VISA/Mastercard Securecode验证).

我们使用DataCash作为我们的支付提供商.

我们看到以下问题:

一些注册在这些方案中的卡正在成功地显示在3D安全页面上,其他卡正在失败,并且与发卡银行交谈没有帮助,因为他们告诉我们他们没有看到交易.

我们从"cap.securecode.com"等服务器收到消息,说明:

由于系统错误,无法完成您的身份验证.如果这种情况持续发生,请联系您的CSR".

或者来自"www.securesuite.co.uk":

您无法访问此页面.

这可能是由于以下两个原因之一:

  1. 您尝试访问的FI已停用
  2. 对特定IP地址的访问权限受到限制,您的地址不是其中之一

有没有其他人看到验证银行返回这些错误,我该如何解决?

我试图获得有关成功和失败的任何模式的进一步细节.

asp.net credit-card payment-gateway 3d-secure

4
推荐指数
1
解决办法
2万
查看次数

在 Python 中解码 3D-Secure PaRes

我找不到解码从 3D-Secure ACS 服务回发的信息 (PaRes) 的方法。

有人知道如何解压缩/解码这个字符串吗?

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
Run Code Online (Sandbox Code Playgroud)

我在某处读到它可以是 base64 编码的 - 但我不知道如何使用 python 解码它。它最终也会被压缩吗?

欢迎任何输入!

python decode 3d-secure

4
推荐指数
1
解决办法
2982
查看次数

Paymill:至少有一家银行的3D-Secure漏洞?

我使用3D安全支付Paymill API:

paymill.createToken(params, paymillResponseHandler, tdsInit, tdsCleanup);
Run Code Online (Sandbox Code Playgroud)

文档中的这部分完全不起作用:

var tdsInit = function(iframeUrl, cancelFn) {
  var body   = document.body || document.getElementsByTagName('body')[0];
  var iframe = document.createElement('iframe');

  iframe.id               = 'tdsIframe';
  iframe.src              = iframeUrl;
  iframe.width            = 600;
  iframe.height           = 500;
  iframe.style.zIndex     = 0xffffffff;
  iframe.style.background = '#fff';
  iframe.style.position   = 'absolute';

  body.insertBefore(iframe, body.firstChild);
};
Run Code Online (Sandbox Code Playgroud)

所以我这样做:

function tdsInit(iframeUrl, cancelFn) {
    var body   = document.body;
    var div3D  = document.createElement("div");
    div3D.id = "div3Dsecure";
    body.insertBefore(div3D, body.firstChild);
    var pareq = decodeURIComponent(iframeUrl.params.PaReq.replace(/\+/g,  " "));
    var termurl = decodeURIComponent(iframeUrl.params.TermUrl.replace(/\+/g,  " "));
    div3D.innerHTML='.$dot.'<form id="3Dsecureform" action="'.$dot.'+iframeUrl.url+'.$dot.'" …
Run Code Online (Sandbox Code Playgroud)

3d-secure paymill

2
推荐指数
1
解决办法
910
查看次数

Stripe Subscriptions - 对 3D 安全卡号进行充电返回 subscription_payment_intent_requires_action

我们正在将 3D 安全结账与我们当前的订阅计费解决方案集成在一起。我们提供带 7 天免费试用的月度计划。对于集成,我们使用 SetupIntent 来确定客户的卡信息是否需要 3D 安全授权。使用要求 3D 安全的 Stripe 测试卡,我们handleCardSetup()在结帐页面上调用javascript 中的函数。然后在授权成功后,将客户的付款方式附加给客户。然后继续结帐,我们创建订阅。我们扩展latest_invoice.payment_intent了订阅。

根据 Stripe 的文档:

"SetupIntents 是为不需要初始付款的订阅自动创建的。如果需要身份验证和授权,它们也会被执行。如果两者都成功,或者不需要它们,则不需要任何操作,并且订阅.pending_setup_intent 字段为空。”

当我查看来自调用的响应时Subscription.create(params),我看到该pending_setup_intent字段等于null. 但是,在 Stripe 的仪表板上查看订阅时,我发现尝试对卡收费时返回402错误并显示以下响应:

{
  "error": {
    "code": "subscription_payment_intent_requires_action",
    "message": "Payment for this subscription requires additional user action before it can be completed successfully. Please refer to the use of the `enable_incomplete_payments` parameter here: https://stripe.com/docs/billing/lifecycle#incomplete-opt-in",
    "type": "card_error"
  }
}
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?我在某处错过了一步吗?我们目前正在使用最新版本的 Stripe API:2019-05-16. 我附上了我们用于创建SetupIntent、将 附加 …

javascript java 3d-secure stripe-payments

2
推荐指数
1
解决办法
1292
查看次数

如何在 ASP.NET MVC 中将条带支付与自定义表单集成?

如何使用自定义条纹形式,然后使用 ASP.NET MVC 与 3D 安全选项集成?

c# asp.net-mvc 3d-secure stripe-payments

0
推荐指数
1
解决办法
1017
查看次数