风控插件集成指南
# 风控插件集成指南
# 接入说明
风控插件是推荐的3d集成方案,扩展原有Form表单3D方案,同时支持更多交易通道的3d交易。
# 兼容说明
# 设备指纹采集
使用风控插件后,原有的在商户端在 S2S 支付时进行的设备指纹采集与上传操作可以去 除,PingPong 风控插件会自动进行设备指纹采集处理
# 3DS 验证处理
使用风控插件后,原有商户根据 S2S 支付响应结果的 acsUrl
,requestMethod
, threedDHighLevelParams
的处理操作可以移除,当支付过程中需要持卡人进行3DS验证时,商户使用返回结果参数
threeDUnionParams
直接调用 PingPong 风控插件的 3DS 处理函数,插件会自动进行处理
# 信用卡卡号支付流程
# 引入风控插件
# 标签引入风控插件
<script src="https://pay-cdn.pingpongx.com/production-fra/static-fra/sdk/ppAcquirerRisk.min-2.0.0.js"></script>
# 在Vue中使用
- 封装一个组件 remote-js
export default {
components: {
'remote-js': {
render(createElement) {
return createElement('script', {attrs: {type: 'text/javascript', src: this.src}});
},
props: {
src: {type: String, required: true},
},
},
},
}
2
3
4
5
6
7
8
9
10
11
12
- 通过组件引入
<remote-js src="https://pay-cdn.pingpongx.com/production-fra/static-fra/sdk/ppAcquirerRisk.min.js"></remote-js>
# 初始化
let options = {
env: 'test', // 开发环境:dev;测试环境:test;生产环境:prod
accId: accId,
clientId: clientId || '',// clientId
elId: '#input', // 卡号输入框的 dom id
merchantTransactionId: merchantTransactionId //填入网站订单流水号
}
let pp = new PPAcquirerRisk(options);
pp.install()
2
3
4
5
6
7
8
9
10
11
# 生成 jsGeneratedData
当持卡人输入卡号后 RiskJS 会自动执行 3DS 初始化操作,商户需要在用户正确输入卡号 且 RiskJS 执行之后 ,调用 JS 接口获取风控设备指纹参数,该参数将作为支付接口的 jsGeneratedData 参数值
var threeDParams = pp.get3DParams(); // 函数返回值 3DParams 作为下一步支付 接口的 jsGeneratedData 的值
threeDParams 中必须包含参数 threeDSServerTransID,若检测到threeDSServerTransID为null,可能是没有触发初始化操作,因此必须触发卡号输入框的keyup事件来再次初始化, 并调用get3DParams再次获取threeDParams。
# 3DS 验证处理
商户在调用网关支付 Server to Server 支付接口后,根据响应的交易状态与 3D Secure 处 理标识判断是否需要 3DS 验证处理,支付状态 status 为 PROCESSING 或 PENDING 时,表示交易处理中,如果返回参数 threeDContinue 为 true 表示需要持卡人进行 3DS 验证,那么商户前端需要执行 JS 提供的 payment3DValidate 函数,将接口返回 的 threeDUnionParams 作为入参调用 payment3DValidate 函数,JS 插件会进行 3D Secure 验证页面的跳转或加载操作,3D Secure 验证页面打开后,持卡人可进行 3D 验 证,完成支付过程
/*
pp.payment3DValidate 方法聚合了所有 3D 流程的处理,应在正常支付流
程之前执行
@paramsthreeDUnionParams必传 s2s支付接口/v2/payment返回的
threeDUnionParams 字段
@params callback 回调函数 可不传,商户可在此处理正常支付流程。若
该笔交易进入 3D 流程,则该回调不会执行,否则执行该回调函数,处理正常支付逻辑
*/
pp.payment3DValidate(threeDUnionParams, callback)
2
3
4
5
6
7
8
9
# 信用卡 Token 支付流程
与正常支付流程不同的是,token 支付需要商户自行进行 3DSecure Initialization, 即在 上述 §3 步中,商户需要自行调用 tokenPaymentInit 方法
/*
@pramas { cardToken: cardToken } token 支付流程必传参数
@paramscallback 在callback里执行pp.get3DParams方法,确保能正确拿 到 3Dinit 返回参数,可不传
2
3
# 风控插件测试专用
参数名称 | 值 |
---|---|
邮箱 | force_3ds_risk_recommendation@forter.com |
accId | 2018092714313010016289 |
clientId | 2018092714313010016 |
salt | BCE27A281029F5EAF3CC0E82 |
测试专用卡号 | 4138490000000000 |