- 浏览: 100518 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (209)
- http://docs.jpush.io/server/java_sdk/ (1)
- SpingMVC ModelAndView (1)
- Model (1)
- Control以及参数传递 (1)
- https://www.alipay.com/ (1)
- 检查指定的字符串列表是否不为空。 (1)
- 转自http://my.oschina.net/rpgmakervx/blog/505434 (1)
- 压缩js (1)
- 含包含 字母数字校验 (1)
- 判断浏览器是ie (1)
- fixbox (0)
- 转自http://www.cnblogs.com/lanzi/archive/2010/10/26/1861338.html (1)
- http://dl2.iteye.com/upload/attachment/0113/2406/afbd8d53-dcad-3afc-8d78-41c1591 (0)
- IDEA (0)
- maven搭建 (0)
- http://www.jeasyuicn.com/api/docTtml/index.htm (1)
- 给tomcat添加运行内存: (1)
- JPUSH推送 (1)
- requestScope (0)
- oracle中plsql安装client10连接数据库 (1)
- 不需要安装oracle11g (1)
- tuikuan (1)
- http://www.hjxmall.com/index.php (1)
- java (1)
- 参考 (1)
- xml签名验签模拟程序 (1)
- 技术网站收集分享 (1)
- Java NIO提供了与标准IO不同的IO工作方式 ------来源于 http://www.iteye.com/magazines/132-Java-NIO (1)
- oracle表查询语句优化 (0)
- oracle (5)
- a (1)
- TenpayHttpClient (2)
- mongodb (1)
- http://www.qcloud.com/product/cmongo.html?utm_source=pcsem1&utm_medium=bdgj46&utm_campaign=baidu (1)
- SpringMVC整合MongoDB开发 (0)
- SpringMVC整合MongoDB开发 https://www.mongodb.org (1)
- Java 语言中常见问题总结 (1)
- 数据库SQL优化大总结 (1)
- 拦截器与过滤器的区别 (1)
- Struts2中拦截器与过滤器的区别及执行顺序 (1)
- Spring声明式事务管理与配置 (0)
- oracle OPERTION (1)
- java 高并发多线程开发 (1)
- Collection 与 map 接口相关集合 (1)
- 多线程开发实践 (1)
- JVM调优总结 转自 http://www.importnew.com/18694.html (1)
- redis 五种数据类型的使用场景 转自于 http://blog.csdn.net/gaogaoshan/article/details/41039581 (1)
- HttpWatch http基础 来自于http://blog.csdn.net/gaogaoshan/article/details/21237555 (1)
- maven 远程仓库 http://blog.csdn.net/gaogaoshan/article/details/40266779 (1)
- 生成Webservice客户端的4中方法 http://blog.csdn.net/gaogaoshan/article/details/8980775 (1)
- http://fgh2011.iteye.com/blog/1564283 (1)
- sleep和wait有什么区别 http://xiaowei2002.iteye.com/blog/2174188 (1)
- JDK中常用包及其类 常见的几种RuntimeException (1)
- Java的运行原理 (1)
- mybatis缓存的使用及理解 http://my.oschina.net/dxqr/blog/123163 (1)
- 软件架构设计分析 (1)
- redis技术总结 (3)
- java面试总结知识点 (1)
- ZooKeeper技术 (1)
- Hadoop (1)
- sso单点登录 (1)
- SpringIOC (1)
- 书签ssssssssssssssssssssss (1)
- spring事务的隔离级别 http://www.cnblogs.com/yangy608/archive/2011/06/29/2093478.html (1)
- 秒杀系统架构分析与实战 http://www.importnew.com/18920.html (1)
- oracle 连接plsql配置 (1)
- maven工程集成springmvc http://blog.csdn.net/fox_lht/article/details/16952683 (1)
- java类序列化与反序列化版本唯一号serialVersionUID (1)
- spring注解用法总结 (1)
- eclipse导入maven项目找不到资源文件方法 (1)
- dubbo (0)
- socket 网络编程 服务器与客户端 编程 (1)
- Thread与Runnable实现线程利用线程插队实现求和操作 (1)
- 生产者与消费者模式 (1)
- JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML*** (1)
- xml 与JAVAbean转换 (1)
- MAP (2)
- decimalToString (1)
- 反编译插件 (0)
- 反编译插件 https://sourceforge.net/projects/jadclipse/?source=typ_redirect (1)
- AWX (1)
- 官网地址Dinp (1)
- public interface ExecutorService extends Executor (1)
- MAIN (1)
- 转自于 http://blog.csdn.net/lufeng20/article/details/24314381 (1)
- JaxbUtil (1)
- HttpXmlClient (0)
- Http post 请求 (1)
- URLDecoder (1)
- spdb (0)
- 订单号生成规则 (1)
- 距离0点毫秒数 (1)
- MyBatis存储过程调用java (1)
- Banks (1)
- 学习网址 (1)
- hots配置oracle数据库配置修改 (1)
- 支付宝文档 (1)
- Jadclipse (1)
- filter (0)
- Filter过滤器 (1)
- 工具类 fixbox (1)
- java quartz (0)
- java quartz 实现定时任务,每个礼拜一到礼拜五定时执行 (1)
- Thread (4)
- getResourceAsStream (1)
- BigData (1)
- 开源架构 (17)
- 架构 (0)
- 文件操作 (2)
- tools (20)
- 测试工具 (1)
- vm (1)
- mq (1)
- blog (1)
- 开源架构搭建技术 (6)
- JAVA细节技术点总结 (1)
- 优化技术 (1)
- LINUX命令使用 (1)
- spring (2)
- 大数据 (1)
- struts2 (1)
- python (1)
- pay (1)
- linux (1)
- 压力测试 (1)
- 代码检查插件 (1)
- 游戏端开发 (1)
- 微信开发相关 (1)
- 搜索引擎 (1)
- 网络技术 (1)
- 分布式部署 (1)
- 堆栈信息 (1)
最新评论
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();
}
}
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在Java和Node.js中的应用》 国密加密,全称为国家商用密码算法,是我国自主设计的一系列密码算法,主要用于保障我国信息安全。这些算法包括SM1、SM2、SM3和SM4等,它们在加密、签名、...
涉及很多小技术知识点,asp.net 1.1和xml的高级编程方面的内容,体验到了xml的强大以及datagrid中的一些小技巧,以及sql数据库脚本还有安装包的一些另类做法
上海浦东发展银行信用卡中心需要一款可以防止数据泄露的解决方案,以便控制其不断激增的数据泄露事件。为了保护其网络上的所有通信,消除每周20,000起数据泄露事件以及提高员工的安全意识,该中心选择了Symantec ...
增加: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(开放...
数据库名为:spdb1 用户:sa 密码 :空 若自己修改也可以,到model目录下把那个conn.java和conndb.java修改相对应的代码 这里有个JTDS的应用,我会一起打包 数据库文件那个shopping_spdb1.sql 次案例只供学习用,我...
一个高的SPDB值意味着更好的频率稳定性,但低SPDB值可能表明制造过程中的污染问题。 综上所述,晶振的各项参数对于电路性能有深远影响。设计师必须根据应用需求,综合考虑这些参数,选择合适的晶振以确保系统时钟的...
`创建了一个名为`spdb1`的新数据库,并指定了字符集为UTF8。 5. **查看表**:在数据库中,`show tables;`用于列出所有表。当你想知道有哪些表存在于当前数据库时,这个命令非常实用。 6. **创建表**:使用`create ...
SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web服务中交换结构化和类型化的信息。在Java环境中,为了实现SOAP通信,通常需要一些特定的库支持,这些库通常以JAR(Java Archive)文件的形式...
SPDB,即寄生信号强度与主信号强度的比值,是评估晶振噪声性能的关键参数,较低的SPDB值意味着更好的信噪比,从而确保更精确的时钟信号。 总结来说,晶振的主要参数包括C0、R1、C1、L1、RR、C1动态电容、L1动态电感...
友达广色域液晶屏B156HW01 V4的校色文件
提到的宜科(天津)电子有限公司,该公司推出的分布式I/O解决方案在电池焊接领域的应用,具体而言,这种解决方案依靠其Spider67系列分布式I/O网关,以及与之配合的SPDB-08UN-003 I/O模块,实现了对生产现场的高效...
12. 浦发银行的“spdb+”战略:浦发银行的“spdb+”战略注重场景触发业务,整合多种业态资源,服务全领域客户,同时渗透产业链,提供自动化应收账款融资等金融服务。 13. 平安银行的物联网金融布局:平安银行通过...
这个名称中的"SPDB"可能代表"Special Purpose Database",暗示了它具有针对特定业务场景优化的数据库管理特性。而".exe"文件后缀表明这是一个可执行文件,通常用于安装程序。 首先,我们来看“iKeeper”。作为标签...
SPDB Cloud 提供统一的Web服务接口,便于开发者和管理员通过API进行资源管理和监控,实现与现有系统的无缝集成。 **第 5 章 自服务为中心的资源在线审批流程** 平台应支持用户自服务,通过在线申请资源,自动审批...
在SPDB SUMMIT平台中,权限管理主要通过Application来实现,Application包含了对用户、角色和团队的管理和配置。 1. Client Users Administration:这是用户管理部分,包括创建、修改和删除用户。用户是系统的基本...
6. **浦发银行**(SPDB):浦发银行的Logo采用深蓝色,由“SPDB”四个字母变形而成,体现其现代、进取的企业精神。 7. **民生银行**(CMBC):民生银行的Logo以蓝色为主,形状如同一艘航行的船,象征着前进和创新。...
1. SPDB Cloud Web Services 统一接口:提供一个统一的接口,实现开发测试云平台和银行业系统的集成。 2. 自动化的资源在线审批流程:实现资源的自动化申请、审批和分配,提高银行业的开发测试效率。 3. 自动化的...
- 首次登录时,用户需访问浦发银行个人网上银行官网(ebank.spdb.com.cn),点击“首次登录”。 - 接受《上海浦东发展银行个人网上银行责任条款》。 - 输入证件类型和证件号码进行身份校验。 - 选择用户类型为...
SPDB201203,这些标识符用于跟踪和管理合同,确保版本控制,避免不同版本的混淆。 合同结构(Contract structure):合同由“合同条款和条件”以及“合同条款和条件要素汇总表”两部分组成。其中,“合同条款和...