即使尝试强制使用3D-Secure

时间:2019-09-03 10:04:09

标签: php curl sagepay 3d-secure

我正在尝试设置3DSv2,目前处于测试环境中。

客户端URL(cURL)

$paymentUrl = 'https://test.sagepay.com/gateway/service/vspdirect-register.vsp';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $paymentUrl);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);

$curlResponse = curl_exec($ch);
$response = generateResponseArray($curlResponse);
var_dump($response);

function generateResponseArray($response)
{
    $output = [];

    $tempArray = explode(chr(10), $response);
    foreach ($tempArray as $row) {
        list($key, $value) = explode('=', $row, 2);
        $output[$key] = trim($value);
    }

    return $output;
}

我的$postData中包括以下项目:

Apply3DSecure=1 // Force 3DS Challenge
CardNumber=4929000005559 // VERes = N

回复

array(15) {
  ["VPSProtocol"]=>
  string(4) "4.00"
  ["Status"]=>
  string(2) "OK"
  ["StatusDetail"]=>
  string(40) "0000 : The Authorisation was Successful."
  ["VPSTxId"]=>
  string(38) "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"
  ["SecurityKey"]=>
  string(10) "XXXXXXXXXX"
  ["TxAuthNo"]=>
  string(7) "XXXXXXX"
  ["AVSCV2"]=>
  string(24) "SECURITY CODE MATCH ONLY"
  ["AddressResult"]=>
  string(10) "NOTMATCHED"
  ["PostCodeResult"]=>
  string(10) "NOTMATCHED"
  ["CV2Result"]=>
  string(7) "MATCHED"
  ["3DSecureStatus"]=>
  string(2) "OK"
  ["CAVV"]=>
  string(28) "TnVqajA3TjdxTjhrRGFIMWROTzI="
  ["DeclineCode"]=>
  string(2) "00"
  ["ExpiryDate"]=>
  string(4) "0225"
  ["BankAuthCode"]=>
  string(6) "999777"
}

此时我的身份是否应该恢复为3DAUTH?我需要继续构建我们的3D-Secure系统,但是此付款在这里不应具有OK状态。

我们在Sage Pay中设置了一条规则,要求付款超过500英镑时需要3D-Secure。这是一个。

这是我正在使用的文档:Direct Integration and Protocol 4 Guidelines

1 个答案:

答案 0 :(得分:2)

在Sagepay测试环境中,您需要发送有效的测试卡号(我使用4462 0000 000 0003),并且关键CardHolder设置为{{1} }。

如果您不执行此操作,则交易仍将通过3-D Secure进行,但交易将无摩擦(即用户不会看到任何iframe等)。对于无摩擦的交易,您仍然会承担责任转移。

还请注意,您可以使用CHALLENGE字段来测试其他方案。这是完整的列表:

  • CardHolder-模拟身份验证成功的无摩擦流程
  • SUCCESSFUL-模拟身份验证不成功的无摩擦流程
  • NOTAUTH-模拟质询流程,持卡人将被重定向到ACS以输入两因素身份验证。 CReq,VPSTxId,ACSURL和StatusDetail也将返回。 重定向到ACSURL后,在网站上输入正确的密码(文本= {CHALLENGE)将模拟成功的身份验证,输入其他任何密码将模拟不成功的身份验证。
  • challenge-模拟持卡人尝试对其进行身份验证,但过程未完成。返回一个CAVV,并将其视为已成功通过身份验证。
  • PROOFATTEMPT-模拟未在3D安全方案中注册的卡。
  • NOTENROLLED-模拟3D安全验证无法完成。没有身份验证。
  • TECHNICALDIFFICULTIES-模拟回退到3DSv1。您将收到一个PAReq,MD,ACSURL和StatusDetail
  • STATUS201DS-模拟错误情况,其中由于涉及检查的一方之一中的数据错误或服务不可用而无法执行3D身份验证。