如何進(jìn)行風(fēng)控系統(tǒng)對(duì)接開(kāi)發(fā)
1.1 對(duì)接重點(diǎn)說(shuō)明
1、 業(yè)務(wù)系統(tǒng)跟風(fēng)控防火墻對(duì)接前提:需不影響客戶業(yè)務(wù)系統(tǒng)自身運(yùn)行。
2、 同步事件請(qǐng)求時(shí),如超時(shí)無(wú)應(yīng)答,業(yè)務(wù)系統(tǒng)需作異常處理,按定義好的默認(rèn)流程處理,以保證業(yè)務(wù)的正常運(yùn)行,具體超時(shí)時(shí)間可根據(jù)自身情況確定。
3、 當(dāng)風(fēng)控系統(tǒng)內(nèi)部異常時(shí),對(duì)接的業(yè)務(wù)系統(tǒng)應(yīng)該可以放行并繼續(xù)交易為前提。業(yè)務(wù)系統(tǒng)要有異常處理機(jī)制,兼容風(fēng)控異常。
1.2 接口調(diào)用數(shù)據(jù)提交
1.2.1 請(qǐng)求數(shù)據(jù)提交
Ø 事件采用hessian方式
hessian服務(wù)路徑:http://{host}:{port}/ReceiveOrderHessianService
輸入?yún)?shù):HashMap
輸出判斷的結(jié)果:JSON字符串
host:是主機(jī)域名或IP,port:應(yīng)用發(fā)布的端口
Ø 事件采用servlet方式
servlet服務(wù)路徑:http://{host}:{port}/ ReceiveOrderServlet
輸入?yún)?shù):HashMap
輸出判斷的結(jié)果:JSON字符串
host:是主機(jī)域名或IP,port:應(yīng)用發(fā)布的端口
² 輸入?yún)?shù)說(shuō)明:
輸入?yún)?shù)為各個(gè)事件的屬性值。開(kāi)發(fā)對(duì)應(yīng)添加事件屬性。
事件參數(shù)對(duì)應(yīng)的屬性字段,通過(guò)管理系統(tǒng)的“事件類(lèi)型管理->事件類(lèi)型->字段管理”進(jìn)行查看。
參數(shù)輸入數(shù)據(jù)格式,組裝成HashMap。status 業(yè)務(wù)狀態(tài)必須為 0。
² 返回參數(shù)說(shuō)明:
輸出參數(shù) |
||
字段名稱(chēng) |
字段類(lèi)型 |
描述 |
reasonCode |
String |
調(diào)用結(jié)果原因碼,參見(jiàn)原因碼表 |
reasonMsg |
String |
調(diào)用原因描述 |
orderNo |
String |
訂單號(hào) |
riskResult |
String |
風(fēng)險(xiǎn)評(píng)定指令碼,有三個(gè),放行(ACCEPT)、待審核(REVIEW)、拒絕(REJECT) |
riskScore |
int |
事件總體評(píng)分 |
costTime |
long |
處理花費(fèi)時(shí)間(毫秒) |
figures |
JSONArray |
指標(biāo)結(jié)果列表。當(dāng)配置了指標(biāo)時(shí),才有數(shù)據(jù)返回,數(shù)據(jù)解析跟頁(yè)面配置對(duì)應(yīng) |
fireRules |
JSONArray |
觸發(fā)的規(guī)則列表。當(dāng)有觸發(fā)的規(guī)則時(shí),才有數(shù)據(jù)返回 |
→規(guī)則列表fireRules解析 |
||
字段名稱(chēng) |
字段類(lèi)型 |
描述 |
code |
String |
規(guī)則編碼 |
name |
String |
規(guī)則名稱(chēng) |
isPolicy |
int |
預(yù)警決策(0,決策;1 預(yù)警) |
ruleResult |
int |
風(fēng)控結(jié)果,單個(gè)規(guī)則的風(fēng)控結(jié)果。10000(放行),30000(待審核),99999(拒絕) |
ruleScore |
int |
風(fēng)控評(píng)分,單個(gè)規(guī)則的風(fēng)控評(píng)分。 |
原因碼表說(shuō)明:
原因碼表 |
||
代碼 |
描述 |
說(shuō)明 |
0 |
事件提交成功 |
風(fēng)控端收到事件提交并處理完成 |
E100 |
事件數(shù)據(jù)重復(fù)提交 |
請(qǐng)檢查提交的事件數(shù)據(jù); 返回風(fēng)控結(jié)果拒絕 |
E101 |
事件類(lèi)型沒(méi)有輸入 |
請(qǐng)檢查調(diào)用接口是否輸入EVENT_TYPE |
E102 |
必填參數(shù)為空 |
請(qǐng)檢查必填項(xiàng)是否輸入,檢查status、occur_time |
E103 |
沒(méi)找到對(duì)應(yīng)事件 |
請(qǐng)檢查EVENT_TYPE輸入是否正確或事件是否啟用 |
E104 |
輸入?yún)?shù)轉(zhuǎn)換無(wú)效 |
請(qǐng)檢查輸入值中是否有非法值 |
E105 |
事件內(nèi)部運(yùn)算異常 |
內(nèi)部接口處理錯(cuò)誤 |
E106 |
沒(méi)找到事件的屬性 |
請(qǐng)檢查事件是否配置屬性并啟用 |
返回參數(shù)json形式如下:
{
"orderNo":"-2590270857653794837",
"riskResult":"REJECT",
"reasonMsg":"",
"reasonCode":"0",
"riskScore":200,
"figures":{
"F-SMS_VERIFY-10":{
"LC":"182",
"C":"1138",
"KC":"0"
},
"F-SMS_SEND-10":{
"LC":"217",
"C":"1202",
"KC":"0"
},
"F-SMS_SEND-01":{
"C":"11"
},
"F-SMS_SEND-03":{
"C":"42"
},
"F-SMS_SEND-11":{
"RET":"1"
},
"F-SMS_SEND-02":{
"C":"11"
},
"F-SMS_SEND-04":{
"C":"11"
}
},
"fireRules":[
{
"code":"R-SMS_SEND-01",
"name":"同一手機(jī)號(hào)最近10分鐘下發(fā)次數(shù)超限",
"isPolicy":0,
"ruleResult":99999,
"ruleScore":100
},
{
"code":"R-SMS_SEND-02",
"name":"同一設(shè)備最近10分鐘下發(fā)次數(shù)超限",
"isPolicy":0,
"ruleResult":99999,
"ruleScore":100
}
],
"costTime":2
}
1.2.2 通知數(shù)據(jù)提交
通知數(shù)據(jù)提交方式,同樣有兩種方式,hessian與servlet。調(diào)用過(guò)程根“請(qǐng)求數(shù)據(jù)提交”的過(guò)程一樣。
不同之處是:
1、 輸入?yún)?shù)中 status 業(yè)務(wù)狀態(tài) 為1 (成功) 或-1 (失敗) ;
2、 輸入?yún)?shù)中finish_time“完成時(shí)間” 必須有值;
status |
業(yè)務(wù)狀態(tài) |
業(yè)務(wù)狀態(tài): 0為請(qǐng)求,1為成功, -1為失敗 |
finish_time |
完成時(shí)間 |
格式為“yyyy-MM-dd HH:mm:ss.SSS” |