`
tangkuo
  • 浏览: 101008 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

spdb

阅读更多
package com.dinpay.dpp.csp.instruction.comm.util.spdb;

import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Random;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.dinpay.dpp.csp.instruction.comm.constant.BankMessageUtil;

/**
* @version 1.0
* @author tangkuo
* 创建日期:2016-05-14 上午11:04:20
* 说明:
*
*/

public class SPDBExpressPayUtil {
private static Log log = LogFactory.getLog(SPDBExpressPayUtil.class);

/**
* (借记卡 )商户号。
*/
public static final String SPDBExpressDebitMerchantId = BankMessageUtil.SPDB_Express_debitMerchantId;

/**
* (贷记卡/信用卡) 商户号。
*/
public static final String SPDBExpressCreditMerchantId = BankMessageUtil.SPDB_Express_creditMerchantId;

/**
* 交易成功:RespCode域的返回值为00
*/
public static String successCode = "00";

/**
* 商户的交易日期时间yyyyMMddhhMMss
*
*/
public static String yyyyMMddHHmmss = "yyyyMMddHHmmss";

/**
* 日期时间格式:yyyyMMdd
*
*/
public static String yyyyMMdd = "yyyyMMdd";

/**
* 浦发快捷请求银行网关url地址。
*
*/
public static String SPDBExpressPostBankAddress = BankMessageUtil.SPDB_Express_PostBankAddress;

/**
* 支付交易中,接收交易结果的url, 如果该项为空,则交易结果会送到商户在柜面签约的时候填写的接收结果的url;否则就会送到该地址中。
*
*/
public static String SPDBExpressMercUrl = BankMessageUtil.SPDB_Express_notifyMercUrl;

/**
* 默认编码格式为GBK
*
*/
public final static String CHARSET = "GBK";

/**
* 将传入的字符串存入map
* @param response
* @return
* @throws IOException
*/
public static Map<String,Object> splitStrToMap(String responseStr){
if(StringUtils.isEmpty(responseStr)){
return null;
}
String [] target;
if(responseStr.indexOf("|") != -1){
target = responseStr.split("\\|");
}else{
target = new String[]{responseStr};
}
if(target.length == 0){
return null;
}
Map<String,Object> map = new LinkedHashMap<String, Object>();
for(String str: target){
if (StringUtils.isEmpty(str)) {
continue;
}
String[] s = str.split("=");
if(s.length == 1){
map.put(s[0], "");
}else{
map.put(s[0], s[1]);
}
}
return map;
}

/**
* 解析返回的xml格式字符串中是否包含指定的元素
* 包含则返回值,否则返回空字符串
* @param result
* @param element
* @return
*/
public static String getValue(String result, String element) {
if (StringUtils.isNotEmpty(result) && StringUtils.isNotEmpty(element) && result.contains(element)) {
try {
return result.substring(result.indexOf("<" + element + ">") + element.length() + 2,
result.indexOf("</" + element + ">"));
} catch (Exception e) {
log.info("解析数据时未找到相关元素:"+element);
}
}
return "";
}

/**
* 检查输入值空值及去前后空格处理。
*
* @param value
* @return
*/
public static String checkVal(String value){
return StringUtils.isEmpty(value) ? "" : value.trim();
}

/**
* 去除所有的空格
* @param inputStr
* @return
*/
public static String replaceStrAllTrim(String inputStr){
String returnStr = "";
if(StringUtils.isNotEmpty(inputStr)){
returnStr = inputStr.replaceAll(" ", "");
}
return returnStr;
}

/**
* 获取请求id值
* @return
*/
public static String getRequestId(){
return String.valueOf(DateFormatUtils.format(new Date(), "yyyyMMddHHmmssSSS")
+ new Random().nextInt(1000));
}

/**
* 根据浦发银行 5.3.17 协议(快捷)支付签约查询返回状态码转换
*
* @param signStatus
* @return
*/
public static String transformSignStatus(String signStatus){
String retSignStatus = "";
switch (Integer.valueOf(signStatus)) {
case 1:
retSignStatus = "签约失效";
break;
case 2:
retSignStatus = "签约撤销";
break;
case 3:
retSignStatus = "签约验证";
break;
case 4:
retSignStatus = "签约待确认";
break;
default:
break;
}
return retSignStatus;
}


/**
*信用卡有效期的 格式转换:
*
* @param validDate
* @return
*/
public static String formatValidDate (String validDate) {
if (StringUtils.isBlank(validDate)) {
return "";
}
if (validDate.length() > 4 && validDate.indexOf("/") != -1) {
String[] s = validDate.split("/");
return s[1]+s[0];
} else {
return validDate;
}
}

/**
* Plain域中各元素间用 字符‘|’分开
* 1. 字符串的尾部和中间去除空格
*  2. 字符区分大小写,汉字使用GBK编码

*  eg: TranAbbr=IPER|MasterID=|MercDtTm=20050201015901|TermSsn=000000123456|OSttDate=|OAcqSsn=|
*  MercCode=990108160000101|TermCode=00000000|TranAmt=100.01|Remark1=备忘|Remark2=备注|
*  MercUrl=http://test.test.com/receive.asp|Ip=10.1.1.1

* @param map
* @return
*/
public static String mapToString(Map<String, String> map) {
if (map == null || map.size() == 0) {
return StringUtils.EMPTY;
}
StringBuilder sb = new StringBuilder();
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
String value = entry.getValue();
if(StringUtils.isNotEmpty(value)){
value.replaceAll(" ", "");
}
sb.append(entry.getKey()).append("=").append(value).append("|");
}
if (sb.length() > 0) {
sb.delete(sb.length() - 1, sb.length());
}
return sb.toString();
}

/**
* 去掉字符串中签名元素element包含的内容。
* @param element:需要去掉的元素。
* @param inputStr:原字符串。
* @return
*/
public static String removeSignture(String inputStr, String element) {
if (StringUtils.isEmpty(inputStr)) {
return "";
}

if (StringUtils.isEmpty(element) || false == inputStr.contains("Signature")) {
return inputStr;
}

StringBuffer logMsg = new StringBuffer();
String startTag = "<" + element + ">";
String endTag = "</" + element + ">";
if (inputStr.contains(startTag) && inputStr.contains(endTag)) {
logMsg.append(inputStr.substring(0, inputStr.indexOf(startTag)));
logMsg.append(inputStr.substring(inputStr.indexOf(endTag) + endTag.length(), inputStr.length()));
}
return logMsg.toString();
}

}










分享到:
评论

相关推荐

    spdb-api(国密新版).zip

    《深入理解国密加密与SPDB-API在Java和Node.js中的应用》 国密加密,全称为国家商用密码算法,是我国自主设计的一系列密码算法,主要用于保障我国信息安全。这些算法包括SM1、SM2、SM3和SM4等,它们在加密、签名、...

    spdb-rmb.part2

    涉及很多小技术知识点,asp.net 1.1和xml的高级编程方面的内容,体验到了xml的强大以及datagrid中的一些小技巧,以及sql数据库脚本还有安装包的一些另类做法

    SPDB信用卡中心采用赛门铁克数据泄露防护解决方案

    上海浦东发展银行信用卡中心需要一款可以防止数据泄露的解决方案,以便控制其不断激增的数据泄露事件。为了保护其网络上的所有通信,消除每周20,000起数据泄露事件以及提高员工的安全意识,该中心选择了Symantec ...

    韩顺平jsp笔记

    增加:int a=sm.executeUpdate("use spdb;insert into users values('"+name+"','"+passwd+"','"+email+"','"+grade+"')"); 删除:int a=sm.executeUpdate("use spdb;delete from users where userId='"+id+"'"); ...

    空间数据库图形拓扑关系

    在本例中,使用的可能是SPDB,一种专为空间数据设计的关系数据库管理系统。 VC++作为C++的集成开发环境,可以用于创建高性能的应用程序。在这里,它被用来编写代码来实现图形间的拓扑关系检查。通过ODBC(开放...

    jsp_mvc版的购物车设计

    数据库名为:spdb1 用户:sa 密码 :空 若自己修改也可以,到model目录下把那个conn.java和conndb.java修改相对应的代码 这里有个JTDS的应用,我会一起打包 数据库文件那个shopping_spdb1.sql 次案例只供学习用,我...

    晶振的主要参数与对电路的影响.doc

    一个高的SPDB值意味着更好的频率稳定性,但低SPDB值可能表明制造过程中的污染问题。 综上所述,晶振的各项参数对于电路性能有深远影响。设计师必须根据应用需求,综合考虑这些参数,选择合适的晶振以确保系统时钟的...

    mysql的学习记录

    `创建了一个名为`spdb1`的新数据库,并指定了字符集为UTF8。 5. **查看表**:在数据库中,`show tables;`用于列出所有表。当你想知道有哪些表存在于当前数据库时,这个命令非常实用。 6. **创建表**:使用`create ...

    soap 所需全部jar包

    SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web服务中交换结构化和类型化的信息。在Java环境中,为了实现SOAP通信,通常需要一些特定的库支持,这些库通常以JAR(Java Archive)文件的形式...

    晶振主要参数讲解

    SPDB,即寄生信号强度与主信号强度的比值,是评估晶振噪声性能的关键参数,较低的SPDB值意味着更好的信噪比,从而确保更精确的时钟信号。 总结来说,晶振的主要参数包括C0、R1、C1、L1、RR、C1动态电容、L1动态电感...

    友达广色域液晶屏B156HW01 V4校色文件(W520/T520)

    友达广色域液晶屏B156HW01 V4的校色文件

    基于宜科分布式I_O的电池焊接解决方案.pdf

    提到的宜科(天津)电子有限公司,该公司推出的分布式I/O解决方案在电池焊接领域的应用,具体而言,这种解决方案依靠其Spider67系列分布式I/O网关,以及与之配合的SPDB-08UN-003 I/O模块,实现了对生产现场的高效...

    2015年主要商业银行战略转型汇总.pdf

    12. 浦发银行的“spdb+”战略:浦发银行的“spdb+”战略注重场景触发业务,整合多种业态资源,服务全领域客户,同时渗透产业链,提供自动化应收账款融资等金融服务。 13. 平安银行的物联网金融布局:平安银行通过...

    iKeeperSPDBSetup

    这个名称中的"SPDB"可能代表"Special Purpose Database",暗示了它具有针对特定业务场景优化的数据库管理特性。而".exe"文件后缀表明这是一个可执行文件,通常用于安装程序。 首先,我们来看“iKeeper”。作为标签...

    银行开发测试云平台方案建议书.docx

    SPDB Cloud 提供统一的Web服务接口,便于开发者和管理员通过API进行资源管理和监控,实现与现有系统的无缝集成。 **第 5 章 自服务为中心的资源在线审批流程** 平台应支持用户自服务,通过在线申请资源,自动审批...

    用户手册_权限配置.docx

    在SPDB SUMMIT平台中,权限管理主要通过Application来实现,Application包含了对用户、角色和团队的管理和配置。 1. Client Users Administration:这是用户管理部分,包括创建、修改和删除用户。用户是系统的基本...

    各大银行小logo

    6. **浦发银行**(SPDB):浦发银行的Logo采用深蓝色,由“SPDB”四个字母变形而成,体现其现代、进取的企业精神。 7. **民生银行**(CMBC):民生银行的Logo以蓝色为主,形状如同一艘航行的船,象征着前进和创新。...

    银行开发测试云平台-立项分析报告.docx

    1. SPDB Cloud Web Services 统一接口:提供一个统一的接口,实现开发测试云平台和银行业系统的集成。 2. 自动化的资源在线审批流程:实现资源的自动化申请、审批和分配,提高银行业的开发测试效率。 3. 自动化的...

    浦发银行网银登陆.docx

    - 首次登录时,用户需访问浦发银行个人网上银行官网(ebank.spdb.com.cn),点击“首次登录”。 - 接受《上海浦东发展银行个人网上银行责任条款》。 - 输入证件类型和证件号码进行身份校验。 - 选择用户类型为...

    浦发银行个人抵押贷款合同英文.docx

    SPDB201203,这些标识符用于跟踪和管理合同,确保版本控制,避免不同版本的混淆。 合同结构(Contract structure):合同由“合同条款和条件”以及“合同条款和条件要素汇总表”两部分组成。其中,“合同条款和...

Global site tag (gtag.js) - Google Analytics