xiaoyong931011
2023-05-11 bb1e84b94474f1d513c25b2122576370a29d5033
会员等级设置
8 files modified
3 files added
373 ■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java 24 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java 25 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java 41 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/CashOutSettingDto.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/service/impl/LaKaLaServiceImpl.java 92 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java 67 ●●●● patch | view | raw | blame | history
src/main/resources/lkl/prd/api_cert.cer 22 ●●●●● patch | view | raw | blame | history
src/main/resources/lkl/prd/api_private_key.pem 28 ●●●●● patch | view | raw | blame | history
src/main/resources/lkl/prd/api_public_key.pem 9 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/system/cashOutSetting.html 55 ●●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/ProfitTest.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -6,6 +6,30 @@
@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"),
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
@@ -55,6 +55,31 @@
    @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();
    }
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -106,9 +106,46 @@
    @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");
    }
src/main/java/cc/mrbird/febs/mall/dto/CashOutSettingDto.java
@@ -22,4 +22,10 @@
    private Integer workingDays;
    //互转手续费率
    private Integer insideFee;
    private String urlStr;
    private String verifyIp;
    private String verifyPort;
    private String fkzh;
    private String customerId;
    private String softwareId;
}
src/main/java/cc/mrbird/febs/pay/service/impl/LaKaLaServiceImpl.java
@@ -89,7 +89,7 @@
     */
    public static final String mchSerialNo = "01848940fd41";
    public static final String mchSerialNo_prd = "01848940fd41";
    public static final String mchSerialNo_prd = "018804e5ecd9";
    /**
     * 商户号
@@ -323,9 +323,7 @@
                        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";
                    }
@@ -375,54 +373,48 @@
    }
    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 {
src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java
@@ -1,15 +1,16 @@
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;
@@ -26,6 +27,7 @@
@Slf4j
@Service
@RequiredArgsConstructor
public class NBYHServiceImpl implements NBYHService {
    /**
     * 登录报文原文
@@ -109,6 +111,8 @@
     */
//    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
     */
@@ -121,7 +125,7 @@
    /**
     * 签名端口
     */
    private static final int VERIFY_PORT = 41933;
    private static final int VERIFY_PORT = 39296;
//    private static final int VERIFY_PORT = 8010;
    /**
@@ -151,6 +155,8 @@
    public static void main(String[] args) {
        try {
            InetAddress addr = InetAddress.getByName(VERIFY_IP);
            Socket socket = new Socket(addr, VERIFY_PORT);
@@ -372,10 +378,19 @@
     * @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
@@ -510,7 +525,7 @@
     * @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
@@ -522,6 +537,18 @@
        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")) {
@@ -541,7 +568,7 @@
             * </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("凭证提现")){
@@ -576,7 +603,7 @@
             */
            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());
@@ -608,7 +635,7 @@
             * <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();
@@ -627,10 +654,10 @@
            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));
@@ -657,7 +684,7 @@
     * @return
     * @throws UnsupportedEncodingException
     */
    public static String signData(String orignalData)
    public String signData(String orignalData)
            throws UnsupportedEncodingException {
        InetAddress addr = null;
        Socket socket = null;
@@ -669,9 +696,17 @@
                + "<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);
            // 发送
src/main/resources/lkl/prd/api_cert.cer
New file
@@ -0,0 +1,22 @@
-----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-----
src/main/resources/lkl/prd/api_private_key.pem
New file
@@ -0,0 +1,28 @@
-----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-----
src/main/resources/lkl/prd/api_public_key.pem
New file
@@ -0,0 +1,9 @@
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhGqQ9TRIdrHHeffmqqXR
e/x2UNoD/lzTQsCUlUh1quwvoahHaqeUcbmbjYKJlnJK8EDy1VrF+M0YmWDGhFUe
sVLe4HexyYFgIJMha51kz7/HM2lyjEcqDYXJqfGpuUzq8U9bgbIskvlRCGjfx1vg
+zTNH70KVBQLrzuOSJuQKIFEbEuU5GmsMdxCecvm5hjlqMP7JxuQQaCkULUClu9L
Yxub4oyjIiSY0gqKKpfI3VEVmdu2dvsrHp0/ySbDAiocddc0oZ2utxwwQYOtMN2u
H6SPObidrkBJ/Rb02jEuFXKjZWGUuv0Ta1QftH5hCb7rLzhCG6VvcSwvpepkXtHX
IQIDAQAB
-----END PUBLIC KEY-----
src/main/resources/templates/febs/views/modules/system/cashOutSetting.html
@@ -43,6 +43,55 @@
                        </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">
@@ -88,6 +137,12 @@
        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,
src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -106,11 +106,11 @@
//        nbyhService.tradeSingeOuterTransfer(306L);
//        nbyhService.accountInfoQuery(306L);
//        nbyhService.transferResultInfoQuery(315L);
//
//        mallMemberService.chargeAgree(307L);
//        mallMemberService.searchInfo(307L);
        agentService.perkAgent();
//        agentService.perkAgent();
    }
    @Test
    public void agentProfit() {