亚洲国产精品乱码一区二区,美景房屋2免费观看,哎呀哎呀在线观看视频高清国语,从镜子里看我是怎么C哭你

Solution/ 解決方案

解決方案分類

如何通過Hessian方式調(diào)用專業(yè)風(fēng)控接口

發(fā)布時(shí)間:2020-03-20 點(diǎn)擊數(shù):3311

1、業(yè)務(wù)工程引入

     需引入外部jar包,包名:hessian-4.0.37.jarfastjson-1.2.31.jar

 

2、然后實(shí)現(xiàn),代碼示例(Java)如下:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.caucho.hessian.client.HessianProxyFactory;

/**
* 先導(dǎo)入到工程,需要jar包:fastjson-1.2.31.jar , hessian-4.0.37.jar
*
* @author admin
*
*/

public class HessianClientPAY_EVENT {


/**
* 通知方式(status=1 or status=-1)
*/
public static HashMap<String, Object> getAsyncParamsMap(HashMap<String, Object> map, String status) {

map.put("finish_time", getDateTime());
map.put("status", status);
return map;
}

/**
* 請(qǐng)求方式(status=0)
*/
public static HashMap<String, Object> getSyncParamsMap() {

HashMap<String, Object> map = new HashMap<String, Object>();
// 封裝事件類型以及事件類型中的字段值
map.put("EVENT_TYPE", "PAY_EVENT");// REQUIRED
map.put("client_ip", "212.129.10.111");

map.put("client_mobile", "13305662206");
map.put("device_id", "70010000001");
map.put("occur_time", getDateTime());// 必填
map.put("payee_userid", "70010000001");

map.put("session_id", "70010000001");
map.put("status","0");// 必填
map.put("user_id", "70010000001");


return map;
}

private static String getDateTime() {
Date date = new Date();
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(date);
}

// --內(nèi)部類,實(shí)際使用可以提取到外面成為公共接口類--------------------------------------------
public interface ReceiveOrderHessianService {

public String syncEventReceive(HashMap<String, Object> map);
}

// --HessianClient內(nèi)部類,實(shí)際使用可以提取到外面成為公共類------------------------------------
public static class HessianClient {

private static ReceiveOrderHessianService service;

public static String execRequest(String url, HashMap<String, Object> map) {
String result = "";
try {
HessianProxyFactory myClient = new HessianProxyFactory();
myClient.setReadTimeout(10000);
service = (ReceiveOrderHessianService) myClient.create(ReceiveOrderHessianService.class, url);
result = service.syncEventReceive(map);
} catch (Exception e) {
System.out.print("HessionClientTest err=" + e.toString());
}
return result;
}
}

// =====================================Main===============================================
public static void main(String[] args) {


String url = "http://192.168.5.7:8099/ReceiveOrderHessianService";// 需根據(jù)實(shí)際情況調(diào)整
int num = 100;//測(cè)試循環(huán)次數(shù)
for(int i = 0; i< num;i++){

HashMap<String, Object> paramsMap = getSyncParamsMap();
String result = HessianClient.execRequest(url, paramsMap);

// json 解釋
JSONObject jsonObject = JSON.parseObject(result);

System.out.println("success(調(diào)用接口是否成功,true成功,false失敗): " + jsonObject.get("success"));
System.out.println("reasonCode(調(diào)用失敗原因碼,參見原因碼表): " + jsonObject.get("reasonCode"));
System.out.println("reasonMsg(調(diào)用失敗原因描述): " + jsonObject.get("reasonMsg"));
System.out.println("orderNo(訂單號(hào)); " + jsonObject.get("orderNo"));
System.out.println("riskResult(風(fēng)險(xiǎn)評(píng)定指令碼,有三個(gè),放行(ACCEPT)、待審核(REVIEW)、拒絕(REJECT)): " + jsonObject.get("riskResult"));
System.out.println("riskScore(事件總體評(píng)分): " + jsonObject.get("riskScore"));
System.out.println("costTime(處理花費(fèi)時(shí)間(毫秒)): " + jsonObject.get("costTime"));
System.out.println("fireRules(觸發(fā)的規(guī)則列表): " + jsonObject.get("fireRules"));
// fireRules: 觸發(fā)的規(guī)則列表
if (jsonObject.get("fireRules") != null && !"".equals(jsonObject.get("fireRules"))) {

JSONArray fireRules = (JSONArray) jsonObject.get("fireRules");
if (fireRules != null && fireRules.size() > 0) {
System.out.println("---------" + "fireRules: 觸發(fā)的規(guī)則列表" + "-----------------");
for (Object object : fireRules) {
JSONObject ruleJson = JSON.parseObject(object.toString());
System.out.println("code(規(guī)則編碼): " + ruleJson.get("code"));
System.out.println("name(規(guī)則名稱): " + ruleJson.get("name"));
System.out.println("isPolicy(預(yù)警決策(0,決策;1 預(yù)警)): " + ruleJson.get("isPolicy"));
System.out.println("ruleResult(風(fēng)控結(jié)果,單個(gè)規(guī)則的風(fēng)控結(jié)果。10000(放行),30000(待審核),99999(拒絕)): " + ruleJson.get("ruleResult"));
System.out.println("ruleScore(風(fēng)控評(píng)分,單個(gè)規(guī)則的風(fēng)控評(píng)分): " + ruleJson.get("ruleScore"));
}
}
}

// 客戶根據(jù)需要判斷
if ("ACCEPT".equals(jsonObject.get("riskResult"))) {

paramsMap = getAsyncParamsMap(paramsMap,"1");
String sucResult = HessianClient.execRequest(url, paramsMap);
System.out.println(sucResult);
} else {
paramsMap = getAsyncParamsMap(paramsMap,"-1");
String failResult = HessianClient.execRequest(url, paramsMap);
System.out.println(failResult);
}
}

}
}

3、對(duì)接需要注意如下:

1)  接口參數(shù)EVENT_TYPE、statusoccur_time必填;

2)  當(dāng)status1(成功)或-1(失?。r(shí),此字段finish_time必填;

3)  occur_timefinish_time日期格式“yyyy-MM-dd HH:mm:ss.SSS”;

4)  請(qǐng)求與通知不同點(diǎn):不同在通知時(shí)status1-1,必須有finish_time;