NuDetect 风险提供商
NuDetect 是一家支持一系列风险评估的风险服务提供商。 American Express Payment Gateway 通过 NuDetect 支持以下风险评估:
- 卡测试(也称为“卡循环筛选”或“BIN 攻击筛选”)使用交易详细信息(包括卡详细信息、账单地址、送货地址等)对交易进行风险评估。
- 可信结账(也称为“行为数据筛选”、“指纹筛选”或“设备筛选”)使用付款人交互详细信息(例如,击键、鼠标点击)、设备详细信息(例如,设备 ID、IP 地址)或位置信息 (例如,付款人的地理位置)对交易进行风险评估。
根据风险评估,NuDetect 提供接受或拒绝交易的建议。 如果建议拒绝,网关将阻止交易。 应用了风险规则的风险评估详细信息(包括风险分数)及其结果将在交易响应中返回。
从 Web-Services API v56 开始支持 NuDetect。
将 NuDetect 添加到您的集成中
添加 NuDetect 的集成步骤取决于您的网关集成模型。
先决条件
要通过网关使用 NuDetect:
- Your payment service provider 必须在您的商家配置文件上启用 NuDetect 风险服务提供商,并且 NuDetect 风险预测必须设置为“卡测试”、“可信结账”或“卡测试 + 可信结账”。
- 如果要执行“卡测试”评估,您必须将网关上的 NuDetect 风险预测设置为“卡测试”或“卡测试 + 可信结账”。
- 如果要执行“可信结账”评估,您必须将网关上的 NuDetect 风险预测设置为“可信结账”或“卡测试 + 可信结账”。
如果您是使用自己的付款页面来收集付款人详细信息,在这种情况下,如果想要执行“可信结账”评估,您必须集成到风险 JS API,以允许您的付款页面收集指纹数据。
通过 Hosted Checkout 使用 NuDetect
如果您有 Hosted Checkout 版本 56+ 集成,通过 Hosted Checkout 发起的交易将自动发送到 NuDetect 进行风险评分。 评估类型将取决于您的 NuDetect 风险预测配置:“卡测试”或“可信结账”,或二者兼有。
使用“可信结账”,如果 Hosted Checkout 无法收集指纹数据,交易则不会被发送到 NuDetect 进行风险评分。
通过 Web-Services API 使用 NuDetect
当您在自己的付款页面上收集付款详细信息并使用 Verify、Authorize、Pay 或 Standalone Capture 交易将信息提交到网关时,“卡测试”和“可信结账”风险评估的实现会有所不同。
卡测试
如果您想要执行“卡测试”并针对“卡测试”或“卡测试 + 可信结账”NuDetect 风险预测进行了配置,网关将通过 NuDetect 为您处理风险评估。
- 提交到网关的 Verify、Authorize、Pay 和 Standalone Capture 交易将发送到 NuDetect 执行“卡测试”风险评估。
- 如果您配置了交易筛选规则,将使用交易筛选对交易进行预筛选。
可信结账
如果您想要执行“可信结账”并针对“可信结账”或“卡测试 + 可信结账”NuDetect 风险预测进行了配置,您必须集成到风险 JS API 以允许您的付款页收集指纹数据。 如果付款页无法收集指纹数据,交易则不会被发送到 NuDetect 进行风险评分。
要检查是否启用了“可信结账”,请向网关提交
Payment Options Inquiry
请求。 如果启用了“可信结账”(带或不带“卡测试”),
Payment Options Inquiry
响应将返回
risk.fingerprintprovider
=
NUDETECT
风险 JS 集成
此部分介绍如何在 NuDetect 集成中使用风险 JS API。
步骤 1: 创建会话
执行 Create Session 操作来获取会话 ID。 创建会话后,可以使用希望存储在会话中的请求字段和值更新会话。
Create Session API 参考[REST][NVP]
步骤 2: 初始化 API
在您的付款页上,引用来自网关服务器的风险 JS API (risk.js
)。 这会将 risk
对象放入窗口/全局名称空间。
https://gateway-na.americanexpress.com/static/risk-core/1.0.0/risk.min.js
risk.js 参考[JavaScript]
插入表单隐藏的输入元素
请注意,使用 Risk.configure( )
方法完成配置后,风险 JS SDK 将在付款页的 <form> 元素内创建以下隐藏的输入元素,通常是卡详细信息的包装。 当付款人开始与付款页交互时(例如,击键、移动或点击鼠标等),风险 JS SDK 会在隐藏的输入元素内生成指纹数据。
<input name="nds-pmd" type="hidden">
如果您的付款页没有 <form> 元素,您必须在执行 Risk.configure( )
方法之前手动插入隐藏的输入元素,例如,<input name="nds-pmd" type="hidden">。
风险 JS 初始化请求
创建会话后,使用 Risk.configure( )
方法初始化 API。 此方法应该在页面加载过程中或 DOM 处于就绪状态时调用。 对于页面加载应该只调用一次。 调用此方法后,风险 JS 将提供配置值作为成员变量。
提供以下强制字段作为 riskConfig
对象的参数:
merchantId
: 您在网关上的商家识别码。
sessionId
: 您使用 Create Session 调用创建的会话 ID。
apiVersion
: (可选)请求的 Web-Services API 版本。 如果您未提供值,apiVersion
将默认为 56。
riskProvider
: (可选)网关上风险服务提供商的标识符。 目前,仅通过风险 JS API 支持 NUDETECT 风险服务提供商。 如果您未提供风险服务提供商,风险 JS API 将发起 Payment Options Inquiry
请求来确定支持的风险提供商。
回调函数
您可以在 Risk.configure()
方法中提供可选的 callback
函数,此函数将与 response
对象一起在方法完成后作为参数调用。 response
对象将包含 message
和 status
属性来指示配置是成功还是由于错误失败。
如果配置成功:
{ status: "SUCCESS", message: "Risk SDK is configured successfully."}
如果配置失败:
{ status: "ERROR", message: "Error message"}
初始化 API 配置示例
Risk.configure({
merchantId: "TESTMERCHANT",
sessionId: "SESSION0002899787259G30902270H6",
apiVersion: 56,
riskProvider: "NUDETECT"
},
function(response) {
// Handle Risk.configure() response */
console.log(response.message)
// Configuration message: 'Risk SDK is configured successfully.'
console.log(response.status)
// Configuration status: 'SUCCESS' or 'ERROR'
}
);
步骤 3: 将指纹数据收集到会话
您可以使用 Update Session 调用在步骤 1 中创建的会话中添加或更新字段。 它允许您将付款和付款人数据添加到会话中,数据随后可以成为 Verify、Authorize 或 Pay 操作的输入来确定与付款人关联的风险。 当付款人单击“立即支付”按钮时,执行 Update Session。
强制字段
- device.fingerprint: 提供步骤 2 中所述的隐藏的输入元素的值。隐藏的输入元素包含由风险 JS SDK 捕获的付款人指纹数据。
- sourceOfFunds.provided.card.*: 用于付款的卡的详细信息。
order.amount
- order.currency: 订单货币。
- transaction.id: 此支付身份验证的唯一识别码。
- order.id: 此订单的唯一识别码。
请注意,您无法从会话中删除字段,只能覆盖现有字段的值。
Update Session API 参考[REST][NVP]
步骤 4: 提交付款交易
如果 Update Session 成功,返回的会话将包含来自交互的付款人付款详细信息。 使用返回的会话呈现订单确认页或将付款提交到网关。 请参见使用会话执行操作。