Commit d0154e61 authored by yangyang's avatar yangyang

对接聚富通

parent efa07f37
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.hygf.api.mapper.HygfIcbcRecordMapper">
<sql id="tableName">
hygf_icbc_record
</sql>
<sql id="baseColumn">
sequence_nbr,cust_name,id_card,phone,medium_id,project_id,open_account_state,protocol_status,protocol_start_time,protocol_end_time,trx_limit_amount,day_limit_amount,protocol_limit_amount,app_id,out_user_id,out_vendor_id,sign_entrsut_prtl_status
</sql>
<select id="listObject" resultType="com.yeejoin.amos.boot.module.hygf.api.dto.HygfIcbcRecordDTO">
SELECT DISTINCT
icbc.sequence_nbr,
ph.owners_name as custName,
ph.telephone as phone,
ph.id_card,
ph.amos_user_id,
icbc.open_account_status,
icbc.protocol_status
FROM
hygf_peasant_household ph LEFT JOIN hygf_icbc_record icbc ON ph.amos_user_id = icbc.amos_user_id
<where>
ph.is_delete = 0
<if test="param != null">
<if test="param.openAccountStatus != null and param.openAccountStatus != ''">
AND icbc.protocol_status = #{param.openAccountStatus}
</if>
<if test="param.custName != null and param.custName != ''">
AND ph.owners_name LIKE CONCAT('%', #{param.custName}, '%')
</if>
<if test="param.idCard != null and param.idCard != ''">
AND ph.id_card LIKE CONCAT('%', #{param.idCard}, '%')
</if>
<if test="param.phone != null and param.phone != ''">
AND ph.telephone LIKE CONCAT('%', #{param.phone}, '%')
</if>
<if test="param.regionalCompaniesSeq != null and param.regionalCompaniesSeq != ''">
AND ph.regional_companies_seq = #{param.regionalCompaniesSeq}
</if>
</if>
</where>
GROUP BY
ph.amos_user_id
ORDER BY
ph.rec_date DESC
</select>
</mapper>
\ No newline at end of file
...@@ -64,14 +64,25 @@ public class HygfIcbcController extends BaseController { ...@@ -64,14 +64,25 @@ public class HygfIcbcController extends BaseController {
@GetMapping(value = "/getHygfIcbcWalletInfo") @GetMapping(value = "/getHygfIcbcWalletInfo")
@ApiOperation(httpMethod = "GET",value = "获取钱包信息", notes = "获取钱包信息") @ApiOperation(httpMethod = "GET",value = "获取钱包信息", notes = "获取钱包信息")
public ResponseModel<JftApiUserEntrustopenacctQueryResponseV1> getHygfIcbcWalletInfo(HttpServletRequest req, HttpServletResponse resp) { public ResponseModel<JftApiUserEntrustopenacctQueryResponseV1> getHygfIcbcWalletInfo(HttpServletRequest req, HttpServletResponse resp) {
return ResponseHelper.buildResponse(hygfIcbcService.getHygfIcbcWalletInfo(req, resp)); return ResponseHelper.buildResponse(hygfIcbcService.getHygfIcbcWalletInfo(req.getParameter("userId")));
} }
@TycloudOperation (ApiLevel = UserType.AGENCY, needAuth = false) /**
@PostMapping (value = "/registerWalletCallback") * 开户签约异步通知
*
*
* @param request request
* @param response response
* @return {@link Object}
* @author yangyang
* @throws
* @date 2024/7/18 19:39
*/
@TycloudOperation (ApiLevel = UserType.PUBLIC, needAuth = false)
@PostMapping (value = "/notify")
@ApiOperation (httpMethod = "POST", value = "注册电子钱包回调", notes = "注册电子钱包回调") @ApiOperation (httpMethod = "POST", value = "注册电子钱包回调", notes = "注册电子钱包回调")
public ResponseModel<HygfIcbcRecordDTO> registerWalletCallback(@ApiParam @RequestBody HygfIcbcRecordDTO hygfIcbcRecordDTO) { public Object notify(HttpServletRequest request, HttpServletResponse response) throws Exception {
return ResponseHelper.buildResponse(hygfIcbcService.registerWalletCallback(hygfIcbcRecordDTO)); return hygfIcbcService.registerWalletCallback(request, response);
} }
@TycloudOperation (ApiLevel = UserType.AGENCY, needAuth = false) @TycloudOperation (ApiLevel = UserType.AGENCY, needAuth = false)
......
package com.yeejoin.amos.boot.module.hygf.biz.service.impl; package com.yeejoin.amos.boot.module.hygf.biz.service.impl;
import cn.hutool.core.codec.Base64;
import com.alibaba.fastjson.JSONObject;
import com.icbc.api.DefaultIcbcClient; import com.icbc.api.DefaultIcbcClient;
import com.icbc.api.IcbcApiException; import com.icbc.api.IcbcApiException;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -10,6 +12,8 @@ import com.icbc.api.UiIcbcClient; ...@@ -10,6 +12,8 @@ import com.icbc.api.UiIcbcClient;
import com.icbc.api.request.JftApiUserEntrustopenacctQueryRequestV1; import com.icbc.api.request.JftApiUserEntrustopenacctQueryRequestV1;
import com.icbc.api.request.JftUiUserEntrustopenacctSubmitRequestV1; import com.icbc.api.request.JftUiUserEntrustopenacctSubmitRequestV1;
import com.icbc.api.response.JftApiUserEntrustopenacctQueryResponseV1; import com.icbc.api.response.JftApiUserEntrustopenacctQueryResponseV1;
import com.icbc.api.utils.IcbcSignature;
import com.icbc.api.utils.WebUtils;
import com.yeejoin.amos.boot.module.hygf.api.Enum.IcbcEnum; import com.yeejoin.amos.boot.module.hygf.api.Enum.IcbcEnum;
import com.yeejoin.amos.boot.module.hygf.api.dto.FinancingInfoDto; import com.yeejoin.amos.boot.module.hygf.api.dto.FinancingInfoDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.FinancingRectificationOrderDto; import com.yeejoin.amos.boot.module.hygf.api.dto.FinancingRectificationOrderDto;
...@@ -24,9 +28,9 @@ import com.yeejoin.amos.boot.module.hygf.api.service.IHygfIcbcService; ...@@ -24,9 +28,9 @@ import com.yeejoin.amos.boot.module.hygf.api.service.IHygfIcbcService;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSON; import net.sf.json.JSON;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -39,11 +43,14 @@ import javax.annotation.Resource; ...@@ -39,11 +43,14 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
...@@ -76,7 +83,7 @@ public class HygfIcbcServiceImpl extends BaseService<HygfIcbcRecordDTO, HygfIcbc ...@@ -76,7 +83,7 @@ public class HygfIcbcServiceImpl extends BaseService<HygfIcbcRecordDTO, HygfIcbc
// private static final String OUT_VENDOR_ID = "071301"; // private static final String OUT_VENDOR_ID = "071301";
// private static final String PROJECT_ID = "PJ14001401B000160171"; // private static final String PROJECT_ID = "PJ14001401B000160171";
// 测试环境 // 测试环境
private static final String APP_ID = "11000000000000009254"; private static final String APP_ID = "11000000000000009254";
private static final String corpNo = "10000000000000088011"; private static final String corpNo = "10000000000000088011";
private static final String MY_PRIVATE_KEY = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCxMt/01YNUsTfG6ml8Nyw7Xs80k3G72mmnD8mpR5v6ZU0v7i8lynBJxqDWFRqo6brZr/yzneyuEM0c+qbhYA4NNgWuri87PFWZND5H249ZpEZPmnZSOg6R7RwiFQG8uhwMTlZwYkNJc6fBFnLvUwMu3pPHINx10iHh7dawbX1GZDKk82gUBaTzYMkg0CW8PtOUdGwW+4uyt5KGWp90MTqS47JmGCLWWwLMW3MhPe8/PBApFdRQi2cdOXHQ+HwleTL7kHXi2XEHnbIxZuOuyXUkiRog4fajs+ZS+o+YgC2JEhGN5om64LrSUXrEyeOZSdHMriKLxsBUbS5AUP8rOvqjAgMBAAECggEBAKwB55YhoK+Yq70ilSzn3b7wBJFTwyaIGOD7mVUCVy3UIf4x5oB3p1JmRoAp0kw/PorLo7CzzykU1BaaVV4XQOygERoEqYKFyc3DAeX9AoUQytPA67Rb+QK8OP/4hkwuGMX1UUEckZZ+d0wev4kDeuaHVsoIYxjX1t4aYrm2PtIRGFLYZvB44Chu8oCK/yesZ9JP+BKKPLJzsx1bEnxZHkQK4IJBWbxSbi/QGiJ254Q4nyinCPUuaRzpiiN/ZmbdLIZ4NYZeQr7sK4wXhgy6XMeMZFHm/WE0EKSBqR82oO6PL/AOR6v9GVMj9kGLfegQHsFyiDJKHzYqj80hX5tyZIkCgYEA6PdmNOpiplNBkg9xxGgSZIWqbRqKBTR51QDB2WPKkC27S7Biy1E+ncz7osSP9X16Y87eKV32ioqJzZ9eND1ri9DnETkPhnYfv4DJRsD3fTHZCtPh274KXASma4DyZnCJY913vjHKqAjJKwl10SR7EFGwQ1LOHKXkLrUa4rASvH0CgYEAwrfxXj+94YnFkialYNbVT3pYdYR0x6b9z70YnYktaZtWZO01hV8lpdpKi/6f5DMIrDC6d9QsjmVXEjZFv1YLlkqEc8FXsThsXWphCr27EtEwymlN90RiIjBInhUh4BrQqMRKbz8CAQgyxiNohEJUVwVlESNSBjfi0eNHFwRg3Z8CgYBE/X73DLJKLz2r04cNcwR/YFYoGUPmZrPtsFu31SWXrPNaZtHbBCRW9u1ONoerW41zIUAJYBoyzPQiQJ/VOJswvJyxLQS7/R9JxwnUOjEQkkKEQlsQiCbpOTdPftBKJemJ+XwMhxJM0M1CQXryhKstGgPo7Ay9zyLT8i4UE7B4wQKBgQCKiNo2Jv2OUDn7sHkq+84J3M7A1XtMbLfZq/yuYGGp6DXAWrAgcsBTToqJLaBOeCysbYLNLGyC5wDa2TgoWCyoQd4YiS89zBn1IHFodfJ6AdFHwUISMVnsXxPbPMe8LPfViso2ecqQN2gAZkK/Dn3458KvPcTm3a4HjD8Q1jGgmwKBgHbzvyt1R38BEGeDhJhqOaBuTeqgChPyQrd1dFRE2VicrTksldel3eHbLgq1iYRyw+l9M66a/03XiCa3yLMIGOn/hOQE7dGxmBI2x44Tf5LugBuQnc5WSXwJ3Qa4+Yjw5yMBL/Hw8hRFlt5ycpy2YyAZ/jdnoNiOuM5koFpQFvfs"; private static final String MY_PRIVATE_KEY = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCxMt/01YNUsTfG6ml8Nyw7Xs80k3G72mmnD8mpR5v6ZU0v7i8lynBJxqDWFRqo6brZr/yzneyuEM0c+qbhYA4NNgWuri87PFWZND5H249ZpEZPmnZSOg6R7RwiFQG8uhwMTlZwYkNJc6fBFnLvUwMu3pPHINx10iHh7dawbX1GZDKk82gUBaTzYMkg0CW8PtOUdGwW+4uyt5KGWp90MTqS47JmGCLWWwLMW3MhPe8/PBApFdRQi2cdOXHQ+HwleTL7kHXi2XEHnbIxZuOuyXUkiRog4fajs+ZS+o+YgC2JEhGN5om64LrSUXrEyeOZSdHMriKLxsBUbS5AUP8rOvqjAgMBAAECggEBAKwB55YhoK+Yq70ilSzn3b7wBJFTwyaIGOD7mVUCVy3UIf4x5oB3p1JmRoAp0kw/PorLo7CzzykU1BaaVV4XQOygERoEqYKFyc3DAeX9AoUQytPA67Rb+QK8OP/4hkwuGMX1UUEckZZ+d0wev4kDeuaHVsoIYxjX1t4aYrm2PtIRGFLYZvB44Chu8oCK/yesZ9JP+BKKPLJzsx1bEnxZHkQK4IJBWbxSbi/QGiJ254Q4nyinCPUuaRzpiiN/ZmbdLIZ4NYZeQr7sK4wXhgy6XMeMZFHm/WE0EKSBqR82oO6PL/AOR6v9GVMj9kGLfegQHsFyiDJKHzYqj80hX5tyZIkCgYEA6PdmNOpiplNBkg9xxGgSZIWqbRqKBTR51QDB2WPKkC27S7Biy1E+ncz7osSP9X16Y87eKV32ioqJzZ9eND1ri9DnETkPhnYfv4DJRsD3fTHZCtPh274KXASma4DyZnCJY913vjHKqAjJKwl10SR7EFGwQ1LOHKXkLrUa4rASvH0CgYEAwrfxXj+94YnFkialYNbVT3pYdYR0x6b9z70YnYktaZtWZO01hV8lpdpKi/6f5DMIrDC6d9QsjmVXEjZFv1YLlkqEc8FXsThsXWphCr27EtEwymlN90RiIjBInhUh4BrQqMRKbz8CAQgyxiNohEJUVwVlESNSBjfi0eNHFwRg3Z8CgYBE/X73DLJKLz2r04cNcwR/YFYoGUPmZrPtsFu31SWXrPNaZtHbBCRW9u1ONoerW41zIUAJYBoyzPQiQJ/VOJswvJyxLQS7/R9JxwnUOjEQkkKEQlsQiCbpOTdPftBKJemJ+XwMhxJM0M1CQXryhKstGgPo7Ay9zyLT8i4UE7B4wQKBgQCKiNo2Jv2OUDn7sHkq+84J3M7A1XtMbLfZq/yuYGGp6DXAWrAgcsBTToqJLaBOeCysbYLNLGyC5wDa2TgoWCyoQd4YiS89zBn1IHFodfJ6AdFHwUISMVnsXxPbPMe8LPfViso2ecqQN2gAZkK/Dn3458KvPcTm3a4HjD8Q1jGgmwKBgHbzvyt1R38BEGeDhJhqOaBuTeqgChPyQrd1dFRE2VicrTksldel3eHbLgq1iYRyw+l9M66a/03XiCa3yLMIGOn/hOQE7dGxmBI2x44Tf5LugBuQnc5WSXwJ3Qa4+Yjw5yMBL/Hw8hRFlt5ycpy2YyAZ/jdnoNiOuM5koFpQFvfs";
...@@ -86,16 +93,20 @@ public class HygfIcbcServiceImpl extends BaseService<HygfIcbcRecordDTO, HygfIcbc ...@@ -86,16 +93,20 @@ public class HygfIcbcServiceImpl extends BaseService<HygfIcbcRecordDTO, HygfIcbc
private static final String APIGW_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB"; private static final String APIGW_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
private static final String OUT_VENDOR_ID = "071301"; private static final String OUT_VENDOR_ID = "071301";
private static final String PROJECT_ID = "PJ14001401B000160171"; private static final String PROJECT_ID = "PJ14001401B000160171";
@Value ("${hygf.icbc.trxLmtAmt:200000}")
private String trxLmtAmt;
@Value ("${hygf.icbc.dayLmtAmt:200000}")
private String dayLmtAmt;
@Value ("${hygf.icbc.loanTotalAmt:200000}")
private String loanTotalAmt;
public void icbcRegisterWalletUrl(HttpServletRequest req, HttpServletResponse resp) {
@Resource (type = PeasantHouseholdServiceImpl.class) @Resource (type = PeasantHouseholdServiceImpl.class)
private PeasantHouseholdServiceImpl peasantHouseholdService; private PeasantHouseholdServiceImpl peasantHouseholdService;
@Resource (type = HygfIcbcRecordMapper.class) @Resource (type = HygfIcbcRecordMapper.class)
private HygfIcbcRecordMapper hygfIcbcRecordMapper; private HygfIcbcRecordMapper hygfIcbcRecordMapper;
@Override
public void icbcRegisterWalletUrl(HttpServletRequest req, HttpServletResponse resp) { public void icbcRegisterWalletUrl(HttpServletRequest req, HttpServletResponse resp) {
try { try {
UiIcbcClient client = new UiIcbcClient(APP_ID, IcbcConstants.SIGN_TYPE_RSA2, MY_PRIVATE_KEY, IcbcConstants.CHARSET_UTF8); UiIcbcClient client = new UiIcbcClient(APP_ID, IcbcConstants.SIGN_TYPE_RSA2, MY_PRIVATE_KEY, IcbcConstants.CHARSET_UTF8);
...@@ -119,17 +130,22 @@ public class HygfIcbcServiceImpl extends BaseService<HygfIcbcRecordDTO, HygfIcbc ...@@ -119,17 +130,22 @@ public class HygfIcbcServiceImpl extends BaseService<HygfIcbcRecordDTO, HygfIcbc
bizContent.setBusiCode(userId); // 缴费编号 bizContent.setBusiCode(userId); // 缴费编号
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
Date date = new Date();//当前时间 Date date = new Date();// 当前时间
calendar.setTime(date); calendar.setTime(date);
int year = 26;//26年 int year = 26;// 26年
calendar.add(Calendar.YEAR, year);//在年份增加 calendar.add(Calendar.YEAR, year);// 在年份增加
Date newDate = calendar.getTime(); Date newDate = calendar.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(newDate); String formattedDate = formatter.format(newDate);
bizContent.setProtocolEndDate(formattedDate); // 协议到期日 bizContent.setProtocolEndDate(formattedDate); // 协议到期日
bizContent.setProtocolLimitAmount("99999999999999999"); // 协议累计额 bizContent.setProtocolLimitAmount("99999999999999999"); // 协议累计额
// bizContent.setTemplateParams(); JSONObject templateParams = new JSONObject();
templateParams.put("prtl_enddate", formattedDate);
templateParams.put("loan_total_amt", loanTotalAmt);
templateParams.put("trx_lmt_amt", trxLmtAmt);
templateParams.put("day_lmt_amt", dayLmtAmt);
bizContent.setTemplateParams(templateParams.toJSONString());
// bizContent.setCallbackUrl("https://www.icbc.com.cn/notify"); // bizContent.setCallbackUrl("https://www.icbc.com.cn/notify");
bizContent.setCamsPublicKey(CAMS_PUBLIC_KEY); bizContent.setCamsPublicKey(CAMS_PUBLIC_KEY);
...@@ -146,32 +162,16 @@ public class HygfIcbcServiceImpl extends BaseService<HygfIcbcRecordDTO, HygfIcbc ...@@ -146,32 +162,16 @@ public class HygfIcbcServiceImpl extends BaseService<HygfIcbcRecordDTO, HygfIcbc
out.write("</body>"); out.write("</body>");
out.write("</html>"); out.write("</html>");
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(),e); log.error(e.getMessage(), e);
throw new BadRequest("报错了"); throw new BadRequest("报错了");
} }
} }
public HygfIcbcRecordDTO registerWalletCallback(HygfIcbcRecordDTO hygfIcbcRecordDTO) { public JftApiUserEntrustopenacctQueryResponseV1 getHygfIcbcWalletInfo(String userId) {
return this.createWithModel(hygfIcbcRecordDTO);
}
public HygfIcbcRecordDTO getObject(Long sequenceNbr) { // String userId = req.getParameter("userId");
HygfIcbcRecordDTO hygfIcbcRecordDTO = this.queryBySeq(sequenceNbr);
return hygfIcbcRecordDTO;
}
public List<HygfIcbcRecordDTO> listObject(HygfIcbcRecordQueryDTO hygfIcbcRecordQueryDTO) {
List<HygfIcbcRecordDTO> list = hygfIcbcRecordMapper.listObject(hygfIcbcRecordQueryDTO);
return toModels(list);
}
}
public JftApiUserEntrustopenacctQueryResponseV1 getHygfIcbcWalletInfo(HttpServletRequest req, HttpServletResponse resp) {
String userId = req.getParameter("userId");
DefaultIcbcClient client = new DefaultIcbcClient( DefaultIcbcClient client = new DefaultIcbcClient(
...@@ -202,7 +202,54 @@ public class HygfIcbcServiceImpl extends BaseService<HygfIcbcRecordDTO, HygfIcbc ...@@ -202,7 +202,54 @@ public class HygfIcbcServiceImpl extends BaseService<HygfIcbcRecordDTO, HygfIcbc
e.printStackTrace(); e.printStackTrace();
return null; return null;
} }
}
public Object registerWalletCallback(HttpServletRequest request, HttpServletResponse response) throws Exception {
log.info("验签");
boolean verifyFlag = verifySignData(request, "/[需替换]合作方通知路径A/[需替换]合作方通知路径B");
String returnJson;
// 获取其他参数略...
if (verifyFlag) {// 验签成功
log.info("解密...");
String biz_content = request.getParameter("biz_content");
String decode = URLDecoder.decode(biz_content, "utf-8");
Map<String, String> data = JSONObject.parseObject(decode, Map.class);
// 其中certNo、custName、newPayAcc字段进行了base64编码,可以调用示例代码中的base64Decode进行解码
String custName = base64Decode(data.get("custName"));
String certNo = base64Decode(data.get("certNo"));
String newPayAcc = base64Decode(data.get("newPayAcc"));
String outUserId = data.get("outUserId");
String projectId = data.get("projectId");
String openAccoutSucceedFlag = data.get("openAccoutSucceedFlag");
String signEntrsutPrtlSucceedFlag = data.get("signEntrsutPrtlSucceedFlag");
// 获取其他参数略...
//...
JftApiUserEntrustopenacctQueryResponseV1 jftApiUserEntrustopenacctQueryResponseV1 = this.getHygfIcbcWalletInfo(outUserId);
System.out.println(jftApiUserEntrustopenacctQueryResponseV1);
log.info("解密后参数:{}", data);// 进行自己的处理,此处默认处理成功,返回通知方成功,return_code=0
String copReturnCode = "0";// 通知合作方接收成功的返回码,固定
String copReturnMsg = "success";// 合作方的返回信息,固定
returnJson = sign(request, copReturnCode, copReturnMsg);
log.error("通知响应json结果:{}", returnJson);
return returnJson;
} else {// 验签失败
String copReturnCode = "‐12345";
String copReturnMsg = "icbc jft sign not pass.";
returnJson = sign(request, copReturnCode, copReturnMsg);
log.error("通知响应json结果:{}", returnJson);
}
return returnJson;
}
public HygfIcbcRecordDTO getObject(Long sequenceNbr) {
HygfIcbcRecordDTO hygfIcbcRecordDTO = this.queryBySeq(sequenceNbr);
return hygfIcbcRecordDTO;
}
public List<HygfIcbcRecordDTO> listObject(HygfIcbcRecordQueryDTO hygfIcbcRecordQueryDTO) {
List<HygfIcbcRecordDTO> list = hygfIcbcRecordMapper.listObject(hygfIcbcRecordQueryDTO);
return toModels(list);
}
public Page<HygfIcbcRecordDTO> queryForPage(int current, int size, HygfIcbcRecordQueryDTO hygfIcbcRecordQueryDTO) { public Page<HygfIcbcRecordDTO> queryForPage(int current, int size, HygfIcbcRecordQueryDTO hygfIcbcRecordQueryDTO) {
PageHelper.startPage(current, size); PageHelper.startPage(current, size);
...@@ -232,4 +279,79 @@ public class HygfIcbcServiceImpl extends BaseService<HygfIcbcRecordDTO, HygfIcbc ...@@ -232,4 +279,79 @@ public class HygfIcbcServiceImpl extends BaseService<HygfIcbcRecordDTO, HygfIcbc
return hygfIcbcRecordDTO; return hygfIcbcRecordDTO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
/**
* 验签方法
*
* @param request
* @param path
* @return
* @throws Exception
*/
private boolean verifySignData(HttpServletRequest request, String path) throws Exception {
// 网关公钥
Map<String, String> params = new HashMap<>();
String api = request.getParameter("api");
String from = request.getParameter("from");
String app_id = request.getParameter("app_id");
String charset = request.getParameter("charset");
String format = request.getParameter("format");
String encrypt_type = request.getParameter("encrypt_type");
String timestamp = request.getParameter("timestamp");
String biz_content = request.getParameter("biz_content");
String sign_type = request.getParameter("sign_type");
String sign = request.getParameter("sign");
params.put("from", from);
params.put("api", api);
params.put("app_id", app_id);
params.put("charset", charset);
params.put("format", format);
params.put("encrypt_type", encrypt_type);
params.put("timestamp", timestamp);
params.put("biz_content", biz_content);
params.put("sign_type", sign_type);// 目前上行网关签名暂时仅支持RSA
/**********验证工行上行网关RSA签名**********/
String signStr = WebUtils.buildOrderedSignStr(path, params);
log.error("验签入参,signStr:[[{}]], sign_type:[[{}]], APIGW_PUBLIC_KEY: [[{}]],charset:[[{}]],sign:[[{}]]", signStr, sign_type, APIGW_PUBLIC_KEY, charset, sign);
boolean flag = IcbcSignature.verify(signStr, sign_type, APIGW_PUBLIC_KEY, charset, sign);
log.error("验签结果:[[{}]]", flag);
return flag;
}
/**
* 加签方法
*
* @param request
* @param copReturnCode
* @param copReturnMsg
* @return
* @throws Exception
*/
private String sign(HttpServletRequest request, String copReturnCode, String copReturnMsg) throws Exception {
String msg_id = new SimpleDateFormat("yyyyMMdd").format(new Date()) + new SimpleDateFormat("HHmmss").format(new Date());
String responseBizContent = "{\"return_code\":\"" + copReturnCode + "\",\"return_msg\":\"" + copReturnMsg + "\"" + ",\"msg_id\":\"" + msg_id + "\"}";
String charset = request.getParameter("charset");// 调用过程使用的编码格式
/**********商户对消息返回响应进行签名,签名方式需与在API平台登记APP的sign_type保持一致(目前基本都是RSA2)**********/
String signType = IcbcConstants.SIGN_TYPE_RSA2;
String signStr = "\"response_biz_content\":" + responseBizContent + "," + "\"sign_type\":" + "\"" + signType + "\"";
String signParam = IcbcSignature.sign(signStr, signType, MY_PRIVATE_KEY, charset);
String returnJson = "{\"response_biz_content\":" + responseBizContent + ",\"sign_type\":\"" + signType + "\"" + ",\"sign\":\"" + signParam + "\"}";
return returnJson;
}
/**
* base64Decode
*
* @param str
* @return
* @throws UnsupportedEncodingException
*/
public String base64Decode(String str) throws UnsupportedEncodingException {
if (str == null || "".equals(str)) {
return "";
}
char[] ch = str.toCharArray();
byte[] bt = Base64.decode(String.valueOf(ch));
return new String(bt, "UTF-8");
}
} }
\ No newline at end of file
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