风控插件
# 3D Secure 认证集成-riskJS 组件
# 引入 riskJs 组件
<script src="https://cdn.pyvio.com/plugins/risk-control-v1.js"></script>
# 初始化
# 构造方法
window.PyvioRiskPlugin(options);
属性 | 类型 | 必填(Y/N) | 描述 |
---|---|---|---|
options.env | String(12) | Y | 沙箱-sandbox 生产-prod |
options.websiteId | String(64) | Y | Pyvio 店铺号 |
options.merchantUserId | String(64) | N | 商户网站唯一标识 |
options.riskRequestId | String(64) | N | 订单关联唯一标识 |
options.requestSource | String(64) | N | 默认S2S |
# 调用示例
//初始化参数
let options = {
env: env, // 沙箱-sandbox 生产-prod
websiteId: websiteId,
merchantUserId: merchantUserId,
riskRequestId: riskRequestId,
requestSource:'CASHIER'
};
const myRiskPlugin = new window.PyvioRiskPlugin(options);
riskJs 组件初始化部分已经完成
# 收集卡信息进行 3D Init
- 为了收集完整正确的卡号,该方法可在 卡号 和 卡有效期 input 失焦后进行触发。
- 初始化完成之后,插件将 jsGeneratedData 注入回调函数-callback。
- callback 是个异步方法,如当前交易需要 3DS 验证,则需要等 callback 方法将 jsGeneratedData 返回来才能进行验证。
# 调用方法
myRiskPlugin.pyvioRiskInit(options, callback);
cardInfo 和 cardToken,二者必须传送其中一项。
cardInfo
属性 | 类型 | 必填(Y/N) | 描述 |
---|---|---|---|
options.cardNumber | String(32) | N | 国际信用卡卡号 |
options.cardExpireYear | String(32) | N | 有效期-年,4 位数字 |
options.cardExpireMonth | String(32) | N | 有效期-月,2 位数字 |
cardToken
属性 | 类型 | 必填(Y/N) | 描述 |
---|---|---|---|
options.cardToken | String(32) | N | 可以用来替代 cardInfo |
callback
属性 | 类型 | 必填(Y/N) | 描述 |
---|---|---|---|
callback | Function | N | 回调函数,可以取到 jsGeneratedData |
# 调用示例
/**
* initOptions传参可以用下面2种方式传值
*/
let initOptions = {
cardNumber: cardNumber,
cardExpireMonth: cardExpireMonth,
cardExpireYear: cardExpireYear,
};
let initOptions = {
cardToken: cardToken,
};
myRiskPlugin.pyvioRiskInit(initOptions, callback);
function callback(jsGeneratedData) {
// 自动注入jsGeneratedData
console.log(jsGeneratedData);
}
# jsGeneratedData 格式
属性 | 类型 | 描述 |
---|---|---|
channel_fingerprint_info | Array | 指纹信息 |
platform | String(32) | 设备类型 |
channel_fingerprint_info 属性
属性 | 类型 | 描述 |
---|---|---|
channel_name | String(32) | 渠道名称 |
fingerprint_id | String(32) | 指纹 |
支付时需要把回调回来的 jsGeneratedData 数据作为
risk_info
传给创建订单接口。
# 3DS 验证处理
# 如何处理
- 商户在调用接口-统一下单之后,根据响应的交易状态与
acs_url
处理标识判断是否需要 3DS 验证处理。 - 如果支付状态
status
为PENDING
并且acs_url
有值,商户前端需要执行风控 JS 提供的pyvioRiskValid
函数。 - 将接口返回的
threeDUnionParams
作为入参调用pyvioRiskValid
函数,风控 JS 会引导浏览器到 3D 挑战页,持卡人需要正确的完成 3D 验证,才能成功交易。
调用方法
myRiskPlugin.pyvioRiskValid(threeDUnionParams, callback);
属性 | 必填(Y/N) | 描述 |
---|---|---|
threeDUnionParams | Y | 调用创建订单接口后返回的数据 |
callback | N | 商户可在此处理正常支付流程。若该笔交易进入 3D 流程,则该回调不会执行,否则执行该回调函数,处理正常支付逻辑 |