From 04f361c45c015aba2bdaf527dad446f458ad04bd Mon Sep 17 00:00:00 2001 From: zhanglei Date: Fri, 24 Dec 2021 09:32:30 +0800 Subject: [PATCH] =?UTF-8?q?=E9=93=B6=E8=81=94=E4=BB=98=E6=AC=BE=E7=94=A8?= =?UTF-8?q?=E9=80=94=EF=BC=88NUSAGE=EF=BC=89=E5=AD=97=E6=AE=B5=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E9=93=B6=E8=81=94=E8=A7=84=E5=88=99=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sdk/controller/CmbToPayController.java | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src_cmb/com/tenwa/sdk/controller/CmbToPayController.java b/src_cmb/com/tenwa/sdk/controller/CmbToPayController.java index 31b4caaca..41e39d1a6 100644 --- a/src_cmb/com/tenwa/sdk/controller/CmbToPayController.java +++ b/src_cmb/com/tenwa/sdk/controller/CmbToPayController.java @@ -75,7 +75,7 @@ public class CmbToPayController extends BaseFlowStartAction { JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); }*/ - List contract_id_list = java.util.Arrays.asList(contract_ids.split("@")); + List contract_id_list = Arrays.asList(contract_ids.split("@")); if(contract_id_list==null || contract_id_list.size()<=0) { map.put("code", "1") ; map.put("msg", "尚未选择合同,请检查") ; @@ -352,8 +352,19 @@ public class CmbToPayController extends BaseFlowStartAction { String BNKFLG = checkCMB(BANK_NAME); //NUSAGE = "客户["+CRTACC+"]发起申请"; String BUSNAR = "[实际付款][客户:"+CRTACC+"][支付金额:"+TRSAMT+"]"; + /* + *银企直连此字符串的规则: + * 0.此字段在银企直连中最大为62 + * 1.字符串长度为N,那么最多可输入汉字数为(N-2)/2 + * 2.如果中文中夹杂英文字符或数字,那么要做分段处理,每段汉字长度都要+2。例:“中国TCL集团”是 (2*2+2)+(3)+(2*2+2)=15 + * */ + //cusLength:customerName最大长度(以银企直连算法) + int cusLength = 62-(2+contractNoZC.length()+contractNo.length()); + customerName = getCMBlength(customerName,cusLength); NUSAGE = customerName+"-"+contractNoZC+"-"+contractNo; + + pay_detail = new SDKDcPayReqxVO(); pay_detail.setYURREF(YURREF); pay_detail.setDBTACC(DBTACC); @@ -564,4 +575,40 @@ public class CmbToPayController extends BaseFlowStartAction { return "N"; } } + private String getCMBlength(String str,int length){ + int count = 0; + boolean ChineseFlag = false; + char[] c = str.toCharArray(); + for(int i = 0; i < c.length; i ++){ + //二进制超过8位则为汉字 + String len = Integer.toBinaryString(c[i]); + if(ChineseFlag){ + if(len.length() > 8){ + count=count+2; + ChineseFlag = true; + }else{ + count ++; + ChineseFlag = false; + } + }else{ + if(len.length() > 8){ + count=count+2+2; + ChineseFlag = true; + }else{ + count ++; + ChineseFlag = false; + } + } + if(count==length){ + str = str.substring(0,i+1); + break; + }else if(count>length){ + str = str.substring(0,i); + break; + } + + } + return str; + + } }