Commit aa93037f authored by 胡建龙's avatar 胡建龙

[add]平安智能清分接口调通

parent 2b2f0fe8
...@@ -3,6 +3,7 @@ package com.hand.app.pingAn.controllers; ...@@ -3,6 +3,7 @@ package com.hand.app.pingAn.controllers;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.hand.app.pingAn.service.PingAnService; import com.hand.app.pingAn.service.PingAnService;
import com.hand.app.pingAn.utils.ApiUtils; import com.hand.app.pingAn.utils.ApiUtils;
import com.hand.hap.core.IRequest;
import com.hand.hap.system.controllers.BaseController; import com.hand.hap.system.controllers.BaseController;
import com.hand.hap.system.dto.ResponseData; import com.hand.hap.system.dto.ResponseData;
import com.pingan.openbank.api.sdk.common.http.HttpResult; import com.pingan.openbank.api.sdk.common.http.HttpResult;
...@@ -12,6 +13,7 @@ import org.springframework.stereotype.Controller; ...@@ -12,6 +13,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
import java.util.HashMap; import java.util.HashMap;
...@@ -27,9 +29,9 @@ public class PingAnController extends BaseController { ...@@ -27,9 +29,9 @@ public class PingAnController extends BaseController {
@ApiModelProperty("子账户维护(BEDL_C002)") @ApiModelProperty("子账户维护(BEDL_C002)")
@RequestMapping("/bedl/SubAcctMaintenance") @RequestMapping("/bedl/SubAcctMaintenance")
@ResponseBody @ResponseBody
public ResponseData bindSubAccount(){ public ResponseData bindSubAccount(HttpServletRequest request){
// 模拟请求参数 // 模拟请求参数
HashMap<String, String> reqParams = new HashMap<>(); JSONObject reqParams = new JSONObject();
reqParams.put("OpFlag","A"); reqParams.put("OpFlag","A");
reqParams.put("SubAccountSeq","123456"); reqParams.put("SubAccountSeq","123456");
reqParams.put("SubAccountName","测试别名"); reqParams.put("SubAccountName","测试别名");
...@@ -50,12 +52,10 @@ public class PingAnController extends BaseController { ...@@ -50,12 +52,10 @@ public class PingAnController extends BaseController {
@ApiModelProperty("近期明细查询(BEDL_C00602)") @ApiModelProperty("近期明细查询(BEDL_C00602)")
@RequestMapping("/bedl/InquiryIntoTheCurrentDetailsOfMainSubaccountAccountTwo") @RequestMapping("/bedl/InquiryIntoTheCurrentDetailsOfMainSubaccountAccountTwo")
@ResponseBody @ResponseBody
public ResponseData recentDetailQuery(){ public ResponseData recentDetailQuery(HttpServletRequest request){
// 模拟请求参数 // 模拟请求参数
HashMap<String, String> reqParams = new HashMap<>(); JSONObject reqParams = new JSONObject();
reqParams.put("OpFlag","1"); reqParams.put("OpFlag","1");
reqParams.put("SubAccountSeq","123456");
reqParams.put("SubAccountName","测试别名");
reqParams.put("StartTime","20221201000000"); reqParams.put("StartTime","20221201000000");
reqParams.put("EndTime","20221202000000"); reqParams.put("EndTime","20221202000000");
reqParams.put("PageNo","1"); reqParams.put("PageNo","1");
...@@ -63,7 +63,7 @@ public class PingAnController extends BaseController { ...@@ -63,7 +63,7 @@ public class PingAnController extends BaseController {
String seqNoTime = new SimpleDateFormat("yyMMdd").format(Calendar.getInstance().getTime()); String seqNoTime = new SimpleDateFormat("yyMMdd").format(Calendar.getInstance().getTime());
Random random = new Random(); Random random = new Random();
String randomNo = ""; String randomNo = "";
for (byte i = 0; i < 10; i++) { for (byte i = 0; i < 8; i++) {
int randomNumber = random.nextInt(10); int randomNumber = random.nextInt(10);
randomNo += randomNumber; randomNo += randomNumber;
} }
...@@ -76,18 +76,25 @@ public class PingAnController extends BaseController { ...@@ -76,18 +76,25 @@ public class PingAnController extends BaseController {
@ApiModelProperty("明细通知接口(BEDL_ZNA001)") @ApiModelProperty("明细通知接口(BEDL_ZNA001)")
@RequestMapping("/api/public/pingAn/notify") @RequestMapping("/api/public/pingAn/notify")
@ResponseBody @ResponseBody
public ResponseData DetailsNotify(JSONObject data){ public ResponseData DetailsNotify(HttpServletRequest request, JSONObject data){
// 类似支付结果通知的接口,每次返回一条记录。 IRequest iRequest = createRequestContext(request);
return pingAnService.detailNotify(iRequest,data);
// 将数据推送到业务系统
return pingAnService.detailNotify(data);
} }
@ApiModelProperty("清分台账明细下载(BEDL_F0P101)") @ApiModelProperty("清分台账明细下载(BEDL_F0P101)")
@RequestMapping("/bedl/DetailReportQueryNew") @RequestMapping("/bedl/DetailReportQueryNew")
@ResponseBody @ResponseBody
public ResponseData downloadDetail(JSONObject data){ public ResponseData downloadDetail(HttpServletRequest request){
IRequest iRequest = createRequestContext(request);
return pingAnService.detailNotify(data); JSONObject reqParams = new JSONObject();
Calendar cal = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String today = df.format(cal.getTime());
reqParams.put("CnsmrSeqNo", today+"000");
reqParams.put("QueryDate", "20221213");
reqParams.put("Account",ApiUtils.AcctNo);
reqParams.put("BsnCode","C006A");
// reqParams.put("BatchNo","");
return pingAnService.invoke("bedl/DetailReportQueryNew", reqParams);
} }
} }
package com.hand.app.pingAn.service; package com.hand.app.pingAn.service;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.hand.hap.core.IRequest;
import com.hand.hap.system.dto.ResponseData; import com.hand.hap.system.dto.ResponseData;
import java.util.HashMap; import java.util.HashMap;
public interface PingAnService { public interface PingAnService {
ResponseData invoke(String interfaceName, HashMap params); ResponseData invoke(String interfaceName, JSONObject params);
ResponseData detailNotify(JSONObject data); ResponseData detailNotify(IRequest iRequest, JSONObject data);
} }
package com.hand.app.pingAn.service.impl; package com.hand.app.pingAn.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.chinapay.dto.HlsEbankCcbTransaction;
import com.chinapay.mapper.HlsEbankCcbTransactionMapper;
import com.chinapay.service.IHlsEbankCcbTransactionService;
import com.chinapay.service.impl.HlsEbankCcbTransactionServiceImpl;
import com.chinapay.util.StringUtil;
import com.hand.app.cmb.dto.Ld037;
import com.hand.app.cmb.service.impl.HclcCmbPolyServiceImpl;
import com.hand.app.cmb.service.impl.HlsEbankCmbTransqryServiceImpl;
import com.hand.app.cmb.util.Utils;
import com.hand.app.esignHclc.utils.SignHclcUtils; import com.hand.app.esignHclc.utils.SignHclcUtils;
import com.hand.app.pingAn.service.PingAnService; import com.hand.app.pingAn.service.PingAnService;
import com.hand.app.pingAn.utils.ApiUtils; import com.hand.app.pingAn.utils.ApiUtils;
import com.hand.app.zhongDengWang.dto.HlsWsRequests; import com.hand.app.zhongDengWang.dto.HlsWsRequests;
import com.hand.app.zhongDengWang.mapper.HlsWsRequestsMapper; import com.hand.app.zhongDengWang.mapper.HlsWsRequestsMapper;
import com.hand.hap.core.IRequest;
import com.hand.hap.intergration.dto.HapInterfaceHeader; import com.hand.hap.intergration.dto.HapInterfaceHeader;
import com.hand.hap.intergration.service.IHapInterfaceHeaderService; import com.hand.hap.intergration.service.IHapInterfaceHeaderService;
import com.hand.hap.system.dto.ResponseData; import com.hand.hap.system.dto.ResponseData;
import com.pingan.openbank.api.sdk.common.http.HttpResult; import com.pingan.openbank.api.sdk.common.http.HttpResult;
import com.pingan.openbank.api.sdk.entity.*;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@Service @Service
...@@ -24,32 +41,69 @@ public class PingAnServiceImpl implements PingAnService { ...@@ -24,32 +41,69 @@ public class PingAnServiceImpl implements PingAnService {
private HlsWsRequestsMapper hlsWsRequestsMapper; private HlsWsRequestsMapper hlsWsRequestsMapper;
@Autowired @Autowired
private IHapInterfaceHeaderService headerService; private IHapInterfaceHeaderService headerService;
@Autowired
private IHlsEbankCcbTransactionService hlsEbankCcbTransactionService;
private Logger logger = LoggerFactory.getLogger(getClass()); private Logger logger = LoggerFactory.getLogger(getClass());
private static Properties pro = null;
static {
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(1);
pro = Utils.loadProp(path + "pingAn.properties");
if (Objects.isNull(pro)) {
LoggerFactory.getLogger(HclcCmbPolyServiceImpl.class).error("配置文件初始化异常");
}
}
/** /**
* 还需要考虑是否要开启事务,但是貌似不太需要
* @param interfaceName * @param interfaceName
* @param params * @param params
* @return * @return
*/ */
@Override @Override
public ResponseData invoke(String interfaceName, HashMap params) { public ResponseData invoke(String interfaceName, JSONObject params) {
ResponseData responseData = new ResponseData(); ResponseData responseData = new ResponseData();
JSONObject requestBody = ApiUtils.getBaseReqBody(); JSONObject requestBody = ApiUtils.getBaseReqBody();
requestBody.putAll(params); requestBody.putAll(params);
/*插入接口日志表*/ /*插入接口日志表*/
HlsWsRequests hlsWsRequests = new HlsWsRequests(); HlsWsRequests hlsWsRequests = new HlsWsRequests();
hlsWsRequests = createRequestLog("url", requestBody.toJSONString(), "pingAn_"+interfaceName.substring(interfaceName.lastIndexOf('/')+1), 1L); hlsWsRequests = createRequestLog(pro.getProperty("baseUrl")+"/V1.0/"+interfaceName, requestBody.toJSONString(), 1L);
HttpResult result = ApiUtils.invoke(interfaceName, requestBody); HttpResult result = ApiUtils.invoke(interfaceName, requestBody);
if (Objects.nonNull(result)) { if (Objects.nonNull(result)) {
if ("000000".equals(result.getCode())) { JSONObject res;
ArrayList<String> list = new ArrayList<>(); if ("200".equals(result.getCode() + "")) {
JSONObject res = JSONObject.parseObject(responseData.getMessage());
// todo 记录返回信息并存表
hlsWsRequests.setReturnStatus("s"); hlsWsRequests.setReturnStatus("s");
responseData.setSuccess(true); responseData.setSuccess(true);
responseData.setRows(list); // todo 不同接口返回不同数据,需要确认返回结果的格式
switch (interfaceName) {
case "bedl/SubAcctMaintenance" :
hlsWsRequests.setFunctionName("pingAn_SubAcctMaintenance");
res = JSONObject.parseObject(result.getData());
// do something
ArrayList<String> strings = new ArrayList<>();
strings.add(res.getString("SubAccountNo"));
responseData.setRows(strings);
break;
case "bedl/InquiryIntoTheCurrentDetailsOfMainSubaccountAccountTwo" :
hlsWsRequests.setFunctionName("pingAn_recentDetailQuery");
res = JSONObject.parseObject(result.getData());
//do something
ArrayList<JSONObject> jsonObjects = new ArrayList<>();
jsonObjects.add(res);
responseData.setRows(jsonObjects);
break;
case "bedl/DetailReportQueryNew" :
hlsWsRequests.setFunctionName("pingAn_DetailReportQueryNew");
// 做文件下载
JSONObject arrRes = JSONArray.parseObject(result.getData());
ArrayList<JSONObject> fileInfo = new ArrayList<>();
fileInfo.add(arrRes);
responseData.setRows(fileInfo);
break;
}
} else { } else {
//请求失败 //请求失败
hlsWsRequests.setReturnStatus("f"); hlsWsRequests.setReturnStatus("f");
...@@ -57,10 +111,6 @@ public class PingAnServiceImpl implements PingAnService { ...@@ -57,10 +111,6 @@ public class PingAnServiceImpl implements PingAnService {
} }
hlsWsRequests.setResponseJson(result.getData()); hlsWsRequests.setResponseJson(result.getData());
hlsWsRequests.setResponsedDate(new Date()); hlsWsRequests.setResponsedDate(new Date());
// todo 处理响应信息
} }
//更新日志 //更新日志
hlsWsRequestsMapper.updateByPrimaryKeySelective(hlsWsRequests); hlsWsRequestsMapper.updateByPrimaryKeySelective(hlsWsRequests);
...@@ -68,23 +118,27 @@ public class PingAnServiceImpl implements PingAnService { ...@@ -68,23 +118,27 @@ public class PingAnServiceImpl implements PingAnService {
} }
public ResponseData detailNotify(JSONObject data){ public ResponseData detailNotify(IRequest iRequest, JSONObject data){
ResponseData responseData = new ResponseData(); ResponseData responseData = new ResponseData();
// todo 返回单条数据,存记录 if (Objects.nonNull(data) && data.size() > 0){
HlsWsRequests hlsWsRequests = new HlsWsRequests(); // 存表
hlsWsRequests = createRequestLog("url", data.toJSONString(), "pingAn_notify", 1L); HlsEbankCcbTransaction hlsEbankCcbTransaction = saveTransaction(iRequest,data);
// 调用系统的接口服务,推送通知数据 // 调用系统的接口服务,推送通知数据
postNotify(data); postNotify(JSONObject.toJSONString(hlsEbankCcbTransaction));
responseData.setSuccess(true);
responseData.setMessage("接收成功");
}else{
responseData.setSuccess(false);
responseData.setMessage("接收失败");
}
return responseData; return responseData;
} }
private HlsWsRequests createRequestLog(String wsdlUrl, String requestClob, String functionName , Long pkValue) { private HlsWsRequests createRequestLog(String wsdlUrl, String requestClob, Long pkValue) {
HlsWsRequests hlsWsRequests = new HlsWsRequests(); HlsWsRequests hlsWsRequests = new HlsWsRequests();
hlsWsRequests.setRequestDate(new Date()); hlsWsRequests.setRequestDate(new Date());
hlsWsRequests.setRequestWsdlUrl(wsdlUrl); hlsWsRequests.setRequestWsdlUrl(wsdlUrl);
hlsWsRequests.setFunctionName(functionName);
hlsWsRequests.setRequestJson(requestClob); hlsWsRequests.setRequestJson(requestClob);
hlsWsRequests.setStatusDate(new Date()); hlsWsRequests.setStatusDate(new Date());
hlsWsRequests.setParameterType("json"); hlsWsRequests.setParameterType("json");
...@@ -94,7 +148,7 @@ public class PingAnServiceImpl implements PingAnService { ...@@ -94,7 +148,7 @@ public class PingAnServiceImpl implements PingAnService {
return hlsWsRequests; return hlsWsRequests;
} }
private String postNotify(JSONObject params) { private String postNotify(String params) {
String sysName = "HCL_UPLOAD_FILE"; String sysName = "HCL_UPLOAD_FILE";
// todo 待修改 // todo 待修改
String apiName = "writeOffLd037"; String apiName = "writeOffLd037";
...@@ -113,7 +167,7 @@ public class PingAnServiceImpl implements PingAnService { ...@@ -113,7 +167,7 @@ public class PingAnServiceImpl implements PingAnService {
headInfo.put("Content-Type", "application/x-www-form-urlencoded"); headInfo.put("Content-Type", "application/x-www-form-urlencoded");
JSONObject requestData = new JSONObject(); JSONObject requestData = new JSONObject();
requestData.put("requestData", params.toString()); requestData.put("requestData", params);
//发送http请求 //发送http请求
SignHclcUtils signHclcUtils1 = new SignHclcUtils(); SignHclcUtils signHclcUtils1 = new SignHclcUtils();
...@@ -132,4 +186,26 @@ public class PingAnServiceImpl implements PingAnService { ...@@ -132,4 +186,26 @@ public class PingAnServiceImpl implements PingAnService {
} }
} }
private HlsEbankCcbTransaction saveTransaction(IRequest iRequest, JSONObject data) {
HlsEbankCcbTransaction ccbTransaction = new HlsEbankCcbTransaction();
ccbTransaction.setMerId(ApiUtils.AcctNo);
ccbTransaction.setSttVchCardNo(data.getString("STT_VCH_CARD_NO"));
ccbTransaction.setSttAcDate(data.getString("STT_AC_DATE"));
ccbTransaction.setTranDate(data.getString("STT_TR_TIME"));
ccbTransaction.setMerOrderNo(data.getString("STT_CONSUMER_SEQ_NO"));
ccbTransaction.setCmbOrderId(data.getString("STT_JRN_NO"));
ccbTransaction.setSttVchSeqNo(data.getString("STT_VCH_SEQ_NO"));
ccbTransaction.setTranType(data.getString("STT_VCH_SIGN"));
ccbTransaction.setAmount(data.getDouble("STT_VCH_AMT"));
ccbTransaction.setSttAmtRmb(data.getDouble("STT_AMT_RMB"));
ccbTransaction.setSttVchBal(data.getDouble("STT_VCH_BAL"));
ccbTransaction.setSttVchRcvAcNo(data.getString("STT_VCH_RCV_AC_NO"));
ccbTransaction.setSttVchRcvAcName(data.getString("STT_VCH_RCV_AC_NAME"));
ccbTransaction.setSttVchRcvBkName(data.getString("STT_VCH_RCV_BK_NAME"));
ccbTransaction.setSttVchRcvBkNo(data.getString("STT_VCH_RCV_BK_NO"));
ccbTransaction.setSttVchRemark(data.getString("STT_VCH_REMARK"));
ccbTransaction.setReturnCode(data.getString("STT_VCH_MARKCODE"));
ccbTransaction.setReturnMsg(data.getString("STT_VCH_PART"));
return hlsEbankCcbTransactionService.insertSelective(iRequest, ccbTransaction);
}
} }
...@@ -3,13 +3,16 @@ package com.hand.app.pingAn.utils; ...@@ -3,13 +3,16 @@ package com.hand.app.pingAn.utils;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.pingan.openbank.api.sdk.client.ApiClient; import com.pingan.openbank.api.sdk.client.ApiClient;
import com.pingan.openbank.api.sdk.common.http.HttpResult; import com.pingan.openbank.api.sdk.common.http.HttpResult;
import com.pingan.openbank.api.sdk.entity.SdkRequest; import com.pingan.openbank.api.sdk.entity.*;
import java.io.File;
import java.util.List;
public class ApiUtils { public class ApiUtils {
private static ApiClient apiClient = ApiClient.getInstance("pingAn.properties"); private static ApiClient apiClient = ApiClient.getInstance("pingAn.properties");
public static JSONObject baseReqBody = new JSONObject(); private static JSONObject baseReqBody = new JSONObject();
private static String MrchCode = "0090108040000KTAR000"; private static String MrchCode = "0090108040000KTAR000";
private static String AcctNo = "15000101414037"; public static String AcctNo = "15000101414037";
static{ static{
// todo 设置通用的请求参数,比如主账号,流水号,企业银企直连标准代码等 // todo 设置通用的请求参数,比如主账号,流水号,企业银企直连标准代码等
baseReqBody.put("MrchCode",MrchCode); baseReqBody.put("MrchCode",MrchCode);
...@@ -26,4 +29,5 @@ public class ApiUtils { ...@@ -26,4 +29,5 @@ public class ApiUtils {
public static JSONObject getBaseReqBody(){ public static JSONObject getBaseReqBody(){
return baseReqBody.clone(); return baseReqBody.clone();
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment