8 files modified
	
		
		3 files added
	
	
 
	
	
	
	
	
	
	
	
 |  |  | 
 |  |  | @Getter | 
 |  |  | public enum DataDictionaryEnum { | 
 |  |  |     /** | 
 |  |  |      * 银行转账设置-客户号 | 
 |  |  |      */ | 
 |  |  |     BANK_TRANS_softwareId("BANK_TRANS_SET","BANK_TRANS_softwareId"), | 
 |  |  |     /** | 
 |  |  |      * 银行转账设置-客户号 | 
 |  |  |      */ | 
 |  |  |     BANK_TRANS_customerId("BANK_TRANS_SET","BANK_TRANS_customerId"), | 
 |  |  |     /** | 
 |  |  |      * 银行转账设置-付款账号 | 
 |  |  |      */ | 
 |  |  |     BANK_TRANS_FKZH("BANK_TRANS_SET","BANK_TRANS_FKZH"), | 
 |  |  |     /** | 
 |  |  |      * 银行转账设置-签名端口 | 
 |  |  |      */ | 
 |  |  |     BANK_TRANS_VERIFY_PORT("BANK_TRANS_SET","BANK_TRANS_VERIFY_PORT"), | 
 |  |  |     /** | 
 |  |  |      * 银行转账设置-签名ip | 
 |  |  |      */ | 
 |  |  |     BANK_TRANS_VERIFY_IP("BANK_TRANS_SET","BANK_TRANS_VERIFY_IP"), | 
 |  |  |     /** | 
 |  |  |      * 银行转账设置-接收报文url | 
 |  |  |      */ | 
 |  |  |     BANK_TRANS_URL("BANK_TRANS_SET","BANK_TRANS_URL"), | 
 |  |  |     /** | 
 |  |  |      * 星级补贴百分比 | 
 |  |  |      */ | 
 |  |  |     PERK_AGENT_ACHIEVE_PERCENT("PERK_SET","PERK_AGENT_ACHIEVE_PERCENT"), | 
 
 |  |  | 
 |  |  |     @PostMapping(value = "/cashOutSetting") | 
 |  |  |     public FebsResponse cashOutSetting(CashOutSettingDto cashOutSettingDto) { | 
 |  |  |         commonService.addDataDic(DataDictionaryEnum.CASHOUT_SETTING.getType(), DataDictionaryEnum.CASHOUT_SETTING.getCode(), cashOutSettingDto, "提现设置"); | 
 |  |  |  | 
 |  |  |         commonService.updateDataDic( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_URL.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_URL.getCode(), | 
 |  |  |                 cashOutSettingDto.getUrlStr()); | 
 |  |  |         commonService.updateDataDic( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_VERIFY_IP.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_VERIFY_IP.getCode(), | 
 |  |  |                 cashOutSettingDto.getVerifyIp()); | 
 |  |  |         commonService.updateDataDic( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_VERIFY_PORT.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_VERIFY_PORT.getCode(), | 
 |  |  |                 cashOutSettingDto.getVerifyPort()); | 
 |  |  |         commonService.updateDataDic( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_FKZH.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_FKZH.getCode(), | 
 |  |  |                 cashOutSettingDto.getFkzh()); | 
 |  |  |         commonService.updateDataDic( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_customerId.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_customerId.getCode(), | 
 |  |  |                 cashOutSettingDto.getCustomerId()); | 
 |  |  |         commonService.updateDataDic( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_softwareId.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_softwareId.getCode(), | 
 |  |  |                 cashOutSettingDto.getSoftwareId()); | 
 |  |  |         return new FebsResponse().success(); | 
 |  |  |     } | 
 |  |  |  | 
 
 |  |  | 
 |  |  |     @RequiresPermissions("cashOutSetting:update") | 
 |  |  |     public String cashOutSetting(Model model) { | 
 |  |  |         DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.CASHOUT_SETTING.getType(), DataDictionaryEnum.CASHOUT_SETTING.getCode()); | 
 |  |  |         if (dic != null) { | 
 |  |  |             model.addAttribute("cashout", JSONObject.parseObject(dic.getValue(), CashOutSettingDto.class)); | 
 |  |  |         CashOutSettingDto cashOutSettingDto = JSONObject.parseObject(dic.getValue(), CashOutSettingDto.class); | 
 |  |  |  | 
 |  |  |         DataDictionaryCustom urlDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_URL.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_URL.getCode()); | 
 |  |  |         if (urlDic != null) { | 
 |  |  |             cashOutSettingDto.setUrlStr(urlDic.getValue()); | 
 |  |  |         } | 
 |  |  |         DataDictionaryCustom verifyIpDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_VERIFY_IP.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_VERIFY_IP.getCode()); | 
 |  |  |         if (verifyIpDic != null) { | 
 |  |  |             cashOutSettingDto.setVerifyIp(verifyIpDic.getValue()); | 
 |  |  |         } | 
 |  |  |         DataDictionaryCustom verifyPortDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_VERIFY_PORT.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_VERIFY_PORT.getCode()); | 
 |  |  |         if (verifyPortDic != null) { | 
 |  |  |             cashOutSettingDto.setVerifyPort(verifyPortDic.getValue()); | 
 |  |  |         } | 
 |  |  |         DataDictionaryCustom fkzhDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_FKZH.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_FKZH.getCode()); | 
 |  |  |         if (fkzhDic != null) { | 
 |  |  |             cashOutSettingDto.setFkzh(fkzhDic.getValue()); | 
 |  |  |         } | 
 |  |  |         DataDictionaryCustom customerIdDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_customerId.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_customerId.getCode()); | 
 |  |  |         if (customerIdDic != null) { | 
 |  |  |             cashOutSettingDto.setCustomerId(customerIdDic.getValue()); | 
 |  |  |         } | 
 |  |  |         DataDictionaryCustom softwareIdDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_softwareId.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_softwareId.getCode()); | 
 |  |  |         if (softwareIdDic != null) { | 
 |  |  |             cashOutSettingDto.setSoftwareId(softwareIdDic.getValue()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         model.addAttribute("cashout", cashOutSettingDto); | 
 |  |  |         return FebsUtil.view("modules/system/cashOutSetting"); | 
 |  |  |     } | 
 |  |  |  | 
 
 |  |  | 
 |  |  |     private Integer workingDays; | 
 |  |  |     //互转手续费率 | 
 |  |  |     private Integer insideFee; | 
 |  |  |     private String urlStr; | 
 |  |  |     private String verifyIp; | 
 |  |  |     private String verifyPort; | 
 |  |  |     private String fkzh; | 
 |  |  |     private String customerId; | 
 |  |  |     private String softwareId; | 
 |  |  | } | 
 
 |  |  | 
 |  |  |      */ | 
 |  |  |     public static final String mchSerialNo = "01848940fd41"; | 
 |  |  |  | 
 |  |  |     public static final String mchSerialNo_prd = "01848940fd41"; | 
 |  |  |     public static final String mchSerialNo_prd = "018804e5ecd9"; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 商户号 | 
 |  |  | 
 |  |  |                         return "FAIL"; | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |                     Object trade_info_list = respDataChild.get("order_trade_info_list"); | 
 |  |  |                     JSONObject respChild = JSONUtil.parseObj(trade_info_list); | 
 |  |  |                     String tradeStatus = respChild.get("trade_status").toString(); | 
 |  |  |                     String tradeStatus = respDataChild.getJSONArray("order_trade_info_list").getJSONObject(0).get("trade_status").toString(); | 
 |  |  |                     if(!"S".equals(tradeStatus)){ | 
 |  |  |                         return "FAIL"; | 
 |  |  |                     } | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static void main(String[] args) { | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * {"req_time":"20221026100323", | 
 |  |  |      * "version":"1.0", | 
 |  |  |      * "req_data":{ | 
 |  |  |      *      "out_order_no":"GHSNVDY8033038232443530", | 
 |  |  |      *      "merchant_no":"8222900701107M5", | 
 |  |  |      *      "total_amount":1, | 
 |  |  |      *      "order_efficient_time":"20221118220823", | 
 |  |  |      *      "notify_url":"", | 
 |  |  |      *      "support_cancel":0, | 
 |  |  |      *      "support_refund":1, | 
 |  |  |      *      "support_repeat_pay":1, | 
 |  |  |      *      "order_info":"测试"}} | 
 |  |  |      */ | 
 |  |  |         LaKaLaCreateOrderReqDate laKaLaCreateOrderReqDate = new LaKaLaCreateOrderReqDate(); | 
 |  |  |         laKaLaCreateOrderReqDate.setOut_order_no("GHSNVDY8033038232443530"); | 
 |  |  |  | 
 |  |  |         LaKaLaBasicReqDate laKaLaBasicReqDate = new LaKaLaBasicReqDate(); | 
 |  |  |         laKaLaBasicReqDate.setReq_time(DateUtil.format(new Date(),"yyyyMMddHHmmss")); | 
 |  |  |         laKaLaBasicReqDate.setVersion("3.0"); | 
 |  |  |         JSONObject jsonObject = JSONUtil.parseObj(laKaLaCreateOrderReqDate); | 
 |  |  |         laKaLaBasicReqDate.setReq_data(jsonObject); | 
 |  |  |  | 
 |  |  |         String s = "{\n" + | 
 |  |  |                 "    \"code\":\"000000\",\n" + | 
 |  |  |                 "    \"msg\":\"操作成功\",\n" + | 
 |  |  |                 "    \"resp_time\":\"20230419151705\",\n" + | 
 |  |  |                 "    \"resp_data\":{\n" + | 
 |  |  |                 "        \"merchant_no\":\"8222900701107M5\",\n" + | 
 |  |  |                 "        \"channel_id\":\"95\",\n" + | 
 |  |  |                 "        \"out_order_no\":\"HLM20230419151704\",\n" + | 
 |  |  |                 "        \"order_create_time\":\"20230419151705\",\n" + | 
 |  |  |                 "        \"order_efficient_time\":\"20230419161704\",\n" + | 
 |  |  |                 "        \"pay_order_no\":\"23041911012001101011000965837\",\n" + | 
 |  |  |                 "        \"total_amount\":\"1\",\n" + | 
 |  |  |                 "        \"counter_url\":\"http://q.huijingcai.top/r/0000?pageStyle%3DV2%26token%3DCCSSIZlwnaqWmBw3FHY5U40nGcX7pxoKuxVhhVI7XyulHEUboR1I0VTIqJRMAjgj3IjCMWvoWjp9%2BXHpkA%3D%3D%26amount%3D1%26payOrderNo%3D23041911012001101011000965837\"\n" + | 
 |  |  |                 "    }\n" + | 
 |  |  |                 "}"; | 
 |  |  |  | 
 |  |  |         String s = "{\"code\":\"000000\"," + | 
 |  |  |                 "\"msg\":\"操作成功\"," + | 
 |  |  |                 "\"resp_time\":\"20230510154634\"," + | 
 |  |  |                 "\"resp_data\":{\"pay_order_no\":\"23051011012001101011000969911\"," + | 
 |  |  |                 "\"out_order_no\":\"2023051015455302379\"," + | 
 |  |  |                 "\"channel_id\":\"95\"," + | 
 |  |  |                 "\"trans_merchant_no\":\"8222900701107M5\"," + | 
 |  |  |                 "\"trans_term_no\":\"A1062976\"," + | 
 |  |  |                 "\"merchant_no\":\"8222900701107M5\"," + | 
 |  |  |                 "\"term_no\":\"A1062976\"," + | 
 |  |  |                 "\"order_status\":\"2\"," + | 
 |  |  |                 "\"order_info\":\"礼包一\"," + | 
 |  |  |                 "\"total_amount\":1," + | 
 |  |  |                 "\"order_create_time\":\"20230510154556\"," + | 
 |  |  |                 "\"order_efficient_time\":\"20230510164555\"," + | 
 |  |  |                 "\"settle_type\":\"0\"," + | 
 |  |  |                 "\"split_mark\":\"\"," + | 
 |  |  |                 "\"counter_param\":null," + | 
 |  |  |                 "\"counter_remark\":null," + | 
 |  |  |                 "\"busi_type_param\":\"\"," + | 
 |  |  |                 "\"sgn_info\":[]," + | 
 |  |  |                 "\"goods_mark\":\"\"," + | 
 |  |  |                 "\"goods_field\":\"\"," + | 
 |  |  |                 "\"order_trade_info_list\":[{\"trade_no\":\"2023051066210308370172\"," + | 
 |  |  |                 "\"log_No\":\"66210308370172\"," + | 
 |  |  |                 "\"trade_ref_no\":\"\"," + | 
 |  |  |                 "\"trade_type\":\"PAY\"," + | 
 |  |  |                 "\"trade_status\":\"S\"," + | 
 |  |  |                 "\"trade_amount\":1,\"payer_amount\":1,\"user_id1\":\"oLvoQ5W-MMaepM5fIf2XGOkatAzQ\",\"user_id2\":\"oUpF8uPxTeOlCA4eunIiiK6vZ9IA\",\"busi_type\":\"SCPAY\",\"trade_time\":\"20230510154610\",\"acc_trade_no\":\"4200001884202305101607494108\",\"payer_account_no\":\"\",\"payer_name\":\"\",\"payer_account_bank\":\"\",\"acc_type\":\"99\",\"pay_mode\":\"WECHAT\",\"client_batch_no\":\"\",\"client_seq_no\":\"\",\"settle_merchant_no\":\"8222900701107M5\",\"settle_term_no\":\"A1062976\",\"origin_trade_no\":\"\",\"auth_code\":\"\",\"bank_type\":\"OTHERS\"}]}}"; | 
 |  |  |         JSONObject parseObj = JSONUtil.parseObj(s); | 
 |  |  |         String code = parseObj.get("code").toString(); | 
 |  |  |         if("000000".equals(code)){ | 
 |  |  |             Object respData = parseObj.get("resp_data"); | 
 |  |  |             JSONObject respDataChild = JSONUtil.parseObj(respData); | 
 |  |  |  | 
 |  |  |         Object respData = parseObj.get("resp_data"); | 
 |  |  |  | 
 |  |  |         JSONObject respDataChild = JSONUtil.parseObj(respData); | 
 |  |  |         String counterUrl = respDataChild.get("counter_url").toString(); | 
 |  |  |         System.out.println(counterUrl); | 
 |  |  |  | 
 |  |  |             System.out.println(respDataChild); | 
 |  |  | //            String orderStatusQuery = respDataChild.get("order_status").toString(); | 
 |  |  |             String orderStatusQuery = respDataChild.get("order_trade_info_list").toString(); | 
 |  |  |             System.out.println(orderStatusQuery); | 
 |  |  |             String tradeStatus = respDataChild.getJSONArray("order_trade_info_list").getJSONObject(0).get("trade_status").toString(); | 
 |  |  |             System.out.println(tradeStatus); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public HttpResponse post(String url, String message, String authorization) throws Exception { | 
 
 |  |  | 
 |  |  | package cc.mrbird.febs.pay.service.impl; | 
 |  |  |  | 
 |  |  | import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; | 
 |  |  | import cc.mrbird.febs.common.utils.RedisUtils; | 
 |  |  | import cc.mrbird.febs.mall.entity.DataDictionaryCustom; | 
 |  |  | import cc.mrbird.febs.mall.entity.MallMemberBank; | 
 |  |  | import cc.mrbird.febs.mall.entity.MallMemberWithdraw; | 
 |  |  | import cc.mrbird.febs.mall.entity.MallMemberWithdrawMsg; | 
 |  |  | import cc.mrbird.febs.mall.mapper.MallMemberBankMapper; | 
 |  |  | import cc.mrbird.febs.mall.mapper.MallMemberWithdrawMapper; | 
 |  |  | import cc.mrbird.febs.mall.mapper.MallMemberWithdrawMsgMapper; | 
 |  |  | import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; | 
 |  |  | import cc.mrbird.febs.mall.mapper.*; | 
 |  |  | import cc.mrbird.febs.pay.model.NBYHResponse; | 
 |  |  | import cc.mrbird.febs.pay.service.NBYHService; | 
 |  |  | import cn.hutool.core.util.ObjectUtil; | 
 |  |  | import lombok.RequiredArgsConstructor; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | 
 |  |  |  | 
 |  |  | @Slf4j | 
 |  |  | @Service | 
 |  |  | @RequiredArgsConstructor | 
 |  |  | public class NBYHServiceImpl implements NBYHService { | 
 |  |  |     /** | 
 |  |  |      * 登录报文原文 | 
 |  |  | 
 |  |  |      */ | 
 |  |  | //    private static final String URL = "http://127.0.0.1:9080/directlink/httpAccess"; | 
 |  |  |     private static final String URL = "http://n5z7ej.natappfree.cc/directlink/httpAccess"; | 
 |  |  |  | 
 |  |  |     private final DataDictionaryCustomMapper dataDictionaryCustomMapper; | 
 |  |  |     /** | 
 |  |  |      * 签名ip | 
 |  |  |      */ | 
 |  |  | 
 |  |  |     /** | 
 |  |  |      * 签名端口 | 
 |  |  |      */ | 
 |  |  |     private static final int VERIFY_PORT = 41933; | 
 |  |  |     private static final int VERIFY_PORT = 39296; | 
 |  |  | //    private static final int VERIFY_PORT = 8010; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |  | 
 |  |  |     public static void main(String[] args) { | 
 |  |  |         try { | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             InetAddress addr = InetAddress.getByName(VERIFY_IP); | 
 |  |  |             Socket socket = new Socket(addr, VERIFY_PORT); | 
 |  |  | 
 |  |  |      * @throws Exception | 
 |  |  |      */ | 
 |  |  |     @SuppressWarnings("rawtypes") | 
 |  |  |     public static String executeServerHttpService(String requestData) throws Exception { | 
 |  |  |     public String executeServerHttpService(String requestData) throws Exception { | 
 |  |  | //    public static void executeServerHttpService(String serviceId, String serviceName, String serialNo,String requestData) throws Exception { | 
 |  |  |         // 处理交易的url | 
 |  |  |         java.net.URL url = new URL(URL); | 
 |  |  |         DataDictionaryCustom urlDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_URL.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_URL.getCode() | 
 |  |  |         ); | 
 |  |  |         StringBuffer urlSb = new StringBuffer(); | 
 |  |  |         urlSb.append("http://"); | 
 |  |  |         urlSb.append(urlDic.getValue()); | 
 |  |  |         urlSb.append("/directlink/httpAccess"); | 
 |  |  |         java.net.URL url = new URL(urlSb.toString()); | 
 |  |  | //        java.net.URL url = new URL(URL); | 
 |  |  |         HttpURLConnection connection = (HttpURLConnection) url.openConnection(); | 
 |  |  |         if (cookies != null) { | 
 |  |  |             // 如果已登录,设置coikie | 
 |  |  | 
 |  |  |      * @throws FileNotFoundException | 
 |  |  |      * @throws IOException | 
 |  |  |      */ | 
 |  |  |     public static String getRequestDataForWithDraw(String serviceId, String serviceName,MallMemberWithdraw mallMemberWithdraw,MallMemberBank mallMemberBank) | 
 |  |  |     public String getRequestDataForWithDraw(String serviceId, String serviceName,MallMemberWithdraw mallMemberWithdraw,MallMemberBank mallMemberBank) | 
 |  |  |             throws FileNotFoundException, IOException { | 
 |  |  |         StringBuffer buf = new StringBuffer(); | 
 |  |  |         // 报文编码格式utf-8 | 
 |  |  | 
 |  |  |         buf.append(serviceId); | 
 |  |  |         buf.append("</serviceId>"); | 
 |  |  |         String reqData = ""; | 
 |  |  |         DataDictionaryCustom fkzhDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_FKZH.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_FKZH.getCode() | 
 |  |  |         ); | 
 |  |  |         DataDictionaryCustom customerIdDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_customerId.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_customerId.getCode() | 
 |  |  |         ); | 
 |  |  |         DataDictionaryCustom softwareIdDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_softwareId.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_softwareId.getCode() | 
 |  |  |         ); | 
 |  |  |         if (serviceId.equals("srv001_signOn")) { | 
 |  |  |             reqData = SIGN_MESSAGE; | 
 |  |  |         } else if (serviceId.equals("srv006_singleInnerTransfer")) { | 
 |  |  | 
 |  |  |              * </opReq> | 
 |  |  |              * * | 
 |  |  |              */ | 
 |  |  |             reqData = reqData.replaceFirst("\\$\\{FKZH\\}", FKZH); | 
 |  |  |             reqData = reqData.replaceFirst("\\$\\{FKZH\\}", fkzhDic.getValue()); | 
 |  |  |             reqData = reqData.replaceFirst("\\$\\{SKZH\\}", mallMemberBank.getBankNo()); | 
 |  |  |             reqData = reqData.replaceFirst("\\$\\{SKHM\\}", mallMemberBank.getName()); | 
 |  |  |             if(mallMemberWithdraw.getRemark().equals("凭证提现")){ | 
 |  |  | 
 |  |  |              */ | 
 |  |  |             reqData = TRADE_MESSAGE; | 
 |  |  |  | 
 |  |  |             reqData = reqData.replaceFirst("\\$\\{FKZH\\}", FKZH); | 
 |  |  |             reqData = reqData.replaceFirst("\\$\\{FKZH\\}", fkzhDic.getValue()); | 
 |  |  |             reqData = reqData.replaceFirst("\\$\\{SKZH\\}", mallMemberBank.getBankNo()); | 
 |  |  |             reqData = reqData.replaceFirst("\\$\\{SKHM\\}", mallMemberBank.getName()); | 
 |  |  |             reqData = reqData.replaceFirst("\\$\\{SKYH\\}", mallMemberBank.getBankName()+mallMemberBank.getSubbranchName()); | 
 |  |  | 
 |  |  |              * <opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><ZHHA>${ZHHA}</ZHHA></ReqParam></opReq> | 
 |  |  |              */ | 
 |  |  |             //原订单流水号 | 
 |  |  |             reqData = reqData.replaceFirst("\\$\\{ZHHA\\}", FKZH); | 
 |  |  |             reqData = reqData.replaceFirst("\\$\\{ZHHA\\}", fkzhDic.getValue()); | 
 |  |  |         } | 
 |  |  | //        String serialNo = String.valueOf(Math.round(Math.random() * 10000)) | 
 |  |  | //                + System.currentTimeMillis(); | 
 |  |  | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         buf.append("<customerId>"); | 
 |  |  |         buf.append(customerId); | 
 |  |  |         buf.append(customerIdDic.getValue()); | 
 |  |  |         buf.append("</customerId>"); | 
 |  |  |         buf.append("<softwareId>"); | 
 |  |  |         buf.append(softwareId); | 
 |  |  |         buf.append(softwareIdDic.getValue()); | 
 |  |  |         buf.append("</softwareId>"); | 
 |  |  |         buf.append("<functionId>"); | 
 |  |  |         buf.append(serviceId.substring(0, 6)); | 
 |  |  | 
 |  |  |      * @return | 
 |  |  |      * @throws UnsupportedEncodingException | 
 |  |  |      */ | 
 |  |  |     public static String signData(String orignalData) | 
 |  |  |     public String signData(String orignalData) | 
 |  |  |             throws UnsupportedEncodingException { | 
 |  |  |         InetAddress addr = null; | 
 |  |  |         Socket socket = null; | 
 |  |  | 
 |  |  |                 + "<origin_data_len>" + orignalData.getBytes("GBK").length | 
 |  |  |                 + "</origin_data_len>\n" + "<origin_data>" + orignalData | 
 |  |  |                 + "</origin_data>\n" + "</msg_body>\n" + "</msg>"; | 
 |  |  |  | 
 |  |  |         DataDictionaryCustom VERIFY_IPDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_VERIFY_IP.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_VERIFY_IP.getCode() | 
 |  |  |         );DataDictionaryCustom VERIFY_PORT_Dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_VERIFY_PORT.getType(), | 
 |  |  |                 DataDictionaryEnum.BANK_TRANS_VERIFY_PORT.getCode() | 
 |  |  |         ); | 
 |  |  |         try { | 
 |  |  |             addr = InetAddress.getByName(VERIFY_IP); | 
 |  |  |             socket = new Socket(addr, VERIFY_PORT); | 
 |  |  |             addr = InetAddress.getByName(VERIFY_IPDic.getValue()); | 
 |  |  |             socket = new Socket(addr, Integer.parseInt(VERIFY_PORT_Dic.getValue())); | 
 |  |  | //            InetAddress localHost = addr.getLocalHost(); | 
 |  |  | //            socket = new Socket(localHost, VERIFY_PORT); | 
 |  |  |             // 发送 | 
 
| New file | 
 |  |  | 
 |  |  | -----BEGIN CERTIFICATE----- | 
 |  |  | MIIDoDCCAoigAwIBAgIGAYgE5ezZMA0GCSqGSIb3DQEBBQUAMGAxFDASBgNVBAMM | 
 |  |  | C0xBS0FMQS1MQU9QMQswCQYDVQQGEwJDTjEXMBUGA1UECgwOTGFrYWxhIENvLixM | 
 |  |  | dGQxDzANBgNVBAsMBkxLTC1ZRjERMA8GA1UEBwwIc2hhbmdoYWkwHhcNMjMwNTEw | 
 |  |  | MDkwMjM3WhcNMzMwNTEwMDkwMjM3WjBgMRQwEgYDVQQDDAtMQUtBTEEtTEFPUDEL | 
 |  |  | MAkGA1UEBhMCQ04xFzAVBgNVBAoMDkxha2FsYSBDby4sTHRkMQ8wDQYDVQQLDAZM | 
 |  |  | S0wtWUYxETAPBgNVBAcMCHNoYW5naGFpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A | 
 |  |  | MIIBCgKCAQEAhGqQ9TRIdrHHeffmqqXRe/x2UNoD/lzTQsCUlUh1quwvoahHaqeU | 
 |  |  | cbmbjYKJlnJK8EDy1VrF+M0YmWDGhFUesVLe4HexyYFgIJMha51kz7/HM2lyjEcq | 
 |  |  | DYXJqfGpuUzq8U9bgbIskvlRCGjfx1vg+zTNH70KVBQLrzuOSJuQKIFEbEuU5Gms | 
 |  |  | MdxCecvm5hjlqMP7JxuQQaCkULUClu9LYxub4oyjIiSY0gqKKpfI3VEVmdu2dvsr | 
 |  |  | Hp0/ySbDAiocddc0oZ2utxwwQYOtMN2uH6SPObidrkBJ/Rb02jEuFXKjZWGUuv0T | 
 |  |  | a1QftH5hCb7rLzhCG6VvcSwvpepkXtHXIQIDAQABo2AwXjAPBgNVHRMECDAGAQH/ | 
 |  |  | AgEAMB8GA1UdIwQYMBaAFGK3owb/1UEa3uYyZU2/5TTPsLlIMB0GA1UdDgQWBBRi | 
 |  |  | t6MG/9VBGt7mMmVNv+U0z7C5SDALBgNVHQ8EBAMCBsAwDQYJKoZIhvcNAQEFBQAD | 
 |  |  | ggEBAD9Lae2EuSFgCwsPcuSZEtvtL33s8/HagvjD5vkRr584SJfs90US1P013J0Y | 
 |  |  | lN8LtutEo3CjPVJUfsltIleD0Dnh4seJuJ3SCorTXzTt0GNL5jqazJrJJHKgjrt4 | 
 |  |  | kh5P94uoX5ujZxNEtav/o4rhVtcAfCUxsrDrSnhSd+nQr1PlR5qhMAFrKcaFsZy6 | 
 |  |  | HTvP5KqiopKUmMbMGUQzfsNQiS8h+c6seDpMfK3T3BgnaV0mWduasDsQm6/tnQNv | 
 |  |  | /d2WVudz0G08WhHr/653uB5I3wungKWMLSCa8ehZgUdE+BN3x1zOImyk/CHNHCGt | 
 |  |  | Wbn2HUolxQ8K3s3qIzvan+aOyWU= | 
 |  |  | -----END CERTIFICATE----- | 
 
| New file | 
 |  |  | 
 |  |  | -----BEGIN PRIVATE KEY----- | 
 |  |  | MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCEapD1NEh2scd5 | 
 |  |  | 9+aqpdF7/HZQ2gP+XNNCwJSVSHWq7C+hqEdqp5RxuZuNgomWckrwQPLVWsX4zRiZ | 
 |  |  | YMaEVR6xUt7gd7HJgWAgkyFrnWTPv8czaXKMRyoNhcmp8am5TOrxT1uBsiyS+VEI | 
 |  |  | aN/HW+D7NM0fvQpUFAuvO45Im5AogURsS5Tkaawx3EJ5y+bmGOWow/snG5BBoKRQ | 
 |  |  | tQKW70tjG5vijKMiJJjSCooql8jdURWZ27Z2+ysenT/JJsMCKhx11zShna63HDBB | 
 |  |  | g60w3a4fpI85uJ2uQEn9FvTaMS4VcqNlYZS6/RNrVB+0fmEJvusvOEIbpW9xLC+l | 
 |  |  | 6mRe0dchAgMBAAECggEAVEpZ2Bzd++CTMErj5MEFJr3Auxrs6+A/AwEAFD852AHd | 
 |  |  | GDS8sWHXlsUmBeCQoNpEZceSTMopt4UnIYt/EwH0NcCg65aF79WRUWsXHR/l6nET | 
 |  |  | 5uA68JzkYhNGGg4hkjkqXU283ESFJ1HZiVbpDEiqYH5uDMQTbQ4NmhB5NDMCgyVL | 
 |  |  | oUkJD4/PYxglkykjih0RV58X/UU8T7R318uzqTq5DcrEHIwRdzdx1GzbwuoTFGnV | 
 |  |  | 965YTKBWkIRjIFTDmZVNQEcXo0kRETiM+4/M6Q11LNKD6El077xBk6L6bzV+l0vb | 
 |  |  | cmazWKCXLJXZxWCDntrcKLxPyHnsYqZ0uNhnEIenWQKBgQDCQ30+bIHlgQaAekP/ | 
 |  |  | RLKo0ot57Hy5gO8lGO9esk0O3uAtNFt8uU3bdPzTUUAe2DV/9dscDSPvIzSAovQb | 
 |  |  | uvl8n0SXgnhK7xgv8EFbdNtZTi2upxGTmyXefR2Wq8ez7NpztxZkfgW3IS+awhw3 | 
 |  |  | W9+d0khI6rSWVxvWgYzdEsjXLwKBgQCuf2yFUpQFKpv/XeeqcUYPvfReP8FaT+zj | 
 |  |  | YA3uSRwEuIpPjGENDuKjUjyoKOVww5PFQAaLGmtGVcsHs7q5KFSUK1O9hQ5D996z | 
 |  |  | 5LzJlgv9Giu51bDcx8b3846B6zTHVn4HNy87e/ac8r2+eXtHfm9E5bDy8H9qtCgv | 
 |  |  | nWsKn5WirwKBgB6pWFNJ/RakTspogeMAjNJoqOsNkIIW/6fzT5S6v77hHrED2ozN | 
 |  |  | EqTYyi7wXBaCOa+Atpyu1kUgYWEMV0spL8eju8fOJ/5rzn2Chk5RG231EPDIHdYW | 
 |  |  | XtvHE6x8YIDdmX06IKar3WsSKdlbWejC74CReCdKJEa2aQZqXDlohZqxAoGAMRRT | 
 |  |  | 8JfOXDmk0MmXvD/J5emWjt+9wWoThcxhfrD/eXByLnecYHDcW/VobB+8kN/hcyxT | 
 |  |  | 6tIOdCTzSwJJNYTbbSVWk0qWPZW9BLoEQ2q5ioHO5KDu8toZ42mUnoQKPzrbjan+ | 
 |  |  | 1etC7Nf1eFpwyyYLo8Q65cmw/NEZMHNFRSKnkq8CgYEAj0knhIXhf3ZOSaY5UB+6 | 
 |  |  | ZpQVS6h8I0E1sjRWRfw5ft6IXzEtLfO359o6KV9kmkkEPEiDPZht21uM9VeDMWwu | 
 |  |  | tpA6V0TSZDmbqFxGUEACLZIngzIbi90/Q2BTxVZeYhL+/JBGWgO7mGa8EcnFWZR7 | 
 |  |  | 7LUAYSNZFHQggWHwM+7/ADE= | 
 |  |  | -----END PRIVATE KEY----- | 
 
| New file | 
 |  |  | 
 |  |  | -----BEGIN PUBLIC KEY----- | 
 |  |  | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhGqQ9TRIdrHHeffmqqXR | 
 |  |  | e/x2UNoD/lzTQsCUlUh1quwvoahHaqeUcbmbjYKJlnJK8EDy1VrF+M0YmWDGhFUe | 
 |  |  | sVLe4HexyYFgIJMha51kz7/HM2lyjEcqDYXJqfGpuUzq8U9bgbIskvlRCGjfx1vg | 
 |  |  | +zTNH70KVBQLrzuOSJuQKIFEbEuU5GmsMdxCecvm5hjlqMP7JxuQQaCkULUClu9L | 
 |  |  | Yxub4oyjIiSY0gqKKpfI3VEVmdu2dvsrHp0/ySbDAiocddc0oZ2utxwwQYOtMN2u | 
 |  |  | H6SPObidrkBJ/Rb02jEuFXKjZWGUuv0Ta1QftH5hCb7rLzhCG6VvcSwvpepkXtHX | 
 |  |  | IQIDAQAB | 
 |  |  | -----END PUBLIC KEY----- | 
 
 |  |  | 
 |  |  |                         </div> | 
 |  |  |                         <div class="layui-word-aux" style="margin-left: 150px;">互转手续费:例如25%,直接输入25</div> | 
 |  |  |                     </div> | 
 |  |  |                     <blockquote class="layui-elem-quote blue-border">宁波银行提现设置</blockquote> | 
 |  |  |                     <div class="layui-form-item"> | 
 |  |  |                         <label class="layui-form-label  febs-form-item-require">9080-网址:</label> | 
 |  |  |                         <div class="layui-input-block"> | 
 |  |  |                             <input type="text" name="urlStr" | 
 |  |  |                                    lay-verify="required|text" autocomplete="off" class="layui-input" > | 
 |  |  |                         </div> | 
 |  |  |                         <div class="layui-word-aux" style="margin-left: 150px;">银行转账设置-接收报文url,使用NATAPP映射9080端口</div> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="layui-form-item"> | 
 |  |  |                         <label class="layui-form-label  febs-form-item-require">8010-网址:</label> | 
 |  |  |                         <div class="layui-input-block"> | 
 |  |  |                             <input type="text" name="verifyIp" | 
 |  |  |                                    lay-verify="required|text" autocomplete="off" class="layui-input" > | 
 |  |  |                         </div> | 
 |  |  |                         <div class="layui-word-aux" style="margin-left: 150px;">银行转账设置-签名端口,使用NATAPP映射8010端口</div> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="layui-form-item"> | 
 |  |  |                         <label class="layui-form-label  febs-form-item-require">8010-端口号:</label> | 
 |  |  |                         <div class="layui-input-block"> | 
 |  |  |                             <input type="text" name="verifyPort" | 
 |  |  |                                    lay-verify="required|text" autocomplete="off" class="layui-input" > | 
 |  |  |                         </div> | 
 |  |  |                         <div class="layui-word-aux" style="margin-left: 150px;">银行转账设置-签名ip,使用NATAPP映射8010端口号</div> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="layui-form-item"> | 
 |  |  |                         <label class="layui-form-label  febs-form-item-require">付款账号:</label> | 
 |  |  |                         <div class="layui-input-block"> | 
 |  |  |                             <input type="text" name="fkzh" | 
 |  |  |                                    lay-verify="required|text" autocomplete="off" class="layui-input" > | 
 |  |  |                         </div> | 
 |  |  |                         <div class="layui-word-aux" style="margin-left: 150px;">银行转账设置-付款账号</div> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="layui-form-item"> | 
 |  |  |                         <label class="layui-form-label  febs-form-item-require">customerId:</label> | 
 |  |  |                         <div class="layui-input-block"> | 
 |  |  |                             <input type="text" name="customerId" | 
 |  |  |                                    lay-verify="required|text" autocomplete="off" class="layui-input" > | 
 |  |  |                         </div> | 
 |  |  |                         <div class="layui-word-aux" style="margin-left: 150px;">银行转账设置-customerId</div> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="layui-form-item"> | 
 |  |  |                         <label class="layui-form-label  febs-form-item-require">softwareId:</label> | 
 |  |  |                         <div class="layui-input-block"> | 
 |  |  |                             <input type="text" name="softwareId" | 
 |  |  |                                    lay-verify="required|text" autocomplete="off" class="layui-input" > | 
 |  |  |                         </div> | 
 |  |  |                         <div class="layui-word-aux" style="margin-left: 150px;">银行转账设置-softwareId</div> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |  | 
 |  |  |                 <div class="layui-card-footer"> | 
 |  |  | 
 |  |  |  | 
 |  |  |         function initCashoutValue() { | 
 |  |  |             form.val("cashout-setting-form", { | 
 |  |  |                 "urlStr": cashout.urlStr, | 
 |  |  |                 "verifyIp": cashout.verifyIp, | 
 |  |  |                 "verifyPort": cashout.verifyPort, | 
 |  |  |                 "fkzh": cashout.fkzh, | 
 |  |  |                 "customerId": cashout.customerId, | 
 |  |  |                 "softwareId": cashout.softwareId, | 
 |  |  |                 "minCashOut": cashout.minCashOut, | 
 |  |  |                 "allCashOut": cashout.allCashOut, | 
 |  |  |                 "serviceFee": cashout.serviceFee, | 
 
 |  |  | 
 |  |  | //        nbyhService.tradeSingeOuterTransfer(306L); | 
 |  |  | //        nbyhService.accountInfoQuery(306L); | 
 |  |  | //        nbyhService.transferResultInfoQuery(315L); | 
 |  |  |  | 
 |  |  | // | 
 |  |  | //        mallMemberService.chargeAgree(307L); | 
 |  |  | //        mallMemberService.searchInfo(307L); | 
 |  |  |  | 
 |  |  |         agentService.perkAgent(); | 
 |  |  | //        agentService.perkAgent(); | 
 |  |  |     } | 
 |  |  |     @Test | 
 |  |  |     public void agentProfit() { |