| | |
| | | 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; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.*; |
| | | import java.math.BigDecimal; |
| | | import java.net.HttpURLConnection; |
| | | import java.net.InetAddress; |
| | | import java.net.Socket; |
| | | import java.net.URL; |
| | | import java.net.*; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | |
| | | |
| | | @Slf4j |
| | | @Service |
| | | @RequiredArgsConstructor |
| | | public class NBYHServiceImpl implements NBYHService { |
| | | /** |
| | | * 登录报文原文 |
| | |
| | | /** |
| | | * 转账报文原文 |
| | | */ |
| | | private static final String ACCOUNT_MESSAGE_SEARCH = "<opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><ZHHA>${ZHHA}</ZHHA></ReqParam></opReq>"; |
| | | private static final String TRADE_MESSAGE_SEARCH = "<opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><JYXH>${serialNoOld}</JYXH></ReqParam></opReq>"; |
| | | private static final String TRADE_MESSAGE_SINGLE = "<opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><FKZH>${FKZH}</FKZH><SKZH>${SKZH}</SKZH><SKHM>${SKHM}</SKHM><JYJE>${JYJE}</JYJE><YOTU>${YOTU}</YOTU></ReqParam></opReq>"; |
| | | // private static final String TRADE_MESSAGE_SINGLE = "<opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><FKZH>82260120102022631</FKZH><SKZH>78040122000059277</SKZH><SKHM>792311957</SKHM><JYJE>0.01</JYJE><YOTU>银企接口测试</YOTU></ReqParam></opReq>"; |
| | | private static final String TRADE_MESSAGE = "<opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><FKZH>${FKZH}</FKZH><SKZH>${SKZH}</SKZH><SKHM>${SKHM}</SKHM><SKYH>${SKYH}</SKYH><SKSH>${SKSH}</SKSH><SKSI>${SKSI}</SKSI><JYJE>${JYJE}</JYJE><YOTU>${YOTU}</YOTU><SKHH>${SKHH}</SKHH></ReqParam></opReq>"; |
| | | // private static final String TRADE_MESSAGE = "<opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><FKZH>${FKZH}</FKZH><SKZH>${SKZH}</SKZH><SKHM>${SKHM}</SKHM><SKYH>${SKYH}</SKYH><SKSH>${SKSH}</SKSH><SKSI>${SKSI}</SKSI><JYJE>${JYJE}</JYJE><YOTU>${YOTU}</YOTU><SKHH>${SKHH}</SKHH></ReqParam></opReq>"; |
| | | private static final String TRADE_MESSAGE = "<opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><FKZH>${FKZH}</FKZH><SKZH>${SKZH}</SKZH><SKHM>${SKHM}</SKHM><SKYH>${SKYH}</SKYH><SKSH>${SKSH}</SKSH><SKSI>${SKSI}</SKSI><JYJE>${JYJE}</JYJE><YOTU>${YOTU}</YOTU></ReqParam></opReq>"; |
| | | // private static final String TRADE_MESSAGE = "<opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><FKZH>82260120102022631</FKZH><SKZH>6228481060643871117</SKZH><SKHM>王苏平</SKHM><SKYH>中国农业银行舟山市定海支行营业中心</SKYH><SKSH>浙江省</SKSH><SKSI>舟山市</SKSI><JYJE>0.01</JYJE><BIZH>01</BIZH><ZZLX>02</ZZLX><ZZLB>0</ZZLB><YOTU>银企接口测试</YOTU><SKHH>103342040518</SKHH></ReqParam></opReq>"; |
| | | /** |
| | | * |
| | |
| | | /** |
| | | * 接收报文url |
| | | */ |
| | | private static final String URL = "http://127.0.0.1:9080/directlink/httpAccess"; |
| | | // 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 String VERIFY_IP = "127.0.0.1"; |
| | | // private static final String VERIFY_IP = "127.0.0.1"; |
| | | private static final String VERIFY_IP = "server.natappfree.cc"; |
| | | /** |
| | | * 付款账号 |
| | | */ |
| | |
| | | /** |
| | | * 签名端口 |
| | | */ |
| | | private static final int VERIFY_PORT = 8010; |
| | | private static final int VERIFY_PORT = 39296; |
| | | // private static final int VERIFY_PORT = 8010; |
| | | |
| | | /** |
| | | * cookies |
| | | */ |
| | | private static String cookies = null; |
| | | /** |
| | | * sessionId |
| | | * sessionIdhttp://1d6d-220-168-79-89.ngrok.io |
| | | */ |
| | | private static String sessionId = "-1"; |
| | | /** |
| | |
| | | |
| | | public static void main(String[] args) { |
| | | try { |
| | | |
| | | |
| | | |
| | | InetAddress addr = InetAddress.getByName(VERIFY_IP); |
| | | Socket socket = new Socket(addr, VERIFY_PORT); |
| | | |
| | | System.out.println("发送登录请求:"+addr); |
| | | System.out.println("发送登录请求:"+socket.getKeepAlive()); |
| | | // System.out.println("发送登录请求:"); |
| | | // test.executeServerHttpService("srv001_signOn"); |
| | | // System.out.println("\n发送转账结果查询请求:"); |
| | | // executeServerHttpService("srv008_transferResultInfoQuery","转账结果查询","2023032910585227466"); |
| | | // System.out.println("\n发送跨行转账请求:"); |
| | | // test.executeServerHttpService("srv007_singleOuterTransfer","跨行转账",null); |
| | | // System.out.println("\n发送行内转账请求:"); |
| | |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | @Resource |
| | | private MallMemberWithdrawMapper mallMemberWithdrawMapper; |
| | | @Autowired |
| | | @Resource |
| | | private MallMemberWithdrawMsgMapper mallMemberWithdrawMsgMapper; |
| | | @Autowired |
| | | @Resource |
| | | private MallMemberBankMapper mallMemberBankMapper; |
| | | |
| | | @Override |
| | | public boolean tradeSinge(Long id) { |
| | | public NBYHResponse tradeSinge(Long id) { |
| | | /** |
| | | * <?xml version="1.0" encoding="UTF-8"?> |
| | | * <NBCBEBankData> |
| | |
| | | * <signData>MIIEzQYKKoEcz1UGAQQCAqCCBL0wggS5AgEBMQ4wDAYIKoEcz1UBgxEFADCB+AYKKoEcz1UGAQQCAaCB6QSB5jxvcFJlcT48c2VyaWFsTm8+VzIwMjMwNDI0MTcxMzQ0MDUwODY8L3NlcmlhbE5vPjxyZXFUaW1lPjIwMjMwNDI0MTc0MDE2PC9yZXFUaW1lPjxSZXFQYXJhbT48RktaSD44MjI2MDEyMDEwMjAyMjYzMTwvRktaSD48U0taSD43ODA0MDEyMjAwMDA1OTI3NzwvU0taSD48U0tITT43OTIzMTE5NTc8L1NLSE0+PEpZSkU+MS4wMDwvSllKRT48WU9UVT7Q0MTa16rVyzwvWU9UVT48L1JlcVBhcmFtPjwvb3BSZXE+oIIC0TCCAs0wggJxoAMCAQICBRBVc1EWMAwGCCqBHM9VAYN1BQAwXDELMAkGA1UEBhMCQ04xMDAuBgNVBAoMJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEbMBkGA1UEAwwSQ0ZDQSBURVNUIFNNMiBPQ0ExMB4XDTIzMDMwOTAyNTUzM1oXDTI1MDMwOTAyNTUzM1owcjELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA0JPQzETMBEGA1UECwwKQ0ZDQVRlY2hURTEZMBcGA1UECwwQT3JnYW5pemF0aW9uYWwtMjElMCMGA1UEAwwcQ0ZDQVRlY2hURUB0ZXN0cWl5ZUBaMTExMTFAMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABPHX9dm+K8G4WGe2uAHWZKI0aJgmHQfcTyK6jxKvEC5ADcptfpbe2u0cgSwBXFsyAuXY/6wq2vm1wyzmKqGCikGjggEGMIIBAjAfBgNVHSMEGDAWgBRr/hjaj0I6prhtsy6Igzo0osEw4TAMBgNVHRMBAf8EAjAAMEgGA1UdIARBMD8wPQYIYIEchu8qAQEwMTAvBggrBgEFBQcCARYjaHR0cDovL3d3dy5jZmNhLmNvbS5jbi91cy91cy0xNC5odG0wOQYDVR0fBDIwMDAuoCygKoYoaHR0cDovL3VjcmwuY2ZjYS5jb20uY24vU00yL2NybDQ3MDc2LmNybDAOBgNVHQ8BAf8EBAMCBsAwHQYDVR0OBBYEFEr8/JLNuSXaME4XwdfG4VbI1nppMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAMBggqgRzPVQGDdQUAA0gAMEUCIDO8ojBrfnfn1xqHqLovnTRUmSfwmKBPHSCjIf7DBQUzAiEAnGcbKMqUfYj+35WqRfZrb9u34IcgYg0sOc9l/TKHol0xgdMwgdACAQEwZTBcMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTECBRBVc1EWMAwGCCqBHM9VAYMRBQAwDQYJKoEcz1UBgi0BBQAERzBFAiEAhXpldulA3eL7gbu97bo7BFKDf+AJk2OUoNcU88pbb3ICIEwlp1PJ43Lj2frEIBp9HKiyaX/wQBDOasfOk5Kk39KC</signData> |
| | | * </NBCBEBankData> |
| | | */ |
| | | NBYHResponse nbyhResponse = new NBYHResponse(); |
| | | boolean flag = false; |
| | | MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id); |
| | | MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(mallMemberWithdraw.getWtihdrawTypeId()); |
| | | try { |
| | | String requestDataForWithDraw = getRequestDataForWithDraw("srv006_singleInnerTransfer", "行内转账", mallMemberWithdraw, mallMemberBank); |
| | | String responseStr = executeServerHttpService(requestDataForWithDraw); |
| | | errorMessage = responseStr.substring(responseStr.indexOf("<errorMsg>") + 10, |
| | | responseStr.indexOf("</errorMsg>")); |
| | | |
| | | String SBYYStr = responseStr.substring(responseStr.indexOf("<SBYY>") + 6, |
| | | responseStr.indexOf("</SBYY>")); |
| | | nbyhResponse.setMsg(errorMessage+SBYYStr); |
| | | boolean b = parseReturnValueForTrade(responseStr); |
| | | if(b){ |
| | | //插入一条记录 |
| | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return flag; |
| | | |
| | | nbyhResponse.setFlag(flag); |
| | | return nbyhResponse; |
| | | } |
| | | |
| | | @Override |
| | | public boolean tradeSingeOuterTransfer(Long id) { |
| | | public NBYHResponse tradeSingeOuterTransfer(Long id) { |
| | | |
| | | NBYHResponse nbyhResponse = new NBYHResponse(); |
| | | boolean flag = false; |
| | | MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id); |
| | | MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(mallMemberWithdraw.getWtihdrawTypeId()); |
| | | try { |
| | | String requestDataForWithDraw = getRequestDataForWithDraw("srv007_singleOuterTransfer", "跨行汇款", mallMemberWithdraw, mallMemberBank); |
| | | String responseStr = executeServerHttpService(requestDataForWithDraw); |
| | | |
| | | errorMessage = responseStr.substring(responseStr.indexOf("<errorMsg>") + 10, |
| | | responseStr.indexOf("</errorMsg>")); |
| | | |
| | | String SBYYStr = responseStr.substring(responseStr.indexOf("<SBYY>") + 6, |
| | | responseStr.indexOf("</SBYY>")); |
| | | nbyhResponse.setMsg(errorMessage+SBYYStr); |
| | | boolean b = parseReturnValueForTrade(responseStr); |
| | | if(b){ |
| | | //插入一条记录 |
| | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return flag; |
| | | |
| | | nbyhResponse.setFlag(flag); |
| | | return nbyhResponse; |
| | | } |
| | | |
| | | @Override |
| | | public void transferResultInfoQuery(Long id) { |
| | | public NBYHResponse transferResultInfoQuery(Long id) { |
| | | /** |
| | | * <?xml version="1.0" encoding="UTF-8"?> |
| | | * <NBCBEBankData> |
| | | * <sessionId>-1</sessionId> |
| | | * <serviceId>srv008_transferResultInfoQuery</serviceId> |
| | | * <customerId>0000005332</customerId> |
| | | * <softwareId>002</softwareId> |
| | | * <functionId>srv008</functionId> |
| | | * <functionName>转账结果查询</functionName> |
| | | * <opReq> |
| | | * <serialNo>W2023042417134405087</serialNo> |
| | | * <reqTime>20230424180506</reqTime> |
| | | * <ReqParam> |
| | | * <JYXH>W2023042417134405087</JYXH> |
| | | * </ReqParam> |
| | | * </opReq> |
| | | * <signData>MIIEdwYKKoEcz1UGAQQCAqCCBGcwggRjAgEBMQ4wDAYIKoEcz1UBgxEFADCBoQYKKoEcz1UGAQQCAaCBkgSBjzxvcFJlcT48c2VyaWFsTm8+VzIwMjMwNDI0MTcxMzQ0MDUwODc8L3NlcmlhbE5vPjxyZXFUaW1lPjIwMjMwNDI0MTgwNTA2PC9yZXFUaW1lPjxSZXFQYXJhbT48SllYSD5XMjAyMzA0MjQxNzEzNDQwNTA4NzwvSllYSD48L1JlcVBhcmFtPjwvb3BSZXE+oIIC0TCCAs0wggJxoAMCAQICBRBVc1EWMAwGCCqBHM9VAYN1BQAwXDELMAkGA1UEBhMCQ04xMDAuBgNVBAoMJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEbMBkGA1UEAwwSQ0ZDQSBURVNUIFNNMiBPQ0ExMB4XDTIzMDMwOTAyNTUzM1oXDTI1MDMwOTAyNTUzM1owcjELMAkGA1UEBhMCQ04xDDAKBgNVBAoMA0JPQzETMBEGA1UECwwKQ0ZDQVRlY2hURTEZMBcGA1UECwwQT3JnYW5pemF0aW9uYWwtMjElMCMGA1UEAwwcQ0ZDQVRlY2hURUB0ZXN0cWl5ZUBaMTExMTFAMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABPHX9dm+K8G4WGe2uAHWZKI0aJgmHQfcTyK6jxKvEC5ADcptfpbe2u0cgSwBXFsyAuXY/6wq2vm1wyzmKqGCikGjggEGMIIBAjAfBgNVHSMEGDAWgBRr/hjaj0I6prhtsy6Igzo0osEw4TAMBgNVHRMBAf8EAjAAMEgGA1UdIARBMD8wPQYIYIEchu8qAQEwMTAvBggrBgEFBQcCARYjaHR0cDovL3d3dy5jZmNhLmNvbS5jbi91cy91cy0xNC5odG0wOQYDVR0fBDIwMDAuoCygKoYoaHR0cDovL3VjcmwuY2ZjYS5jb20uY24vU00yL2NybDQ3MDc2LmNybDAOBgNVHQ8BAf8EBAMCBsAwHQYDVR0OBBYEFEr8/JLNuSXaME4XwdfG4VbI1nppMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAMBggqgRzPVQGDdQUAA0gAMEUCIDO8ojBrfnfn1xqHqLovnTRUmSfwmKBPHSCjIf7DBQUzAiEAnGcbKMqUfYj+35WqRfZrb9u34IcgYg0sOc9l/TKHol0xgdQwgdECAQEwZTBcMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTECBRBVc1EWMAwGCCqBHM9VAYMRBQAwDQYJKoEcz1UBgi0BBQAESDBGAiEAohIVn9P6WRg+ZdOzqgqKs38tRhG13f3jv1EEp9CQn+0CIQC//I83nEjczU5TgF273KCuCILgzUodySc3osMUyuEiGw==</signData> |
| | | * </NBCBEBankData> |
| | | */ |
| | | NBYHResponse nbyhResponse = new NBYHResponse(); |
| | | boolean flag = false; |
| | | MallMemberWithdrawMsg mallMemberWithdrawMsg = mallMemberWithdrawMapper.selectMsgByWithdrawNo(id); |
| | | // if(ObjectUtil.isEmpty(mallMemberWithdrawMsg)){ |
| | | // return; |
| | | // if(ObjectUtil.isNotEmpty(mallMemberWithdrawMsg)){ |
| | | // Integer status = mallMemberWithdrawMsg.getStatus(); |
| | | // if(1 == status){ |
| | | // nbyhResponse.setFlag(flag); |
| | | // return nbyhResponse; |
| | | // } |
| | | // } |
| | | // Integer status = mallMemberWithdrawMsg.getStatus(); |
| | | // if(1 == status){ |
| | | // return; |
| | | // } |
| | | // MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(mallMemberWithdrawMsg.getWithdrawId()); |
| | | MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(304L); |
| | | MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id); |
| | | MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(mallMemberWithdraw.getWtihdrawTypeId()); |
| | | try { |
| | | String requestDataForWithDraw = getRequestDataForWithDraw("srv008_transferResultInfoQuery", "转账结果查询", mallMemberWithdraw, mallMemberBank); |
| | | String responseStr = executeServerHttpService(requestDataForWithDraw); |
| | | |
| | | errorMessage = responseStr.substring(responseStr.indexOf("<errorMsg>") + 10, |
| | | responseStr.indexOf("</errorMsg>")); |
| | | |
| | | String SBYYStr = responseStr.substring(responseStr.indexOf("<SBYY>") + 6, |
| | | responseStr.indexOf("</SBYY>")); |
| | | nbyhResponse.setMsg(errorMessage+SBYYStr); |
| | | boolean b = parseReturnValue(responseStr); |
| | | if(b){ |
| | | mallMemberWithdrawMsg.setStatus(1); |
| | | mallMemberWithdrawMsgMapper.updateById(mallMemberWithdrawMsg); |
| | | if(ObjectUtil.isNotEmpty(mallMemberWithdrawMsg)){ |
| | | mallMemberWithdrawMsg.setStatus(1); |
| | | mallMemberWithdrawMsgMapper.updateById(mallMemberWithdrawMsg); |
| | | } |
| | | flag = true; |
| | | } |
| | | return; |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | nbyhResponse.setFlag(flag); |
| | | return nbyhResponse; |
| | | } |
| | | |
| | | @Override |
| | | public boolean accountInfoQuery(Long id) { |
| | | boolean flag = false; |
| | | MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id); |
| | | try { |
| | | String requestDataForWithDraw = getRequestDataForWithDraw("srv003_singleAccountInfoQuery", "账户余额及基本信息查询", mallMemberWithdraw, null); |
| | | String responseStr = executeServerHttpService(requestDataForWithDraw); |
| | | |
| | | String stateStr = responseStr.substring(responseStr.indexOf("<state>") + 7, |
| | | responseStr.indexOf("</state>")); |
| | | String KYERStr = responseStr.substring(responseStr.indexOf("<KYER>") + 6, |
| | | responseStr.indexOf("</KYER>")); |
| | | BigDecimal amount = BigDecimal.ZERO; |
| | | if(mallMemberWithdraw.getRemark().equals("凭证提现")){ |
| | | amount = mallMemberWithdraw.getAmount().setScale(2, BigDecimal.ROUND_DOWN); |
| | | }else{ |
| | | amount = mallMemberWithdraw.getAmount().subtract(mallMemberWithdraw.getAmountFee()).setScale(2, BigDecimal.ROUND_DOWN); |
| | | } |
| | | if(stateStr.equals("0") && new BigDecimal(KYERStr).compareTo(amount) >= 0){ |
| | | flag = true; |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | /** |
| | |
| | | * @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 getRequestData(String serviceId, String serviceName, String serialNo) |
| | | throws FileNotFoundException, IOException { |
| | | StringBuffer buf = new StringBuffer(); |
| | | // 报文编码格式utf-8 |
| | | buf.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><NBCBEBankData>"); |
| | | buf.append("<sessionId>"); |
| | | buf.append(sessionId); |
| | | buf.append("</sessionId>"); |
| | | buf.append("<serviceId>"); |
| | | buf.append(serviceId); |
| | | buf.append("</serviceId>"); |
| | | String reqData = ""; |
| | | if (serviceId.equals("srv001_signOn")) { |
| | | reqData = SIGN_MESSAGE; |
| | | } else if (serviceId.equals("srv006_singleInnerTransfer")) { |
| | | reqData = TRADE_MESSAGE_SINGLE; |
| | | /** |
| | | * <opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><FKZH>82260120102022631</FKZH><SKZH>78040122000059277</SKZH><SKHM>792311957</SKHM><JYJE>0.01</JYJE><YOTU>银企接口测试</YOTU></ReqParam></opReq> |
| | | * <opReq> |
| | | * <serialNo>${serialNo}</serialNo> |
| | | * <reqTime>${reqTime}</reqTime> |
| | | * <ReqParam> |
| | | * <FKZH>${FKZH}</FKZH> |
| | | * <SKZH>${SKZH}</SKZH> |
| | | * <SKHM>${SKHM}</SKHM> |
| | | * <JYJE>${JYJE}</JYJE> |
| | | * <YOTU>${YOTU}</YOTU> |
| | | * </ReqParam> |
| | | * </opReq> |
| | | */ |
| | | reqData = reqData.replaceFirst("\\$\\{FKZH\\}", serialNo); |
| | | reqData = reqData.replaceFirst("\\$\\{SKZH\\}", serialNo); |
| | | reqData = reqData.replaceFirst("\\$\\{SKHM\\}", serialNo); |
| | | reqData = reqData.replaceFirst("\\$\\{JYJE\\}", serialNo); |
| | | reqData = reqData.replaceFirst("\\$\\{YOTU\\}", serialNo); |
| | | }else if (serviceId.equals("srv007_singleOuterTransfer")) { |
| | | reqData = TRADE_MESSAGE; |
| | | }else if (serviceId.equals("srv008_transferResultInfoQuery")) { |
| | | reqData = TRADE_MESSAGE_SEARCH; |
| | | //原订单流水号 |
| | | reqData = reqData.replaceFirst("\\$\\{serialNoOld\\}", serialNo); |
| | | } |
| | | // String serialNo = String.valueOf(Math.round(Math.random() * 10000)) |
| | | // + System.currentTimeMillis(); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | Date date = calendar.getTime(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); |
| | | |
| | | String reqTime = sdf.format(date); |
| | | reqData = reqData.replaceFirst("\\$\\{serialNo\\}", serialNo); |
| | | reqData = reqData.replaceFirst("\\$\\{reqTime\\}", reqTime); |
| | | String signData = null; |
| | | try { |
| | | signData = signData(reqData); |
| | | signData = getNodeValue(signData, "signed_data"); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | buf.append("<customerId>"); |
| | | buf.append(customerId); |
| | | buf.append("</customerId>"); |
| | | buf.append("<softwareId>"); |
| | | buf.append(softwareId); |
| | | buf.append("</softwareId>"); |
| | | buf.append("<functionId>"); |
| | | buf.append(serviceId.substring(0, 6)); |
| | | buf.append("</functionId>"); |
| | | buf.append("<functionName>"); |
| | | buf.append(serviceName); |
| | | buf.append("</functionName>"); |
| | | buf.append(reqData + "<signData>" + signData |
| | | + "</signData></NBCBEBankData>"); |
| | | return buf.toString(); |
| | | } |
| | | // public static String getRequestData(String serviceId, String serviceName, String serialNo) |
| | | // throws FileNotFoundException, IOException { |
| | | // StringBuffer buf = new StringBuffer(); |
| | | // // 报文编码格式utf-8 |
| | | // buf.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><NBCBEBankData>"); |
| | | // buf.append("<sessionId>"); |
| | | // buf.append(sessionId); |
| | | // buf.append("</sessionId>"); |
| | | // buf.append("<serviceId>"); |
| | | // buf.append(serviceId); |
| | | // buf.append("</serviceId>"); |
| | | // String reqData = ""; |
| | | // if (serviceId.equals("srv001_signOn")) { |
| | | // reqData = SIGN_MESSAGE; |
| | | // } else if (serviceId.equals("srv006_singleInnerTransfer")) { |
| | | // reqData = TRADE_MESSAGE_SINGLE; |
| | | // /** |
| | | // * <opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><FKZH>82260120102022631</FKZH><SKZH>78040122000059277</SKZH><SKHM>792311957</SKHM><JYJE>0.01</JYJE><YOTU>银企接口测试</YOTU></ReqParam></opReq> |
| | | // * <opReq> |
| | | // * <serialNo>${serialNo}</serialNo> |
| | | // * <reqTime>${reqTime}</reqTime> |
| | | // * <ReqParam> |
| | | // * <FKZH>${FKZH}</FKZH> |
| | | // * <SKZH>${SKZH}</SKZH> |
| | | // * <SKHM>${SKHM}</SKHM> |
| | | // * <JYJE>${JYJE}</JYJE> |
| | | // * <YOTU>${YOTU}</YOTU> |
| | | // * </ReqParam> |
| | | // * </opReq> |
| | | // */ |
| | | // reqData = reqData.replaceFirst("\\$\\{FKZH\\}", serialNo); |
| | | // reqData = reqData.replaceFirst("\\$\\{SKZH\\}", serialNo); |
| | | // reqData = reqData.replaceFirst("\\$\\{SKHM\\}", serialNo); |
| | | // reqData = reqData.replaceFirst("\\$\\{JYJE\\}", serialNo); |
| | | // reqData = reqData.replaceFirst("\\$\\{YOTU\\}", serialNo); |
| | | // }else if (serviceId.equals("srv007_singleOuterTransfer")) { |
| | | // reqData = TRADE_MESSAGE; |
| | | // }else if (serviceId.equals("srv008_transferResultInfoQuery")) { |
| | | // reqData = TRADE_MESSAGE_SEARCH; |
| | | // //原订单流水号 |
| | | // reqData = reqData.replaceFirst("\\$\\{serialNoOld\\}", serialNo); |
| | | // } |
| | | //// String serialNo = String.valueOf(Math.round(Math.random() * 10000)) |
| | | //// + System.currentTimeMillis(); |
| | | // Calendar calendar = Calendar.getInstance(); |
| | | // Date date = calendar.getTime(); |
| | | // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); |
| | | // |
| | | // String reqTime = sdf.format(date); |
| | | // reqData = reqData.replaceFirst("\\$\\{serialNo\\}", serialNo); |
| | | // reqData = reqData.replaceFirst("\\$\\{reqTime\\}", reqTime); |
| | | // String signData = null; |
| | | // try { |
| | | // signData = signData(reqData); |
| | | // signData = getNodeValue(signData, "signed_data"); |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // buf.append("<customerId>"); |
| | | // buf.append(customerId); |
| | | // buf.append("</customerId>"); |
| | | // buf.append("<softwareId>"); |
| | | // buf.append(softwareId); |
| | | // buf.append("</softwareId>"); |
| | | // buf.append("<functionId>"); |
| | | // buf.append(serviceId.substring(0, 6)); |
| | | // buf.append("</functionId>"); |
| | | // buf.append("<functionName>"); |
| | | // buf.append(serviceName); |
| | | // buf.append("</functionName>"); |
| | | // buf.append(reqData + "<signData>" + signData |
| | | // + "</signData></NBCBEBankData>"); |
| | | // return buf.toString(); |
| | | // } |
| | | /** |
| | | * 组装完整的报文 |
| | | * |
| | |
| | | * @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()); |
| | |
| | | mallMemberWithdraw.getAmount().subtract(mallMemberWithdraw.getAmountFee()).setScale(2, BigDecimal.ROUND_DOWN).toString()); |
| | | } |
| | | reqData = reqData.replaceFirst("\\$\\{YOTU\\}", "跨行汇款"); |
| | | reqData = reqData.replaceFirst("\\$\\{SKHH\\}", mallMemberBank.getSkhh()); |
| | | // reqData = reqData.replaceFirst("\\$\\{SKHH\\}", mallMemberBank.getSkhh()); |
| | | }else if (serviceId.equals("srv008_transferResultInfoQuery")) { |
| | | reqData = TRADE_MESSAGE_SEARCH; |
| | | //原订单流水号 |
| | | reqData = reqData.replaceFirst("\\$\\{serialNoOld\\}", mallMemberWithdraw.getWithdrawNo()); |
| | | }else if (serviceId.equals("srv003_singleAccountInfoQuery")) { |
| | | reqData = ACCOUNT_MESSAGE_SEARCH; |
| | | /** |
| | | * <opReq> |
| | | * <serialNo>${serialNo}</serialNo> |
| | | * <reqTime>${reqTime}</reqTime> |
| | | * <ReqParam> |
| | | * <ZHHA>${ZHHA}</ZHHA> |
| | | * </ReqParam> |
| | | * </opReq> |
| | | * <opReq><serialNo>${serialNo}</serialNo><reqTime>${reqTime}</reqTime><ReqParam><ZHHA>${ZHHA}</ZHHA></ReqParam></opReq> |
| | | */ |
| | | //原订单流水号 |
| | | 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); |
| | | // 发送 |
| | | BufferedWriter wr = new BufferedWriter(new OutputStreamWriter( |
| | | socket.getOutputStream(),"GBK")); |