3DSv2 始终 returns Status=OK 即使尝试强制 3D-Secure
3DSv2 always returns Status=OK even when attempting to force 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 安全处理。这个是。
这是我正在使用的文档:Direct Integration and Protocol 4 Guidelines
在Sagepay测试环境下,需要通过有效的测试卡号发送(我用的是4462 0000 000 0003
),关键 CardHolder
设置至 CHALLENGE
.
如果您不这样做,交易仍将通过 3-D 安全,但它将无摩擦(即用户不会看到任何 iframe 等ETC)。对于无摩擦交易,您仍然会获得责任转移。
另请注意,您可以使用 CardHolder
字段来测试其他场景。这是完整列表:
SUCCESSFUL
- 模拟身份验证成功的无摩擦流程
NOTAUTH
- 模拟身份验证不成功的无摩擦流程
CHALLENGE
- 模拟挑战流程,持卡人将被重定向到 ACS 以输入双因素身份验证。还将返回 CReq、VPSTxId、ACSURL 和 StatusDetail。
一旦您重定向到 ACSURL,在站点上输入正确的密码 (Text = challenge
) 将模拟成功的身份验证,输入任何其他密码将模拟不成功的身份验证。
PROOFATTEMPT
- 模拟持卡人尝试对自己进行身份验证,但过程未完成。返回 CAVV,这被视为已成功通过身份验证。
NOTENROLLED
- 模拟未注册 3D 安全方案的卡。
TECHNICALDIFFICULTIES
- 模拟 3D 安全验证无法完成。没有发生身份验证。
STATUS201DS
- 模拟回退到 3DSv1。您将收到 PAReq、MD、ACSURL 和 StatusDetail
ERROR
- 模拟由于数据错误或服务不可用而无法执行 3D 身份验证的错误情况。
我正在尝试设置 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 安全处理。这个是。
这是我正在使用的文档:Direct Integration and Protocol 4 Guidelines
在Sagepay测试环境下,需要通过有效的测试卡号发送(我用的是4462 0000 000 0003
),关键 CardHolder
设置至 CHALLENGE
.
如果您不这样做,交易仍将通过 3-D 安全,但它将无摩擦(即用户不会看到任何 iframe 等ETC)。对于无摩擦交易,您仍然会获得责任转移。
另请注意,您可以使用 CardHolder
字段来测试其他场景。这是完整列表:
SUCCESSFUL
- 模拟身份验证成功的无摩擦流程NOTAUTH
- 模拟身份验证不成功的无摩擦流程CHALLENGE
- 模拟挑战流程,持卡人将被重定向到 ACS 以输入双因素身份验证。还将返回 CReq、VPSTxId、ACSURL 和 StatusDetail。 一旦您重定向到 ACSURL,在站点上输入正确的密码 (Text =challenge
) 将模拟成功的身份验证,输入任何其他密码将模拟不成功的身份验证。PROOFATTEMPT
- 模拟持卡人尝试对自己进行身份验证,但过程未完成。返回 CAVV,这被视为已成功通过身份验证。NOTENROLLED
- 模拟未注册 3D 安全方案的卡。TECHNICALDIFFICULTIES
- 模拟 3D 安全验证无法完成。没有发生身份验证。STATUS201DS
- 模拟回退到 3DSv1。您将收到 PAReq、MD、ACSURL 和 StatusDetailERROR
- 模拟由于数据错误或服务不可用而无法执行 3D 身份验证的错误情况。