Authorize.net 允许您通过 Web 界面配置卡代码验证设置,如下所示:
Select the conditions for which the Payment Gateway should reject a transaction when
the Card Code submitted does not match the value on file with the customer's credit
card company.
Reject Transaction If Card Code value...
_ Does NOT Match (N)
_ Is NOT Processed (P)
_ Should be on card, but is not indicated (S)
_ Issuer is not certified or has not provided encryption key (U)
卡代码验证(如地址验证)只有在提交卡代码时才会真正发生。启用卡代码验证过滤器不会影响在没有卡代码的情况下提交的交易。
还有一个名为“付款表格 - 字段”的单独页面,您可以在其中指定付款表格上可以查看、编辑和必填的字段。如果您在此表格上勾选需要 CVV2,则每次使用 AIM/CIM 时都需要指定 CVV2。请注意,如果需要,在代码中实现此要求似乎更明智,而不是选中 Authorize.net 上的框,然后尝试调试错误。
如果您将 CVV2 按非要求保留在“付款表单 - 字段”上,如果您保存了付款资料,则可以在保存的 PaymentID 上提交新的交易请求,而无需任何 CVV2 和它不会被拒绝。
现在,我相信您已经看到一些网站会向用户显示保存的卡(当然是屏蔽的),并要求他们再次输入 CVV2 - 只需输入 CVV2,无需重新输入卡号.
如果您想在 Authorize.NET CIM 中的现有支付配置文件上实际仅重新验证 CVV2,则不能使用 updateCustomerPaymentProfileRequest,因为它需要卡号。
您所做的是在 TransactionRequest 中有一个 profileTransAuthCaptureType 对象,该对象接受 ProfileID 和 PaymentID。它还有一个 cardCode 字段,您可以在其中放置 CVV2!这使您无需再次询问整个卡号/到期日期即可重新验证 CVV2。在这种情况下,即使选中了“未处理”,并且在“付款表 - 字段”上将 CVV2 标记为必填项,您也不会被拒绝。
疯狂是有方法的,但它肯定很复杂,因为你可以控制所有设置,并且它们需要在多个地方同步才能按照你的意愿工作。