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

Solution/ 解決方案

解決方案分類

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

發(fā)布時間:2020-03-20 點擊數(shù):3321

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

     需引入外部jar包,包名:fastjson-1.2.31.jar,httpclient-4.5.jar , httpcore-4.4.1.jar , commons-logging-1.2.jar

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

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
* 先導入到工程,需要jar包:fastjson-1.2.31.jar , httpclient-4.5.jar , httpcore-4.4.1.jar , commons-logging-1.2.jar
*
* @author admin
*
*/
public class ServletClientPAY_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;
}

/**
* 請求方式(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", "189.219.229.131");

map.put("client_mobile", "13103337128");
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);
}

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

static CloseableHttpClient httpclient = HttpClients.createDefault();

public static String execRequest(String url, Map<String, Object> paramsMap) {
String result = "";
CloseableHttpResponse response = null;
try {
// 創(chuàng)建默認的httpClient實例.
HttpPost httppost = new HttpPost(url);

List formparams = new ArrayList();
for (String key : paramsMap.keySet()) {
formparams.add(new BasicNameValuePair(key, (String) paramsMap.get(key)));
}
UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
httppost.setEntity(uefEntity);
response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
if (entity != null) {
result = EntityUtils.toString(entity, "UTF-8");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 關閉連接,釋放資源
if (response != null)

response.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}

public static void closeHttpClient() {
try {
if (httpclient != null)
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// -----------------------------------main---------------------------

public static void main(String[] args) {

String url = "http://192.168.5.7:8099/ReceiveOrderServlet";
int num = 100;//測試循環(huán)次數(shù)
for(int i = 0; i< num;i++){

HashMap<String, Object> paramsMap = getSyncParamsMap();
String result = ServletClient.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(訂單號); " + jsonObject.get("orderNo"));
System.out.println("riskResult(風險評定指令碼,有三個,放行(ACCEPT)、待審核(REVIEW)、拒絕(REJECT)): " + jsonObject.get("riskResult"));
System.out.println("riskScore(事件總體評分): " + jsonObject.get("riskScore"));
System.out.println("costTime(處理花費時間(毫秒)): " + 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(預警決策(0,決策;1 預警)): " + ruleJson.get("isPolicy"));
System.out.println("ruleResult(風控結(jié)果,單個規(guī)則的風控結(jié)果。10000(放行),30000(待審核),99999(拒絕)): " + ruleJson.get("ruleResult"));
System.out.println("ruleScore(風控評分,單個規(guī)則的風控評分): " + ruleJson.get("ruleScore"));
}
}

}

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

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

}

3、對接需要注意如下:

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

2)  status1(成功)或-1(失?。r,此字段finish_time必填;

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

4)  請求與通知不同點:不同在通知時status1-1,必須有finish_time;