银联付款用途(NUSAGE)字段根据银联规则增加校验
This commit is contained in:
parent
936ad68197
commit
04f361c45c
@ -75,7 +75,7 @@ public class CmbToPayController extends BaseFlowStartAction {
|
||||
JSONObject jsonObj = JSONObject.fromObject(map);
|
||||
return jsonObj.toString();
|
||||
}*/
|
||||
List<String> contract_id_list = java.util.Arrays.asList(contract_ids.split("@"));
|
||||
List<String> 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;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user