hechunping vor 2 Monaten
Ursprung
Commit
0d4a5e543a
28 geänderte Dateien mit 0 neuen und 4567 gelöschten Zeilen
  1. 0 225
      mvnw
  2. 0 143
      mvnw.cmd
  3. 0 194
      pom.xml
  4. 0 63
      src/main/java/com/xynet/pay/Exception/BusinessException.java
  5. 0 58
      src/main/java/com/xynet/pay/XynetServicePayThirdApplication.java
  6. 0 20
      src/main/java/com/xynet/pay/controller/TestController.java
  7. 0 23
      src/main/java/com/xynet/pay/foreignAPI/ApiClient.java
  8. 0 127
      src/main/java/com/xynet/pay/util/AESUtil.java
  9. 0 144
      src/main/java/com/xynet/pay/util/ArrayUtils.java
  10. 0 136
      src/main/java/com/xynet/pay/util/Base64Utils.java
  11. 0 150
      src/main/java/com/xynet/pay/util/ConvertData.java
  12. 0 410
      src/main/java/com/xynet/pay/util/DateUtil.java
  13. 0 166
      src/main/java/com/xynet/pay/util/FileUtils.java
  14. 0 160
      src/main/java/com/xynet/pay/util/HMAC_SHA1Utils.java
  15. 0 38
      src/main/java/com/xynet/pay/util/HttpResult.java
  16. 0 233
      src/main/java/com/xynet/pay/util/HttpServiceUtils.java
  17. 0 5
      src/main/java/com/xynet/pay/util/HttpsUtils.java
  18. 0 96
      src/main/java/com/xynet/pay/util/JsonUtils.java
  19. 0 215
      src/main/java/com/xynet/pay/util/MathUtil.java
  20. 0 459
      src/main/java/com/xynet/pay/util/PKCS7Tool.java
  21. 0 462
      src/main/java/com/xynet/pay/util/RSAProvider.java
  22. 0 98
      src/main/java/com/xynet/pay/util/RSASignUtil.java
  23. 0 301
      src/main/java/com/xynet/pay/util/RSATool.java
  24. 0 76
      src/main/java/com/xynet/pay/util/Reserve.java
  25. 0 440
      src/main/resources/application.yml
  26. 0 15
      src/main/resources/environment.properties
  27. 0 80
      src/main/resources/logback-spring.xml
  28. 0 30
      src/main/resources/mybatis/mybatis-config.xml

+ 0 - 225
mvnw

@@ -1,225 +0,0 @@
-#!/bin/sh
-# ----------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-# ----------------------------------------------------------------------------
-
-# ----------------------------------------------------------------------------
-# Maven2 Start Up Batch script
-#
-# Required ENV vars:
-# ------------------
-#   JAVA_HOME - location of a JDK home dir
-#
-# Optional ENV vars
-# -----------------
-#   M2_HOME - location of maven2's installed home dir
-#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
-#     e.g. to debug Maven itself, use
-#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-# ----------------------------------------------------------------------------
-
-if [ -z "$MAVEN_SKIP_RC" ] ; then
-
-  if [ -f /etc/mavenrc ] ; then
-    . /etc/mavenrc
-  fi
-
-  if [ -f "$HOME/.mavenrc" ] ; then
-    . "$HOME/.mavenrc"
-  fi
-
-fi
-
-# OS specific support.  $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-mingw=false
-case "`uname`" in
-  CYGWIN*) cygwin=true ;;
-  MINGW*) mingw=true;;
-  Darwin*) darwin=true
-    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
-    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
-    if [ -z "$JAVA_HOME" ]; then
-      if [ -x "/usr/libexec/java_home" ]; then
-        export JAVA_HOME="`/usr/libexec/java_home`"
-      else
-        export JAVA_HOME="/Library/Java/Home"
-      fi
-    fi
-    ;;
-esac
-
-if [ -z "$JAVA_HOME" ] ; then
-  if [ -r /etc/gentoo-release ] ; then
-    JAVA_HOME=`java-config --jre-home`
-  fi
-fi
-
-if [ -z "$M2_HOME" ] ; then
-  ## resolve links - $0 may be a link to maven's home
-  PRG="$0"
-
-  # need this for relative symlinks
-  while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-      PRG="$link"
-    else
-      PRG="`dirname "$PRG"`/$link"
-    fi
-  done
-
-  saveddir=`pwd`
-
-  M2_HOME=`dirname "$PRG"`/..
-
-  # make it fully qualified
-  M2_HOME=`cd "$M2_HOME" && pwd`
-
-  cd "$saveddir"
-  # echo Using m2 at $M2_HOME
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME=`cygpath --unix "$M2_HOME"`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-# For Migwn, ensure paths are in UNIX format before anything is touched
-if $mingw ; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME="`(cd "$M2_HOME"; pwd)`"
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
-  # TODO classpath?
-fi
-
-if [ -z "$JAVA_HOME" ]; then
-  javaExecutable="`which javac`"
-  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
-    # readlink(1) is not available as standard on Solaris 10.
-    readLink=`which readlink`
-    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
-      if $darwin ; then
-        javaHome="`dirname \"$javaExecutable\"`"
-        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
-      else
-        javaExecutable="`readlink -f \"$javaExecutable\"`"
-      fi
-      javaHome="`dirname \"$javaExecutable\"`"
-      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
-      JAVA_HOME="$javaHome"
-      export JAVA_HOME
-    fi
-  fi
-fi
-
-if [ -z "$JAVACMD" ] ; then
-  if [ -n "$JAVA_HOME"  ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-      # IBM's JDK on AIX uses strange locations for the executables
-      JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-      JAVACMD="$JAVA_HOME/bin/java"
-    fi
-  else
-    JAVACMD="`which java`"
-  fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
-  echo "Error: JAVA_HOME is not defined correctly." >&2
-  echo "  We cannot execute $JAVACMD" >&2
-  exit 1
-fi
-
-if [ -z "$JAVA_HOME" ] ; then
-  echo "Warning: JAVA_HOME environment variable is not set."
-fi
-
-CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
-
-# traverses directory structure from process work directory to filesystem root
-# first directory with .mvn subdirectory is considered project base directory
-find_maven_basedir() {
-
-  if [ -z "$1" ]
-  then
-    echo "Path not specified to find_maven_basedir"
-    return 1
-  fi
-
-  basedir="$1"
-  wdir="$1"
-  while [ "$wdir" != '/' ] ; do
-    if [ -d "$wdir"/.mvn ] ; then
-      basedir=$wdir
-      break
-    fi
-    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
-    if [ -d "${wdir}" ]; then
-      wdir=`cd "$wdir/.."; pwd`
-    fi
-    # end of workaround
-  done
-  echo "${basedir}"
-}
-
-# concatenates all lines of a file
-concat_lines() {
-  if [ -f "$1" ]; then
-    echo "$(tr -s '\n' ' ' < "$1")"
-  fi
-}
-
-BASE_DIR=`find_maven_basedir "$(pwd)"`
-if [ -z "$BASE_DIR" ]; then
-  exit 1;
-fi
-
-export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
-echo $MAVEN_PROJECTBASEDIR
-MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME=`cygpath --path --windows "$M2_HOME"`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
-    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
-fi
-
-WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-exec "$JAVACMD" \
-  $MAVEN_OPTS \
-  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
-  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
-  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

+ 0 - 143
mvnw.cmd

@@ -1,143 +0,0 @@
-@REM ----------------------------------------------------------------------------
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements.  See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership.  The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License.  You may obtain a copy of the License at
-@REM
-@REM    http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied.  See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM ----------------------------------------------------------------------------
-
-@REM ----------------------------------------------------------------------------
-@REM Maven2 Start Up Batch script
-@REM
-@REM Required ENV vars:
-@REM JAVA_HOME - location of a JDK home dir
-@REM
-@REM Optional ENV vars
-@REM M2_HOME - location of maven2's installed home dir
-@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
-@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
-@REM     e.g. to debug Maven itself, use
-@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-@REM ----------------------------------------------------------------------------
-
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
-
-@REM set %HOME% to equivalent of $HOME
-if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
-if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM To isolate internal variables from possible post scripts, we use another setlocal
-@setlocal
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%" == "" goto OkJHome
-
-echo.
-echo Error: JAVA_HOME not found in your environment. >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-:OkJHome
-if exist "%JAVA_HOME%\bin\java.exe" goto init
-
-echo.
-echo Error: JAVA_HOME is set to an invalid directory. >&2
-echo JAVA_HOME = "%JAVA_HOME%" >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-@REM ==== END VALIDATION ====
-
-:init
-
-@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
-IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set EXEC_DIR=%CD%
-set WDIR=%EXEC_DIR%
-:findBaseDir
-IF EXIST "%WDIR%"\.mvn goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set WDIR=%CD%
-goto findBaseDir
-
-:baseDirFound
-set MAVEN_PROJECTBASEDIR=%WDIR%
-cd "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-
-set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
-set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
-if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%" == "on" pause
-
-if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
-
-exit /B %ERROR_CODE%

+ 0 - 194
pom.xml

@@ -1,194 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<groupId>com.xynet</groupId>
-	<artifactId>xynet-service-marketing</artifactId>
-	<version>1.0</version>
-	<packaging>jar</packaging>
-
-	<name>xynet-service-marketing</name>
-	<description>xynet-service-marketing</description>
-
-	<parent>
-		<groupId>org.springframework.boot</groupId>
-		<artifactId>spring-boot-starter-parent</artifactId>
-		<version>1.5.10.RELEASE</version>
-		<relativePath /> <!-- lookup parent from repository -->
-	</parent>
-
-	<properties>
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-		<java.version>1.8</java.version>
-		<spring-cloud.version>Edgware.RELEASE</spring-cloud.version>
-	</properties>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-actuator</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.cloud</groupId>
-			<artifactId>spring-cloud-starter-hystrix</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.cloud</groupId>
-			<artifactId>spring-cloud-starter-ribbon</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-jdbc</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.mybatis.spring.boot</groupId>
-			<artifactId>mybatis-spring-boot-starter</artifactId>
-			<version>1.3.1</version>
-		</dependency>
-
-		<dependency>
-			<groupId>mysql</groupId>
-			<artifactId>mysql-connector-java</artifactId>
-			<scope>runtime</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-test</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.integration</groupId>
-			<artifactId>spring-integration-http</artifactId>
-		</dependency>
-		<!-- 集成 aop -->
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-aop</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>commons-lang</groupId>
-			<artifactId>commons-lang</artifactId>
-			<version>2.6</version>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-devtools</artifactId>
-			<optional>true</optional> <!-- 表示依赖不会传递 -->
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-data-redis</artifactId>
-		</dependency>
-
-
-
-		<dependency>
-			<groupId>commons-discovery</groupId>
-			<artifactId>commons-discovery</artifactId>
-			<version>0.2</version>
-		</dependency>
-
-		<!-- 引入zipkin -->
-		<dependency>
-			<groupId>org.springframework.cloud</groupId>
-			<artifactId>spring-cloud-starter-zipkin</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.cloud</groupId>
-			<artifactId>spring-cloud-starter-feign</artifactId>
-		</dependency>
-
-
-	</dependencies>
-
-	<dependencyManagement>
-		<dependencies>
-			<dependency>
-				<groupId>org.springframework.cloud</groupId>
-				<artifactId>spring-cloud-dependencies</artifactId>
-				<version>${spring-cloud.version}</version>
-				<type>pom</type>
-				<scope>import</scope>
-			</dependency>
-		</dependencies>
-	</dependencyManagement>
-
-	<build>
-		<plugins>
-			<plugin>
-				<artifactId>maven-jar-plugin</artifactId>
-				<version>2.6</version>
-				<configuration>
-					<archive>
-						<manifest>
-							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-							<addClasspath>true</addClasspath>
-							<mainClass>com.xynet.pay.XynetServicePayThirdApplication</mainClass>
-							<classpathPrefix>dependency</classpathPrefix>
-							<useUniqueVersions>false</useUniqueVersions>
-						</manifest>
-					</archive>
-				</configuration>
-			</plugin>
-			<plugin>
-				<artifactId>maven-dependency-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>copy-dependencies</id>
-						<phase>package</phase>
-						<goals>
-							<goal>copy-dependencies</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-
-
-			<plugin>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<configuration>
-					<source>1.8</source>
-					<target>1.8</target>
-					<encoding>UTF-8</encoding>
-					<compilerArguments>
-						<extdirs>${project.basedir}/src/main/lib</extdirs>
-					</compilerArguments>
-				</configuration>
-			</plugin>
-
-			<!-- maven打包跳过编译 -->
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-surefire-plugin</artifactId>
-				<configuration>
-					<skip>true</skip>
-				</configuration>
-			</plugin>
-
-		</plugins>
-
-		<defaultGoal>compile</defaultGoal>
-
-		<!-- <resources> <resource> <directory>src/main/resources</directory> <targetPath>.</targetPath> 
-			</resource> <resource> <directory>src/main/lib</directory> <targetPath>.</targetPath> 
-			</resource> <resource> <directory>src/main/lib</directory> <targetPath>BOOT-INF/lib/</targetPath> 
-			<includes> <include>*.jar</include> </includes> </resource> </resources> -->
-
-		<resources>
-			<resource>
-				<directory>src/main/java</directory>
-				<includes>
-					<include>**/*.properties</include>
-					<include>**/*.xml</include>
-				</includes>
-				<filtering>false</filtering>
-			</resource>
-			<resource>
-				<directory>src/main/resources</directory>
-			</resource>
-		</resources>
-	</build>
-
-</project>

+ 0 - 63
src/main/java/com/xynet/pay/Exception/BusinessException.java

@@ -1,63 +0,0 @@
-package com.xynet.pay.Exception;
-/**
- * 业务异常
- * 
- * @author yangsj 
- */
-public class BusinessException extends RuntimeException
- {
-   private static final long serialVersionUID = 5808616192752024016L;
-   private String code;
-   private Object[] args;
- 
-   public BusinessException()
-   {
-   }
-   
-   public BusinessException(String code, String msg)
-   {
-     super(msg);
-     this.code = code;
-   }
-
-   public BusinessException(String code, String msg, Object[] _args)
-   {
-     super(msg);
-     this.code = code;
-     this.args = _args;
-   }
-
-   public BusinessException(Throwable exception)
-   {
-     super(exception);
-     getExceptionCode(exception);
-   }
- 
-   private void getExceptionCode(Throwable exception)
-   {
-     if ((exception instanceof BusinessException))
-     {
-       this.code = ((BusinessException)exception).getCode();
-     }
-     else
-     {
-       this.code = "999999";
-     }
-   }
- 
-   public String getCode() {
-     return this.code;
-   }
- 
-   public void setCode(String code) {
-     this.code = code;
-   }
- 
-   public Object[] getArgs() {
-     return this.args;
-   }
- 
-   public void setArgs(Object[] args) {
-     this.args = args;
-   }
- }

+ 0 - 58
src/main/java/com/xynet/pay/XynetServicePayThirdApplication.java

@@ -1,58 +0,0 @@
-package com.xynet.pay;
-
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.servlet.ServletComponentScan;
-import org.springframework.cache.annotation.EnableCaching;
-import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-import org.springframework.cloud.netflix.feign.EnableFeignClients;
-import org.springframework.cloud.netflix.hystrix.EnableHystrix;
-import org.springframework.context.annotation.Bean;
-import org.springframework.retry.annotation.EnableRetry;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-import java.util.TimeZone;
-import java.util.concurrent.Executor;
-import java.util.concurrent.ThreadPoolExecutor;
-@EnableCaching //开启缓存
-@SpringBootApplication
-@EnableHystrix
-@EnableTransactionManagement 
-@EnableDiscoveryClient
-@EnableFeignClients
-@EnableScheduling
-@EnableAsync
-@EnableRetry
-public class XynetServicePayThirdApplication {
-
-	public static void main(String[] args) {
-		init();		
-		SpringApplication.run(XynetServicePayThirdApplication.class, args);
-	}
-	private static void init(){ 
-		//设置时区
-	    System.setProperty("user.timezone","Asia/Shanghai"); 
-	    TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
-	}	
-	
-	/**
-	 * 公共日志执行线程池配置
-	 * 
-	 * @return
-	 */
-	@Bean(value = "publicLogTaskExecutor")
-	public Executor publicLogTaskExecutor() {
-		ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
-		executor.setThreadNamePrefix("PublicLogTaskExecutor");
-		executor.setCorePoolSize(10);
-		executor.setQueueCapacity(200);
-		executor.setMaxPoolSize(100);
-		executor.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardPolicy());
-		executor.initialize();
-		return executor;
-	}
-}

+ 0 - 20
src/main/java/com/xynet/pay/controller/TestController.java

@@ -1,20 +0,0 @@
-package com.xynet.pay.controller;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-
-@RestController
-@RequestMapping("test")
-public class TestController  {
-	private final Logger logger = LoggerFactory.getLogger(this.getClass());
-
-
-
-
-
-	
-
-}

+ 0 - 23
src/main/java/com/xynet/pay/foreignAPI/ApiClient.java

@@ -1,23 +0,0 @@
-package com.xynet.pay.foreignAPI;
-
-import org.springframework.cloud.netflix.feign.FeignClient;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-
-import java.util.Map;
-
-@FeignClient("service-api")
-public interface ApiClient {
-	
-	@RequestMapping(value = "/api/updateOrdeGoodsMeitu", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")
-	Map updateOrdeGoodsMeitu(@RequestBody Map paraMap);
-	
-	/**核减预定数*/
-	@RequestMapping(value="/api/updateOrdeGoodsPlat",method = RequestMethod.POST)
-	 Object updateOrdeGoodsPlat(@RequestBody Map paraMap);
-
-	@RequestMapping(value="/api/amr/socket",method = RequestMethod.POST)
-	Object socket(@RequestBody Map paraMap);
-
-}

+ 0 - 127
src/main/java/com/xynet/pay/util/AESUtil.java

@@ -1,127 +0,0 @@
-package com.xynet.pay.util;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.crypto.Cipher;
-import javax.crypto.spec.IvParameterSpec;
-import javax.crypto.spec.SecretKeySpec;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.Objects;
-
-public class AESUtil {
-    protected static final Logger logger = LoggerFactory.getLogger(AESUtil.class);
-
-    public static void main(String[] args) {
-        String data = "GaiSCUWBym:1588783320:20200403";
-        String key = "2170a8049257678b918fc0048e89bf17";
-        String machineid = "888888";
-        String encrypt = Objects.requireNonNull(encrypt(data, key)).toLowerCase();
-        System.out.println("加密前:" + data);
-        System.out.println("加密后:" + encrypt);
-        String[] cmds = {"curl", "-H", "Host: https://payapi.weixiao.qq.com/", "-H", "authorization: WxToken : " + machineid + encrypt, "-H", "Cache-Control: max-age=0", "--compressed", "https://payapi.weixiao.qq.com/config_v2"};
-        execCurl(cmds);
-    }
-
-    public static String encrypt(String data, String key) {
-
-        String ivString = key.substring(0,16);
-        //偏移量
-        byte[] iv = ivString.getBytes();
-        try {
-            Cipher cipher = Cipher.getInstance("AES/CFB/NoPadding");
-            int blockSize = cipher.getBlockSize();
-            byte[] dataBytes = data.getBytes();
-            int length = dataBytes.length;
-            //计算需填充长度
-
-            byte[] plaintext = new byte[length];
-            //填充
-            System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
-            SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");
-            //设置偏移量参数
-            IvParameterSpec ivSpec = new IvParameterSpec(iv);
-            cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
-            byte[] encryped = cipher.doFinal(plaintext);
-
-            return parseByte2HexStr(encryped);
-
-        } catch (Exception e) {
-            logger.info("AES加密错误"+e);
-            e.printStackTrace();
-            return null;
-        }
-
-    }
-
-    public static String encrypt(String data, String key,String ivString) {
-
-        //String ivString = key.substring(0,16);
-        //偏移量
-        byte[] iv = ivString.getBytes();
-        try {
-            Cipher cipher = Cipher.getInstance("AES/CFB/NoPadding");
-            int blockSize = cipher.getBlockSize();
-            byte[] dataBytes = data.getBytes();
-            int length = dataBytes.length;
-            //计算需填充长度
-
-            byte[] plaintext = new byte[length];
-            //填充
-            System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
-            SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");
-            //设置偏移量参数
-            IvParameterSpec ivSpec = new IvParameterSpec(iv);
-            cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
-            byte[] encryped = cipher.doFinal(plaintext);
-
-            return parseByte2HexStr(encryped);
-
-        } catch (Exception e) {
-            logger.info("AES加密错误"+e);
-            e.printStackTrace();
-            return null;
-        }
-
-    }
-
-    public static String parseByte2HexStr(byte[] buf) {
-        StringBuffer sb = new StringBuffer();
-
-        for (int i = 0; i < buf.length; ++i) {
-            String hex = Integer.toHexString(buf[i] & 255);
-            if (hex.length() == 1) {
-                hex = '0' + hex;
-            }
-            sb.append(hex.toUpperCase());
-        }
-
-        return sb.toString();
-    }
-
-
-
-    public static String execCurl(String[] cmds) {
-        ProcessBuilder process = new ProcessBuilder(cmds);
-        Process p;
-        try {
-            p = process.start();
-            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
-            StringBuilder builder = new StringBuilder();
-            String line = null;
-            while ((line = reader.readLine()) != null) {
-                builder.append(line);
-                builder.append(System.getProperty("line.separator"));
-            }
-            return builder.toString();
-
-        } catch (IOException e) {
-            System.out.print("error");
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-}

+ 0 - 144
src/main/java/com/xynet/pay/util/ArrayUtils.java

@@ -1,144 +0,0 @@
-package com.xynet.pay.util;
-
-/**
- * <p>Operations on arrays, primitive arrays (like {@code int[]}) and
- * primitive wrapper arrays (like {@code Integer[]}).
- *
- * <p>This class tries to handle {@code null} input gracefully.
- * An exception will not be thrown for a {@code null}
- * array input. However, an Object array that contains a {@code null}
- * element may throw an exception. Each method documents its behaviour.
- *
- * <p>#ThreadSafe#
- * @since 2.0
- */
-
-public class ArrayUtils {
-
-    /**
-     * An empty immutable {@code byte} array.
-     */
-    public static final byte[] EMPTY_BYTE_ARRAY = new byte[0];
-
-
-    /**
-     * Copies the specified range of the specified array into a new array.
-     * The initial index of the range (<tt>from</tt>) must lie between zero
-     * and <tt>original.length</tt>, inclusive.  The value at
-     * <tt>original[from]</tt> is placed into the initial element of the copy
-     * (unless <tt>from == original.length</tt> or <tt>from == to</tt>).
-     * Values from subsequent elements in the original array are placed into
-     * subsequent elements in the copy.  The final index of the range
-     * (<tt>to</tt>), which must be greater than or equal to <tt>from</tt>,
-     * may be greater than <tt>original.length</tt>, in which case
-     * <tt>(byte)0</tt> is placed in all elements of the copy whose index is
-     * greater than or equal to <tt>original.length - from</tt>.  The length
-     * of the returned array will be <tt>to - from</tt>.
-     *
-     * @param original the array from which a range is to be copied
-     * @param from the initial index of the range to be copied, inclusive
-     * @param to the final index of the range to be copied, exclusive.
-     *     (This index may lie outside the array.)
-     * @return a new array containing the specified range from the original array,
-     *     truncated or padded with zeros to obtain the required length
-     * @throws ArrayIndexOutOfBoundsException if {@code from < 0}
-     *     or {@code from > original.length}
-     * @throws IllegalArgumentException if <tt>from &gt; to</tt>
-     * @throws NullPointerException if <tt>original</tt> is null
-     * @since 1.6
-     */
-    public static byte[] copyOfRange(byte[] original, int from, int to) {
-        int newLength = to - from;
-        if (newLength < 0)
-            throw new IllegalArgumentException(from + " > " + to);
-        byte[] copy = new byte[newLength];
-        System.arraycopy(original, from, copy, 0,
-                Math.min(original.length - from, newLength));
-        return copy;
-    }
-
-    /**
-     * <p>Produces a new {@code byte} array containing the elements
-     * between the start and end indices.
-     *
-     * <p>The start index is inclusive, the end index exclusive.
-     * Null array input produces null output.
-     *
-     * @param array  the array
-     * @param startIndexInclusive  the starting index. Undervalue (&lt;0)
-     *      is promoted to 0, overvalue (&gt;array.length) results
-     *      in an empty array.
-     * @param endIndexExclusive  elements up to endIndex-1 are present in the
-     *      returned subarray. Undervalue (&lt; startIndex) produces
-     *      empty array, overvalue (&gt;array.length) is demoted to
-     *      array length.
-     * @return a new array containing the elements between
-     *      the start and end indices.
-     * @since 2.1
-     */
-    public static byte[] subarray(final byte[] array, int startIndexInclusive, int endIndexExclusive) {
-        if (array == null) {
-            return null;
-        }
-        if (startIndexInclusive < 0) {
-            startIndexInclusive = 0;
-        }
-        if (endIndexExclusive > array.length) {
-            endIndexExclusive = array.length;
-        }
-        final int newSize = endIndexExclusive - startIndexInclusive;
-        if (newSize <= 0) {
-            return EMPTY_BYTE_ARRAY;
-        }
-
-        final byte[] subarray = new byte[newSize];
-        System.arraycopy(array, startIndexInclusive, subarray, 0, newSize);
-        return subarray;
-    }
-
-    /**
-     * <p>Adds all the elements of the given arrays into a new array.
-     * <p>The new array contains all of the element of {@code array1} followed
-     * by all of the elements {@code array2}. When an array is returned, it is always
-     * a new array.
-     *
-     * <pre>
-     * ArrayUtils.addAll(array1, null)   = cloned copy of array1
-     * ArrayUtils.addAll(null, array2)   = cloned copy of array2
-     * ArrayUtils.addAll([], [])         = []
-     * </pre>
-     *
-     * @param array1  the first array whose elements are added to the new array.
-     * @param array2  the second array whose elements are added to the new array.
-     * @return The new byte[] array.
-     * @since 2.1
-     */
-    public static byte[] addAll(final byte[] array1, final byte... array2) {
-        if (array1 == null) {
-            return clone(array2);
-        } else if (array2 == null) {
-            return clone(array1);
-        }
-        final byte[] joinedArray = new byte[array1.length + array2.length];
-        System.arraycopy(array1, 0, joinedArray, 0, array1.length);
-        System.arraycopy(array2, 0, joinedArray, array1.length, array2.length);
-        return joinedArray;
-    }
-
-    /**
-     * <p>Clones an array returning a typecast result and handling
-     * {@code null}.
-     *
-     * <p>This method returns {@code null} for a {@code null} input array.
-     *
-     * @param array  the array to clone, may be {@code null}
-     * @return the cloned array, {@code null} if {@code null} input
-     */
-    public static byte[] clone(final byte[] array) {
-        if (array == null) {
-            return null;
-        }
-        return array.clone();
-    }
-
-}

+ 0 - 136
src/main/java/com/xynet/pay/util/Base64Utils.java

@@ -1,136 +0,0 @@
-package com.xynet.pay.util;
-
-
-import sun.misc.BASE64Encoder;
-
-import java.io.*;
-
-
-/**
- * BASE64编码解码工具包
- *
- * @author IceWee
- * @date 2012-5-19
- * @version 1.0
- */
-public class Base64Utils {
-
-    /**
-     * 文件读取缓冲区大小
-     */
-    private static final int CACHE_SIZE = 1024;
-
-    /**
-     * <p>
-     * BASE64字符串解码为二进制数据
-     * </p>
-     *
-     * @param base64
-     * @return
-     * @throws Exception
-     */
-    public static byte[] decode(String base64) throws Exception {
-    	return new sun.misc.BASE64Decoder().decodeBuffer(base64) ; //Base64.decodeBase64(base64);
-    }
-
-    /**
-     * <p>
-     * 二进制数据编码为BASE64字符串
-     * </p>
-     *
-     * @param bytes
-     * @return
-     * @throws Exception
-     */
-    public static String encode(byte[] bytes) throws Exception {
-    	//return Base64.encodeBase64String(bytes);
-    	return new BASE64Encoder().encode(bytes);
-    }
-
-    /**
-     * <p>
-     * 将文件编码为BASE64字符串
-     * </p>
-     * <p>
-     * 大文件慎用,可能会导致内存溢出
-     * </p>
-     *
-     * @param filePath 文件绝对路径
-     * @return
-     * @throws Exception
-     */
-    public static String encodeFile(String filePath) throws Exception {
-        byte[] bytes = fileToByte(filePath);
-        return encode(bytes);
-    }
-
-    /**
-     * <p>
-     * BASE64字符串转回文件
-     * </p>
-     *
-     * @param filePath 文件绝对路径
-     * @param base64 编码字符串
-     * @throws Exception
-     */
-    public static void decodeToFile(String filePath, String base64) throws Exception {
-        byte[] bytes = decode(base64);
-        byteArrayToFile(bytes, filePath);
-    }
-
-    /**
-     * <p>
-     * 文件转换为二进制数组
-     * </p>
-     *
-     * @param filePath 文件路径
-     * @return
-     * @throws Exception
-     */
-    public static byte[] fileToByte(String filePath) throws Exception {
-        byte[] data = new byte[0];
-        File file = new File(filePath);
-        if (file.exists()) {
-            FileInputStream in = new FileInputStream(file);
-            ByteArrayOutputStream out = new ByteArrayOutputStream(2048);
-            byte[] cache = new byte[CACHE_SIZE];
-            int nRead = 0;
-            while ((nRead = in.read(cache)) != -1) {
-                out.write(cache, 0, nRead);
-                out.flush();
-            }
-            out.close();
-            in.close();
-            data = out.toByteArray();
-        }
-        return data;
-    }
-
-    /**
-     * <p>
-     * 二进制数据写文件
-     * </p>
-     *
-     * @param bytes 二进制数据
-     * @param filePath 文件生成目录
-     */
-    public static void byteArrayToFile(byte[] bytes, String filePath) throws Exception {
-        InputStream in = new ByteArrayInputStream(bytes);
-        File destFile = new File(filePath);
-        if (!destFile.getParentFile().exists()) {
-            destFile.getParentFile().mkdirs();
-        }
-        destFile.createNewFile();
-        OutputStream out = new FileOutputStream(destFile);
-        byte[] cache = new byte[CACHE_SIZE];
-        int nRead = 0;
-        while ((nRead = in.read(cache)) != -1) {
-            out.write(cache, 0, nRead);
-            out.flush();
-        }
-        out.close();
-        in.close();
-    }
-
-
-}

+ 0 - 150
src/main/java/com/xynet/pay/util/ConvertData.java

@@ -1,150 +0,0 @@
-package com.xynet.pay.util;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.util.Map;
-import java.util.TreeMap;
-
-public class ConvertData {
-
-	private final static String EQUAL_SIGN = "=";
-	private final static String AND_SIGN = "&";
-	
-	/**
-	 * 组装验签的明文(按自然树进行组装),用于签名
-	 * 
-	 * @param treeMap
-	 * @return
-	 */
-	public static String convertToSign(TreeMap<String, String> treeMap) {
-		
-		StringBuilder plainTextBuffer = new StringBuilder();
-		for (String key : treeMap.keySet()) {
-			if ("signature".equals(key)) {
-				// 签名域本身不是明文内容之一,所以要过滤掉
-				continue;
-			}
-			String value = treeMap.get(key);
-			//空值或空字符串不参与签名验签运算
-			if(!isEmpty(value)){
-				plainTextBuffer.append(key);
-				plainTextBuffer.append(EQUAL_SIGN);
-				try {
-					plainTextBuffer.append(URLEncoder.encode(value, "UTF-8"));
-				} catch (UnsupportedEncodingException e) {
-					throw new RuntimeException(e);
-				}
-				plainTextBuffer.append(AND_SIGN);
-			}
-		}
-		
-		if(plainTextBuffer.length()<1)
-			return plainTextBuffer.toString();
-		
-		return plainTextBuffer.substring(0, plainTextBuffer.length() - 1);
-	}
-	
-	/**
-	 * 组装验签的明文(按自然树进行组装),用于验签
-	 * 
-	 * @param treeMap
-	 * @return
-	 */
-	public static String convertToVerify(TreeMap<String, String> treeMap) {
-		
-		StringBuilder plainTextBuffer = new StringBuilder();
-		for (String key : treeMap.keySet()) {
-			if ("signature".equals(key)) {
-				// 签名域本身不是明文内容之一,所以要过滤掉
-				continue;
-			}
-			String value = treeMap.get(key);
-			//空值或空字符串不参与签名验签运算
-			if(!isEmpty(value)){
-				plainTextBuffer.append(key);
-				plainTextBuffer.append(EQUAL_SIGN);
-				try {
-					plainTextBuffer.append(URLEncoder.encode(value, "UTF-8"));
-				} catch (UnsupportedEncodingException e) {
-					throw new RuntimeException(e);
-				}
-				plainTextBuffer.append(AND_SIGN);
-			}
-		}
-		
-		if(plainTextBuffer.length()<1)
-			return plainTextBuffer.toString();
-		
-		return plainTextBuffer.substring(0, plainTextBuffer.length() - 1);
-	}
-	
-	/**
-	 * 转换为接口对应的应答报文(按接口文档进行组装)
-	 * 
-	 * @param map
-	 * @return
-	 */
-	public static String convertToMessage(Map<String, String> map) {
-
-		StringBuilder tempMessage = new StringBuilder();
-		for (String key : map.keySet()) {
-			String value = map.get(key);
-			if(!isEmpty(value)){
-				tempMessage.append(key);
-				tempMessage.append(EQUAL_SIGN);
-				try {
-					tempMessage.append(URLEncoder.encode(value, "UTF-8"));
-				} catch (UnsupportedEncodingException e) {
-					throw new RuntimeException(e);
-				}
-				tempMessage.append(AND_SIGN);
-			}
-		}
-		
-		if(tempMessage.length()<1)
-			return tempMessage.toString();
-		
-		return tempMessage.substring(0, tempMessage.length() - 1);
-	}
-	
-	/**
-	 * 将key=value&key=value的字符串转成map
-	 * 
-	 * @param message
-	 * @return
-	 */
-	public static Map<String, String> convertStringToMap(String message) {
-		Map<String, String> map = new TreeMap<String, String>();
-		boolean hasError = false;
-		String[] ss = message.split("&");
-		for (String s : ss) {
-			if (s == null || s.isEmpty()) {
-				continue;
-			}
-			String[] kv = s.split("=");
-			if (kv.length == 2) {
-				try {
-					map.put(kv[0], URLDecoder.decode(kv[1], "UTF-8"));
-				} catch (UnsupportedEncodingException e) {
-				}
-			} else {
-				hasError = true;
-			}
-		}
-		if (hasError) {
-			System.out.println("解析UPMP报文可能出现异常。报文是【{"+message+"}】");
-		}
-		return map;
-	}
-	
-	/**
-	 * 判断字符串是否为空。会自动trim。
-	 * 
-	 * @param str
-	 * @return
-	 */
-	private static boolean isEmpty(String str) {
-		return (str == null || str.trim().isEmpty());
-	}
-}

+ 0 - 410
src/main/java/com/xynet/pay/util/DateUtil.java

@@ -1,410 +0,0 @@
-package com.xynet.pay.util;
-
-import java.text.ParseException;
-import java.text.ParsePosition;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-
-
-/**
- * Copyright © 2018 xynet Tech Ltd. All rights reserved
- * @author: sund
- * @date: 2018年2月9日 下午3:21:58
- * @remark:日期工具类
- */
-public class DateUtil {
-	static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-	static SimpleDateFormat ymd = new SimpleDateFormat("yyyy-MM-dd");//yyyyMMddHHmmss
-	static SimpleDateFormat ymdhms = new SimpleDateFormat("yyyyMMddHHmmss");
-	static SimpleDateFormat yms = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
-	static SimpleDateFormat yms2 = new SimpleDateFormat("YYYYMMDD'T'HHMMSS'Z'");
-
-	/**
-	 * 将Date类型转换为字符串
-	 * 
-	 * @param date
-	 *            日期类型
-	 * @return 日期字符串
-	 */
-	public static String format(Date date) {
-		return format(date, "yyyy-MM-dd HH:mm:ss");
-	}
-
-	/**
-	 * 将Date类型转换为字符串
-	 * 
-	 * @param date
-	 *            日期类型
-	 * @param pattern
-	 *            字符串格式
-	 * @return 日期字符串
-	 */
-	public static String format(Date date, String pattern) {
-		if (date == null) {
-			return "null";
-		}
-		if (pattern == null || pattern.equals("") || pattern.equals("null")) {
-			pattern = "yyyy-MM-dd HH:mm:ss";
-		}
-		return new SimpleDateFormat(pattern).format(date);
-	}
-
-	/**
-	 * 将字符串转换为Date类型
-	 *
-	 * @param date
-	 *            字符串类型
-	 * @return 日期类型(yyyy-MM-dd HH:mm:ss)
-	 */
-	public static Date format(String date) {
-		return format(date, null);
-	}
-
-	/**
-	 * 将字符串转换为Date类型
-	 *
-	 * @param date
-	 *            字符串类型
-	 * @param pattern
-	 *            格式
-	 * @return 日期类型
-	 */
-	public static Date format(String date, String pattern) {
-		if (pattern == null || pattern.equals("") || pattern.equals("null")) {
-			pattern = "yyyy-MM-dd HH:mm:ss";
-		}
-		if (date == null || date.equals("") || date.equals("null")) {
-			return new Date();
-		}
-		Date d = null;
-		try {
-			d = new SimpleDateFormat(pattern).parse(date);
-		} catch (ParseException pe) {
-		}
-		return d;
-	}
-
-	 // 两天之间的天数
-	public static int daysBetween(String startDate, String endDate)
-			throws ParseException {
-		 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-		 Date start = sdf.parse(startDate);
-		 Date end = sdf.parse(endDate);
-		 return  daysBetween(end,start);
-	}
-	
-	/*
-	 * 求两个日期之间的天数
-	 */
-	public static int daysBetween(Date startDate,Date endDate)
-	{
-		//一天24小时*60分钟*60秒*1000毫秒
-		return  (int) ((endDate.getTime() - 
-				startDate.getTime()-10) /(24*60*60*1000));
-	}
-	
-	/*
-	 * 时间格式的转换
-	 */
-	public static Date formatUtc(String str)
-	{
-		String strTime = str.replace("Z", " UTC");
-		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z");
-		Date dateTime = null;
-		try {
-			dateTime = format.parse(strTime);
-		} catch (ParseException e) {
-			e.printStackTrace();
-		}
-		return  dateTime;
-	}
-	
-	/*
-	 * 求某一日期加N个小时后的时间
-	 */
-	public static String dateAddHours(Date startDate,int hours,String pattern)
-	{
-		//一天24小时*60分钟*60秒*1000毫秒
-		return format(new Date(startDate.getTime()+hours*60*60*1000),pattern);
-
-	}
-
-
-		/**
-		 * 判断是否在同一个月
-		 * @param startDate yyyy-MM-dd
-		 * @param endDate yyyy-MM-dd
-		 * @return false:不在同一个月内,true在同一个月内
-		 */
-		public static boolean isMonth(String startDate,String endDate){
-			if(margin(startDate, endDate)>31){
-				return false;
-			}
-			int startMonth = Integer.parseInt(startDate.substring(5, 7));
-			int endMonth = Integer.parseInt(endDate.substring(5, 7));
-			if(startMonth==endMonth){
-				return true;
-			}else{
-				return false;
-			}
-		}
-		/**
-		 * 计算开始日期和结束日期差
-		 * @param startDate yyyy-MM-dd
-		 * @param endDate yyyy-MM-dd
-		 * @return
-		 */
-		private static int margin(String startDate,String endDate){
-			ParsePosition pos = new ParsePosition(0);
-			ParsePosition pos2 = new ParsePosition(0);
-			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-			Date ds = sdf.parse(startDate, pos);
-			Date de = sdf.parse(endDate, pos2);
-			long l = de.getTime()-ds.getTime();
-			int margin = (int)(l/24*60*60*1000);
-			return margin;
-		}
-
-	/**
-	 * 判断时间跨度是否相差一个月
-	 * @param startTime  yyyyMMdd
-	 * @param endTime
-	 */
-    public static boolean  isDifference(String startTime,String endTime){
-        SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
-        try {
-            Date d1 = f.parse(startTime);
-            Date d2 = f.parse(endTime);
-            //Date d2 = f.parse("20120101");
-            long day = (d2.getTime()-d1.getTime())/1000/60/60/24 + 1;
-            System.out.println("d1和d2相差" + day + "天。");
-            int month = isMaxMonth(startTime);
-            System.out.println(month);
-            if(day > month){
-                return false;
-            }else {
-                return  true;
-            }
-        } catch (ParseException e) {
-            e.printStackTrace();
-            return false;
-        }
-    }
-
-    /**
-     * 判断这年的某月有多少天
-     * @param startTime 时间  yyyyMMdd
-     * @return
-     */
-    public static int isMaxMonth(String startTime) {
-        int year = 0;
-        int month = 0;
-        int days= 0 ;
-        year = Integer.parseInt(startTime.substring(0, 4));
-        month = Integer.parseInt(startTime.substring(4, 6));
-        switch(month){
-            case 2:
-                boolean flag=(year%4==0&&year%100!=100)||year%400==0;
-                if(flag){
-                    days=29;
-                }else{
-                    days=28;
-                }
-                break;
-            case 4:
-            case 6:
-            case 9:
-            case 11:
-                days=30;
-                break;
-            default:
-                days=31;
-                break;
-        }
-        return days;
-    }
-
-	/**
-	 * 返回序列化
-	 * @param date
-	 * @param index
-	 * @return
-	 */
-	public static int timexlh(Date date,int index) {
-		return (date.getHours()*60+date.getMinutes())/index;
-	}
-
-	/**
-	 *  获取昨天的yyyyMMdd
-
-	 * @param date
-	 * @return
-	 */
-	public static int yesterdayyyMMdd(Date date,int index) {
-		Date yesterday = new Date(date.getTime() - 86400000L*index);
-		SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
-		String time = format.format(yesterday);
-		return Integer.parseInt(time);
-	}
-	/**
-	 *  获取前天的yyyyMMdd
-
-	 * @param date
-	 * @return
-	 */
-	public static int beforeYesterdayyyMMdd(Date date) {
-		Date yesterday = new Date(date.getTime() - 172800000l);
-		SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
-		String time = format.format(yesterday);
-		return Integer.parseInt(time);
-	}
-
-	/**
-	 * 获取今天的yyyyMMdd
-	 * @param date
-	 * @return
-	 */
-	public static int todayyyMMdd(Date date) {
-		SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
-		String time = format.format(date);
-		return Integer.parseInt(time);
-	}
-
-	/*public static void main(String[] args){
-        final BASE64Encoder encoder = new BASE64Encoder();
-        final BASE64Decoder decoder = new BASE64Decoder();
-        final String text = "字串文字sad22";
-        final byte[] textByte;
-        try {
-            textByte = text.getBytes("UTF-8");//5a2X5Liy5paH5a2X.5a2X5Liy5paH5a2XMjI=.5a2X5Liy5paH5a2Xc2FkMjI=
-            final String encodedText = encoder.encode(textByte);
-            System.out.println(encodedText);
-                System.out.println(new String(decoder.decodeBuffer(encodedText), "UTF-8"));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }*/
-//编码
-
-
-
-    /**
-     * 时间字符串转intger
-     * @param str
-     * @return
-     */
-    public  static  Integer stringToInt(String str){
-	    try {
-	        //2019-08-08
-            StringBuffer sb = new StringBuffer();
-            String year = str.substring(0, 4);
-            String moth = str.substring(5, 7);
-            String day = str.substring(8, 10);
-            sb.append(year);
-            sb.append(moth);
-            sb.append(day);
-            return Integer.parseInt(sb.toString());
-        }catch (Exception e){
-	        return null;
-        }
-	}
-
-
-	public  static  String toString(String str){
-		try {
-			//2019-08-08
-			StringBuffer sb = new StringBuffer();
-			String year = str.substring(0, 4);
-			String moth = str.substring(4, 6);
-			String day = str.substring(6, 8);
-			String HH = str.substring(8, 10);
-			String mm = str.substring(10, 12);
-			String ss = str.substring(12, 14);
-			sb.append(year).append("-");
-			sb.append(moth).append("-");
-			sb.append(day).append(" ").append(HH).append(":").append(mm).append(":").append(ss);
-			return sb.toString();
-		}catch (Exception e){
-			return null;
-		}
-	}
-
-    /**
-     * 时间转字符串yyyyMMddHHmmss
-     * @param date
-     * @return
-     */
-	public static String dateToString(Date date){
-        String format = ymdhms.format(date);
-        return format;
-    }
-	public static String dateToString2(Date date){
-		String format = yms.format(date);
-		return format;
-	}
-
-	public static String dateToString3(Date date,String s,Integer i){
-		long time = date.getTime() - 24*60*60*1000*i;
-		SimpleDateFormat sdf = new SimpleDateFormat(s);
-		String format = sdf.format(time);
-		return format;
-	}
-
-    public static Date stringToDate(String str) {
-        Date parse = null;
-        try {
-            parse = ymdhms.parse(str);
-        } catch (ParseException e) {
-            e.printStackTrace();
-        }
-        return parse;
-    }
-
-	/**
-	 * 获取i、月(前,后)的日期
-	 * @param i
-	 * @return
-	 */
-	public static String dateTo(int i,String s) {
-		SimpleDateFormat sdf = new SimpleDateFormat(s);
-		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.MONTH, i);
-		Date time = cal.getTime();
-		String format = sdf.format(time);
-		return  format;
-	}
-
-    public static void main(String[] args) throws ParseException {
-       /* Date date = new Date();
-        System.out.println("本地时间Date: " + date);
-        TimeZone tz = TimeZone.getTimeZone("UTC");
-        DateFormat df = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'");
-        df.setTimeZone(tz);  //获取时区
-        String nowAsISO = df.format(date);
-        System.out.println("本地时间Date--->UTC时间String:" + nowAsISO);*/
-        String transAmt = "1.22";//支付金额
-        double v = Double.parseDouble(transAmt);
-        int fee = (int) (v*100);
-        System.out.println(fee);
-    }
-
-    /**
-	 * 判断时间是否在两个时间点之间
-	 * @param time
-	 * @return
-	 * @throws ParseException
-	 */
-	public static boolean isDaysBetween(String time,String starttime,String endtime)
-			throws ParseException {		
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-		Date start = sdf.parse(starttime);
-		Date end = sdf.parse(endtime);
-		Date now = sdf.parse(time);
-		if ((now.compareTo(start) == 1 || (now.compareTo(start) == 0))
-				&& end.compareTo(now) == 1) {
-			return true;
-		}
-		return false;
-	}
-
-}

+ 0 - 166
src/main/java/com/xynet/pay/util/FileUtils.java

@@ -1,166 +0,0 @@
-package com.xynet.pay.util;
-
-import java.io.*;
-
-/**
- * Copyright (C) BlakeQu All Rights Reserved <blakequ@gmail.com>
- * <p>
- * Licensed under the blakequ.com License, Version 1.0 (the "License");
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * <p>
- * author  : quhao <blakequ@gmail.com> <br>
- * date     : 2017/2/22 21:08 <br>
- * last modify author : <br>
- * version : 1.0 <br>
- * description:
- */
-
-public class FileUtils {
-
-    /**
-     * 注意保持加密内容的时候不能先将byte数组转换为string,因为转换为string的时候,后面会默认加上结束符,造成解密失败,故而在读取和写入都使用byte数组
-     * @param data
-     * @param filePath
-     */
-    public static boolean saveDataToFile(byte[] data, File filePath){
-        if (data == null || filePath == null){
-            throw  new IllegalArgumentException("Input data is null or output path is null");
-        }
-        boolean result = false;
-        try {
-            result = write(filePath, data, false);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return result;
-    }
-
-    /**
-     * 从文件读取byte数组
-     * @param sourceFile
-     * @return
-     * @throws FileNotFoundException
-     */
-    public static byte[] getDataFromFile(File sourceFile) throws FileNotFoundException {
-        return getBytesFromInputStream(new FileInputStream(sourceFile));
-    }
-
-    /**
-     * 从输入流中读取byte数组
-     * String filePath
-     */
-    public static byte[] getBytesFromInputStream(InputStream inputStream){
-        byte[] buffer = null;
-        ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
-        byte[] b = new byte[1000];
-        try {
-            int n;
-            while ((n = inputStream.read(b)) != -1) {
-                bos.write(b, 0, n);
-            }
-            buffer = bos.toByteArray();
-        } catch (FileNotFoundException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        } finally {
-            try {
-                inputStream.close();
-                bos.close();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-        return buffer;
-    }
-
-
-    /**
-     * 读取密钥信息
-     *
-     * @param in
-     * @return
-     * @throws IOException
-     */
-    public static String readString(InputStream in) throws IOException {
-        BufferedReader br = new BufferedReader(new InputStreamReader(in));
-        String readLine = null;
-        StringBuilder sb = new StringBuilder();
-        while ((readLine = br.readLine()) != null) {
-            if (readLine.charAt(0) == '-') {
-                continue;
-            } else {
-                sb.append(readLine);
-                sb.append('\r');
-            }
-        }
-
-        return sb.toString();
-    }
-
-    /**
-     * 将内容写文件
-     * @param file
-     * @param content
-     * @param append
-     * @return
-     */
-    private static boolean write(File file, byte[] content, boolean append) {
-        if(file != null && content != null) {
-            if(!file.exists()) {
-                file = createNewFile(file);
-            }
-
-            FileOutputStream ops = null;
-
-            try {
-                ops = new FileOutputStream(file, append);
-                ops.write(content);
-                return true;
-            } catch (Exception var15) {
-                var15.printStackTrace();
-            } finally {
-                try {
-                    ops.close();
-                } catch (IOException var14) {
-                    var14.printStackTrace();
-                }
-                ops = null;
-            }
-
-            return false;
-        }
-        return false;
-    }
-
-    /**
-     * 创建新文件
-     * @param file
-     * @return
-     */
-    private static File createNewFile(File file) {
-        try {
-            if(file.exists()) {
-                return file;
-            } else {
-                File e = file.getParentFile();
-                if(!e.exists()) {
-                    e.mkdirs();
-                }
-
-                if(!file.exists()) {
-                    file.createNewFile();
-                }
-
-                return file;
-            }
-        } catch (IOException var2) {
-            var2.printStackTrace();
-            return null;
-        }
-    }
-}

+ 0 - 160
src/main/java/com/xynet/pay/util/HMAC_SHA1Utils.java

@@ -1,160 +0,0 @@
-package com.xynet.pay.util;
-
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.util.*;
-
-import javax.crypto.Mac;
-import javax.crypto.spec.SecretKeySpec;
-
-import org.apache.commons.codec.binary.Base64;
-
-/**
- * HMAC_SHA1 Sign生成器. 
- *
- * 需要apache.commons.codec包 
- *
- */
-public class HMAC_SHA1Utils {
-
-    private static final String HMAC_SHA1_ALGORITHM = "HmacSHA1";
-
-    /**
-     * 使用 HMAC-SHA1 签名方法对data进行签名 
-     *
-     * @param data
-     *            被签名的字符串 
-     * @param key
-     *            密钥      
-     * @return
-    加密后的字符串
-     */
-    public static String genHMAC(String data, String key) {
-        byte[] result = null;
-        try {
-            //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称    
-            SecretKeySpec signinKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);
-            //生成一个指定 Mac 算法 的 Mac 对象    
-            Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
-            //用给定密钥初始化 Mac 对象    
-            mac.init(signinKey);
-            //完成 Mac 操作     
-            byte[] rawHmac = mac.doFinal(data.getBytes());
-            result = Base64.encodeBase64(rawHmac);
-
-        } catch (NoSuchAlgorithmException e) {
-            System.err.println(e.getMessage());
-        } catch (InvalidKeyException e) {
-            System.err.println(e.getMessage());
-        }
-        if (null != result) {
-            return new String(result);
-        } else {
-            return null;
-        }
-    }
-    /**
-     * 测试 
-     * @param args
-     */
-    /*public static void main(String[] args) {
-        String genHMAC = genHMAC("111", "2222");
-        System.out.println(genHMAC.length()); //28
-        System.out.println(genHMAC);  // O5fviq3DGCB5NrHcl/JP6+xxF6s=
-    }*/
-
-    public static void main(String[] args){//OmmcT/30A1TyGAxjNE/9bdM0OAk=
-        String key = "YTVhNzUxYzAtOWU3My00NTM5LWFlYWQtNjFiMjhlOGEwZWI2MjAyMDA1MTgxMTEx";
-        String secret = "NDdkYWE3ZTMtOTM3NC00YWQ1LWE1ZWMtNGRkOTg1MzVkMzk5MjAyMDA1MTgxMTEx";
-        Map map = new HashMap();
-        List<Map> invoices = new ArrayList<>();
-        Date date = new Date();
-        Map invoices_map = new HashMap();
-        invoices_map.put("order_id","200519140100001433");
-        invoices_map.put("invoice_date",DateUtil.dateToString3(date,"yyyyMMdd",0));
-        invoices_map.put("invoice_time",DateUtil.dateToString3(date,"HHmmss",0));
-        invoices_map.put("tax_type","3");
-        invoices_map.put("tax_amount",0);
-        invoices_map.put("sales_amount",0);
-        invoices_map.put("tax_rate",0.05);
-        invoices_map.put("free_tax_sales_amount",0);
-        invoices_map.put("zero_tax_sales_amount",0);
-        invoices_map.put("total_amount",1234);
-        invoices_map.put("main_remark","测试");
-        invoices_map.put("print_mark","Y");
-        invoices_map.put("random_number","AAAA");
-
-        Map buyer = new HashMap();
-        buyer.put("identifier","00000000");
-        buyer.put("name","兴元网络");
-        buyer.put("email_address","282929986@qq.com");
-        invoices_map.put("buyer",buyer);
-        invoices.add(invoices_map);
-        map.put("invoices",invoices);
-        List<Map> details1 = new ArrayList<>();
-        Map details = new HashMap();
-        details.put("description","FOOD");
-        details.put("quantity",1);
-        details.put("sequence_number","1");
-        details.put("unit_price",1234);
-        details.put("amount",1234);
-        details1.add(details);
-        invoices_map.put("details",details1);
-
-       String data = "{\n" +
-                "\t\"invoices\": [{\n" +
-                "\t\t\"order_id\": \"200519140100001434\",\n" +
-                "\t\t\"buyer\": {\n" +
-                "\t\t\t\"identifier\": \"53567686\",\n" +
-                "\t\t\t\"name\": \"兴元网络\"\n" +
-                //"\t\t\t\"email_address\": \"282929986@qq.com\"\n" +
-                "\t\t},\n" +
-                "\t\t\"invoice_date\": \"20200520\",\n" +
-                "\t\t\"invoice_time\": \"142022\",\n" +
-                "\t\t\"tax_type\": \"1\",\n" +
-                "\t\t\"tax_rate\": 0.5,\n" +
-                "\t\t\"tax_amount\": 24,\n" +
-                "\t\t\"sales_amount\": 1234,\n" +
-                "\t\t\"free_tax_sales_amount\": 12,\n" +
-                "\t\t\"zero_tax_sales_amount\": 123,\n" +
-                "\t\t\"total_amount\": 1234,\n" +
-                "\t\t\"print_mark\": \"Y\",\n" +
-                "\t\t\"random_number\": \"AAAA\",\n" +
-                "\t\t\"details\": [{\n" +
-                "\t\t\t\"description\": \"FOOD\",\n" +
-                "\t\t\t\"quantity\": 1,\n" +
-                "\t\t\t\"sequence_number\": \"1\",\n" +
-                "\t\t\t\"unit_price\": 1000,\n" +
-                "\t\t\t\"amount\": 245\n" +
-                "\t\t}]\n" +
-                "\t}]\n" +
-                "}";
-
-        long l = System.currentTimeMillis()/1000;
-        Map<String, Object> params = new HashMap<>();
-        params.put("api_key",key);
-        params.put("timestamp",l+"");
-        params.put("auto_assign_invoice_track","true");
-        params.put("invoice",JsonUtils.objectToJson(map));
-
-        TreeMap<String,Object> treeMap = new TreeMap();
-        treeMap.put("api_key",key);
-        treeMap.put("timestamp",l+"");
-        treeMap.put("auto_assign_invoice_track","true");
-        treeMap.put("invoice",JsonUtils.objectToJson(map));
-        String data1 = "";
-
-        for (Map.Entry<String, Object> entry : treeMap.entrySet()) {
-            data1+=entry.getKey()+"="+entry.getValue()+"&";
-        }
-        String substring = data1.substring(0, data1.length() - 1);
-        System.out.println(substring);
-        String genHMAC = genHMAC(substring, secret);
-        System.out.println(genHMAC.length()); //28
-        System.out.println(genHMAC);  // O5fviq3DGCB5NrHcl/JP6+xxF6s=
-        String url = "https://boxtest.ecloudlife.com/customer/api/C0401";
-        System.out.println("参数:"+JsonUtils.objectToJson(params));
-        String s = HttpServiceUtils.sendPost(url, params, genHMAC);
-        System.out.println(s);
-    }
-} 

+ 0 - 38
src/main/java/com/xynet/pay/util/HttpResult.java

@@ -1,38 +0,0 @@
-package com.xynet.pay.util;
-
-public class HttpResult {
-
-	/**
-	 * 状态码
-	 */
-	private Integer status;
-	/**
-	 * 返回数据
-	 */
-	private String data;
-
-	public HttpResult() {
-	}
-
-	public HttpResult(Integer status, String data) {
-		this.status = status;
-		this.data = data;
-	}
-
-	public Integer getStatus() {
-		return status;
-	}
-
-	public void setStatus(Integer status) {
-		this.status = status;
-	}
-
-	public String getData() {
-		return data;
-	}
-
-	public void setData(String data) {
-		this.data = data;
-	}
-
-}

+ 0 - 233
src/main/java/com/xynet/pay/util/HttpServiceUtils.java

@@ -1,233 +0,0 @@
-package com.xynet.pay.util;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Map;
-
-/**
- * @author YanJ
- * @date 2020/1/9-10:55
- */
-public class HttpServiceUtils {
-    public static String sendPost(String urlParam, Map<String, String> params){
-        return  sendPost(urlParam,params,"UTF-8","application/json");
-    }
-
-    public static String sendPostMap(String urlParam, Map<String, String> params){
-        return  sendPost(urlParam,params,"UTF-8","application/x-www-form-urlencoded");
-    }
-
-    public static String sendPost(String urlParam, Map<String, String> params, String charset,String contentType) {
-        StringBuffer resultBuffer = null;
-        // 构建请求参数
-        StringBuffer sbParams = new StringBuffer();
-        if (params != null && params.size() > 0) {
-            for (Map.Entry<String, String> e : params.entrySet()) {
-                sbParams.append(e.getKey());
-                sbParams.append("=");
-                sbParams.append(e.getValue());
-                sbParams.append("&");
-            }
-        }
-        URLConnection con = null;
-        OutputStreamWriter osw = null;
-        BufferedReader br = null;
-        try {
-            URL realUrl = new URL(urlParam);
-            // 打开和URL之间的连接
-            con = realUrl.openConnection();
-            // 设置通用的请求属性
-            con.setRequestProperty("accept", "*/*");
-            con.setRequestProperty("connection", "Keep-Alive");
-            con.setRequestProperty("Content-Type", contentType);
-            con.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
-            // 发送POST请求必须设置如下两行
-            con.setDoOutput(true);
-            con.setDoInput(true);
-            // 获取URLConnection对象对应的输出流
-            osw = new OutputStreamWriter(con.getOutputStream(), charset);
-            if (sbParams != null && sbParams.length() > 0) {
-                // 发送请求参数
-                osw.write(sbParams.substring(0, sbParams.length() - 1));
-                // flush输出流的缓冲
-                osw.flush();
-            }
-            // 定义BufferedReader输入流来读取URL的响应
-            resultBuffer = new StringBuffer();
-            int contentLength = Integer.parseInt(con.getHeaderField("Content-Length"));
-            if (contentLength > 0) {
-                br = new BufferedReader(new InputStreamReader(con.getInputStream(), charset));
-                String temp;
-                while ((temp = br.readLine()) != null) {
-                    resultBuffer.append(temp);
-                }
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (osw != null) {
-                try {
-                    osw.close();
-                } catch (IOException e) {
-                    osw = null;
-                    throw new RuntimeException(e);
-                }
-            }
-            if (br != null) {
-                try {
-                    br.close();
-                } catch (IOException e) {
-                    br = null;
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-        return resultBuffer.toString();
-    }
-
-    public static String sendPostTelecom(String urlParam, Map<String, String> params, String charset,String contentType) {
-        StringBuffer resultBuffer = null;
-        // 构建请求参数
-        StringBuffer sbParams = new StringBuffer();
-        if (params != null && params.size() > 0) {
-            for (Map.Entry<String, String> e : params.entrySet()) {
-                sbParams.append(e.getKey());
-                sbParams.append("=");
-                sbParams.append(e.getValue());
-                sbParams.append("&");
-            }
-        }
-        URLConnection con = null;
-        OutputStreamWriter osw = null;
-        BufferedReader br = null;
-        try {
-            URL realUrl = new URL(urlParam);
-            // 打开和URL之间的连接
-            con = realUrl.openConnection();
-            // 设置通用的请求属性
-            con.setRequestProperty("accept", "*/*");
-            con.setRequestProperty("connection", "Keep-Alive");
-            con.setRequestProperty("Content-Type", contentType);
-            con.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
-            // 发送POST请求必须设置如下两行
-            con.setDoOutput(true);
-            con.setDoInput(true);
-            // 获取URLConnection对象对应的输出流
-            osw = new OutputStreamWriter(con.getOutputStream(), charset);
-            if (sbParams != null && sbParams.length() > 0) {
-                // 发送请求参数
-                osw.write(sbParams.substring(0, sbParams.length() - 1));
-                // flush输出流的缓冲
-                osw.flush();
-            }
-            // 定义BufferedReader输入流来读取URL的响应
-            resultBuffer = new StringBuffer();
-            //int contentLength = Integer.parseInt(con.getHeaderField("Content-Length"));
-            //if (contentLength > 0) {
-                br = new BufferedReader(new InputStreamReader(con.getInputStream(), charset));
-                String temp;
-                while ((temp = br.readLine()) != null) {
-                    resultBuffer.append(temp);
-                }
-            //}
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (osw != null) {
-                try {
-                    osw.close();
-                } catch (IOException e) {
-                    osw = null;
-                    throw new RuntimeException(e);
-                }
-            }
-            if (br != null) {
-                try {
-                    br.close();
-                } catch (IOException e) {
-                    br = null;
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-        return resultBuffer.toString();
-    }
-
-    /**
-     * 电子发票http工具类
-     * @param urlParam
-     * @param params
-     * @return
-     */
-    public static String sendPost(String urlParam, Map<String,Object> params, String signature) {
-        StringBuffer resultBuffer = null;
-        // 构建请求参数
-        StringBuffer sbParams = new StringBuffer();
-        if (params != null && params.size() > 0) {
-            for (Map.Entry<String, Object> e : params.entrySet()) {
-                sbParams.append(e.getKey());
-                sbParams.append("=");
-                sbParams.append(e.getValue());
-                sbParams.append("&");
-            }
-        }
-        URLConnection con = null;
-        OutputStreamWriter osw = null;
-        BufferedReader br = null;
-        try {
-            URL realUrl = new URL(urlParam);
-            // 打开和URL之间的连接
-            con = realUrl.openConnection();
-            // 设置通用的请求属性
-            con.setRequestProperty("accept", "*/*");
-            con.setRequestProperty("connection", "Keep-Alive");
-            con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
-            con.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
-            // 发送POST请求必须设置如下两行
-            con.setDoOutput(true);
-            con.setDoInput(true);
-            // 获取URLConnection对象对应的输出流
-            osw = new OutputStreamWriter(con.getOutputStream(), "UTF-8");
-            if (sbParams != null && sbParams.length() > 0) {
-                // 发送请求参数
-                osw.write(sbParams.substring(0, sbParams.length() - 1));
-                // flush输出流的缓冲
-                osw.flush();
-            }
-            // 定义BufferedReader输入流来读取URL的响应
-            resultBuffer = new StringBuffer();
-            int contentLength = Integer.parseInt(con.getHeaderField("Content-Length"));
-            if (contentLength > 0) {
-                br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
-                String temp;
-                while ((temp = br.readLine()) != null) {
-                    resultBuffer.append(temp);
-                }
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (osw != null) {
-                try {
-                    osw.close();
-                } catch (IOException e) {
-                    osw = null;
-                    throw new RuntimeException(e);
-                }
-            }
-            if (br != null) {
-                try {
-                    br.close();
-                } catch (IOException e) {
-                    br = null;
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-        return resultBuffer.toString();
-    }
-}

+ 0 - 5
src/main/java/com/xynet/pay/util/HttpsUtils.java

@@ -1,5 +0,0 @@
-package com.xynet.pay.util;
-
-public class HttpsUtils {
-
-}

+ 0 - 96
src/main/java/com/xynet/pay/util/JsonUtils.java

@@ -1,96 +0,0 @@
-package com.xynet.pay.util;
-
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
-
-import java.io.IOException;
-import java.util.List;
-
-/**
- * json工具类
- * 字符串对象相互转换
- *
- * @author YanJ
- */
-public class JsonUtils {
-
-    // 定义jackson对象
-    private static final ObjectMapper MAPPER = new ObjectMapper();
-
-    /**
-     * 将对象转换成json字符串。
-     * <p>Title: pojoToJson</p>
-     * <p>Description: </p>
-     *
-     * @param data
-     * @return
-     */
-    public static String objectToJson(Object data) {
-        try {
-            String string = MAPPER.writeValueAsString(data);
-            return string;
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    /**
-     * 将json结果集转化为对象
-     *
-     * @param jsonData json数据
-     * @param clazz    对象中的object类型
-     * @return
-     */
-    public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
-        try {
-            T t = MAPPER.readValue(jsonData, beanType);
-            return t;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    /**
-     * 将json数据转换成pojo对象list
-     * <p>Title: jsonToList</p>
-     * <p>Description: </p>
-     *
-     * @param jsonData
-     * @param beanType
-     * @return
-     */
-    public static <T> List<T> jsonToList(String jsonData, Class<T> beanType) {
-        JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
-        try {
-            List<T> list = MAPPER.readValue(jsonData, javaType);
-            return list;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        return null;
-    }
-
-    /**
-     * 将下划线转换为驼峰的形式,例如:user_name-->userName
-     *
-     * @param json
-     * @param clazz
-     * @return
-     * @throws IOException
-     */
-    public static <T> T toSnakeObject(String json, Class<T> clazz) throws IOException {
-        // mapper的configure方法可以设置多种配置(例如:多字段 少字段的处理)
-        //mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-
-        MAPPER.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
-        T reqJson = MAPPER.readValue(json, clazz);
-        return reqJson;
-    }
-
-}

+ 0 - 215
src/main/java/com/xynet/pay/util/MathUtil.java

@@ -1,215 +0,0 @@
-package com.xynet.pay.util;
-
-import java.math.BigDecimal;
-import java.util.Random;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-/**
- * 
- * 数学运算工具类:主要包含加、减、乘、除、精度截取及比大小等功能<br>
- * 此类采用BigDecimal进行基础运算,避免丢失精度以及灵活的控制四舍五入方式<br>
- * 
- *
- */
-public class MathUtil {
-
-    private static Object lock = new Object();
-
-	/**
-	 * 
-	 * 加(结果默认舍入)
-	 * 
-	 * @param d1 数1
-	 * @param d2 数2
-	 * @param scale 小数位位数(四舍五入)
-	 * @return 和
-	 *
-	 */
-	public static BigDecimal add(Number d1, Number d2,int scale) {
-		BigDecimal bd1 = new BigDecimal(String.valueOf(d1));
-		BigDecimal bd2 = new BigDecimal(String.valueOf(d2));
-		return bd1.add(bd2).setScale(scale, BigDecimal.ROUND_HALF_UP);
-		
-	}
-	
-
-	/**
-	 * 
-	 * 加(含舍入判断)
-	 * 
-	 * @param d1 数1
-	 * @param d2 数2
-	 * @param scale 小数位位数(四舍五入)
-	 * @param round 舍入方式(boolean值,true则入,false则舍)
-	 * @return 说明入参、返回、异常等
-	 */
-	public static BigDecimal add(Number d1, Number d2,int scale,boolean round) {
-		BigDecimal bd1 = new BigDecimal(String.valueOf(d1));
-		BigDecimal bd2 = new BigDecimal(String.valueOf(d2));
-		return bd1.add(bd2).setScale(scale, round?BigDecimal.ROUND_HALF_UP:BigDecimal.ROUND_HALF_DOWN);		
-	}
-
-	/**
-	 * 
-	 * 减(结果默认舍入)
-	 * 
-	 * @param d1 数1
-	 * @param d2 数2
-	 * @param scale 小数位位数(四舍五入)
-	 * @return 差
-	 *
-	 */
-	public static BigDecimal subtract(Number d1, Number d2,int scale) {
-		BigDecimal bd1 = new BigDecimal(String.valueOf(d1));
-		BigDecimal bd2 = new BigDecimal(String.valueOf(d2));
-		return bd1.subtract(bd2).setScale(scale, BigDecimal.ROUND_HALF_UP);
-	}
-
-	/**
-	 * 
-	 * 减(含舍入判断)
-	 * 
-	 * @param d1 数1
-	 * @param d2 数2
-	 * @param scale 小数位位数(四舍五入)
-	 * @param round 舍入方式(boolean值,true则入,false则舍)
-	 * @return 差
-	 *
-	 */
-	public static BigDecimal subtract(Number d1, Number d2,int scale,boolean round) {
-		BigDecimal bd1 = new BigDecimal(String.valueOf(d1));
-		BigDecimal bd2 = new BigDecimal(String.valueOf(d2));
-		return bd1.subtract(bd2).setScale(scale, round?BigDecimal.ROUND_HALF_UP:BigDecimal.ROUND_HALF_DOWN);
-	}
-
-	/**
-	 * 除(结果默认舍入)
-	 * @param d1 数1
-	 * @param d2 数2
-	 * @param scale 小数位位数(四舍五入)
-	 * @return 商
-	 */
-	public static BigDecimal divide(Number d1, Number d2, int scale) {
-		BigDecimal bd1 = new BigDecimal(String.valueOf(d1));
-		BigDecimal bd2 = new BigDecimal(String.valueOf(d2));
-		return bd1.divide(bd2, scale, BigDecimal.ROUND_HALF_UP);
-	}
-	
-	/**
-	 * 除(含舍入判断)
-	 * @param d1 数1
-	 * @param d2 数2
-	 * @param scale 小数位位数(四舍五入)
-	 * @param round 舍入方式(boolean值,true则入,false则舍)
-	 * @return 商
-	 */
-	public static BigDecimal divide(Number d1, Number d2, int scale,boolean round) {
-		BigDecimal bd1 = new BigDecimal(String.valueOf(d1));
-		BigDecimal bd2 = new BigDecimal(String.valueOf(d2));
-		return bd1.divide(bd2, scale, round?BigDecimal.ROUND_HALF_UP:BigDecimal.ROUND_HALF_DOWN);
-	}
-	
-	/**
-	 * 乘(结果默认舍入)
-	 * @param d1 数1
-	 * @param d2 数2
-	 * @param scale 小数位位数(四舍五入)
-	 * @return 积
-	 */
-	public static BigDecimal multiply(Number d1, Number d2, int scale) {
-		BigDecimal bd1 = new BigDecimal(String.valueOf(d1));
-		BigDecimal bd2 = new BigDecimal(String.valueOf(d2));
-		return bd1.multiply(bd2).setScale(scale, BigDecimal.ROUND_HALF_UP);
-	}
-	
-	/**
-	 * 乘(含舍入判读)
-	 * @param d1 数1
-	 * @param d2 数2
-	 * @param scale 小数位位数(四舍五入)
-	 * @param round 舍入方式(boolean值,true则入,false则舍)
-	 * @return 积
-	 */
-	public static BigDecimal multiply(Number d1, Number d2, int scale,boolean round) {
-		BigDecimal bd1 = new BigDecimal(String.valueOf(d1));
-		BigDecimal bd2 = new BigDecimal(String.valueOf(d2));
-		return bd1.multiply(bd2).setScale(scale, round?BigDecimal.ROUND_HALF_UP:BigDecimal.ROUND_HALF_DOWN);
-	}
-	
-	/**
-	 * 判断舍入与否后精确到指定位数
-	 * @param d1 数1
-	 * @param scale 小数位位数(四舍五入)
-	 * @param round 舍入方式(boolean值,true则入,false则舍)
-	 * @return 舍入数
-	 */
-	public static BigDecimal round(Number d1, int scale,boolean round) {
-		BigDecimal bd1 = new BigDecimal(String.valueOf(d1));
-		return bd1.setScale(scale, round?BigDecimal.ROUND_HALF_UP:BigDecimal.ROUND_HALF_DOWN);
-	}
-	
-	/**
-	 * 比较两数大小
-	 * @param d1 数1
-	 * @param d2 数2
-	 * @return 0相等,1则d1大,-1则d2大
-	 */
-	public static int checkBigger(Number d1,Number d2){
-		int result = -1;
-		BigDecimal bd1 = new BigDecimal(String.valueOf(d1));
-		BigDecimal bd2 = new BigDecimal(String.valueOf(d2));
-		if(bd1.compareTo(bd2)>0){
-			result = 1;
-		}else if(bd1.compareTo(bd2)==0){
-			result = 0;
-		}
-		return result;
-		
-	}
-	/**获取指定长度随机数*/
-	public static String getRandNum(int charCount) {
-        String charValue = "";
-        for (int i = 0; i < charCount; i++) {
-            char c = (char) (randomInt(0, 10) + '0');
-            charValue += String.valueOf(c);
-        }
-        return charValue;
-    }
-	/**获取指定范围随机数*/
-    public static int randomInt(int from, int to) {
-        Random r = new Random();
-        return from + r.nextInt(to - from);
-    }	
-    
-    /**获取随机字符串*/
-    public static String getRandStr(int charCount){
-    	StringBuffer randBf = new StringBuffer();
-        char[] charAndnum = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray();
-        Random random = new Random(); //用于产生随机数
-        for (int j = 0; j < charCount; j++) {
-        	randBf.append(charAndnum[random.nextInt(62)]);  
-        }
-        
-        return randBf.toString();
-    }
-
-	/*
-    生成唯一主键
-    格式:时间+随机数
-     */
-	public static String genUniqueKey() {
-	    synchronized (lock) {
-            String number = getRandNum(6);
-            String str = System.currentTimeMillis() + number;
-            return str;
-        }
-	}
-
-	public static void main(String[] args){
-        String s = genUniqueKey();
-        System.out.println(s);
-    }
-
-}

+ 0 - 459
src/main/java/com/xynet/pay/util/PKCS7Tool.java

@@ -1,459 +0,0 @@
-package com.xynet.pay.util;
-
-import sun.misc.BASE64Decoder;
-import sun.misc.BASE64Encoder;
-import sun.security.pkcs.ContentInfo;
-import sun.security.pkcs.PKCS7;
-import sun.security.pkcs.PKCS9Attributes;
-import sun.security.pkcs.SignerInfo;
-
-import javax.security.auth.x500.X500Principal;
-import java.io.*;
-import java.lang.reflect.Array;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.math.BigInteger;
-import java.security.*;
-import java.security.cert.Certificate;
-import java.security.cert.CertificateException;
-import java.security.cert.CertificateFactory;
-import java.security.cert.X509Certificate;
-import java.util.Enumeration;
-
-public class PKCS7Tool {
-
-	/** 签名 */
-	private static final int SIGNER = 1;
-	/** 验证 */
-	private static final int VERIFIER = 2;
-	/** 用途 */
-	private int mode = 0;
-	/** 摘要算法 */
-	private static String digestAlgorithm = "SHA1";
-	/** 签名算法 */
-	private static String signingAlgorithm = "SHA1withRSA";
-	/** 签名证书 */
-	private X509Certificate[] certificates = null;
-	/** 签名私钥 */
-	private PrivateKey privateKey = null;
-	/** 根证书 */
-	private Certificate[] rootCertificates = null;
-	/** JVM 提供商 */
-	private static char jvm = 0;
-	private static Class algorithmId = null;
-	private static Class derValue = null;
-	private static Class objectIdentifier = null;
-	private static Class x500Name = null;
-	private static boolean debug = false;
-
-	/**
-	 * 私有构造方法
-	 */
-	private PKCS7Tool(int mode) {
-		this.mode = mode;
-	}
-
-	/**
-	 * 匹配私钥用法
-	 * 
-	 * @param keyUsage
-	 * @param usage
-	 * @return
-	 */
-	private static boolean matchUsage(boolean[] keyUsage, int usage) {
-		if (usage == 0 || keyUsage == null)
-			return true;
-		for (int i = 0; i < Math.min(keyUsage.length, 32); i++) {
-			if ((usage & (1 << i)) != 0 && !keyUsage[i])
-				return false;
-		}
-		return true;
-	}
-
-	private static void init() {
-		if (jvm != 0)
-			return;
-		String vendor = System.getProperty("java.vm.vendor");
-		if (vendor == null)
-			vendor = "";
-		String vendorUC = vendor.toUpperCase();
-		try {
-			if (vendorUC.indexOf("IBM") >= 0) {
-				jvm = 'I';
-				algorithmId = Class
-						.forName("com.ibm.security.x509.AlgorithmId");
-				derValue = Class.forName("com.ibm.security.util.DerValue");
-				objectIdentifier = Class
-						.forName("com.ibm.security.util.ObjectIdentifier");
-				x500Name = Class.forName("com.ibm.security.x509.X500Name");
-			} else {
-				jvm = 'S';
-				algorithmId = Class.forName("sun.security.x509.AlgorithmId");
-				derValue = Class.forName("sun.security.util.DerValue");
-				objectIdentifier = Class
-						.forName("sun.security.util.ObjectIdentifier");
-				x500Name = Class.forName("sun.security.x509.X500Name");
-			}
-		} catch (ClassNotFoundException e) {
-			e.printStackTrace();
-			System.out.println("Not support JRE: " + vendor);
-			throw new RuntimeException(e);
-		}
-	}
-
-	/**
-	 * 取得签名工具 加载证书库, 取得签名证书链和私钥
-	 * 
-	 * @param keyStorePath
-	 *            证书库路径
-	 * @param keyStorePassword
-	 *            证书库口令
-	 * @param keyPassword
-	 *            证书口令
-	 * @throws GeneralSecurityException
-	 * @throws IOException
-	 */
-	public static PKCS7Tool getSigner(String keyStorePath,
-			String keyStorePassword, String keyPassword)
-			throws GeneralSecurityException, IOException {
-		String type;
-		if (keyStorePath.toLowerCase().endsWith(".pfx"))
-			type = "PKCS12";
-		else if (keyStorePath.toLowerCase().endsWith(".jks"))
-			type = "JKS";
-		else
-			throw new IllegalStateException("Unknown keystore type.");
-		FileInputStream fis = null;
-		try {
-			fis = new FileInputStream(keyStorePath);
-			return getSigner(fis, type, keyStorePassword, keyPassword);
-		} finally {
-			if (fis != null)
-				fis.close();
-		}
-	}
-
-	/**
-	 * 取得签名工具 加载证书库, 取得签名证书链和私钥
-	 * 
-	 * @param keyStorePath
-	 *            证书库路径
-	 * @param keyStorePassword
-	 *            证书库口令
-	 * @param keyPassword
-	 *            证书口令
-	 * @throws GeneralSecurityException
-	 * @throws IOException
-	 */
-	public static PKCS7Tool getSigner(InputStream keyStoreStream, String type,
-			String keyStorePassword, String keyPassword)
-			throws GeneralSecurityException, IOException {
-		init();
-		// 加载证书库
-		KeyStore keyStore = KeyStore.getInstance(type);
-		keyStore.load(keyStoreStream, keyStorePassword.toCharArray());
-		// 在证书库中找到签名私钥
-		Enumeration aliases = keyStore.aliases();
-		String keyAlias = null;
-		if (aliases != null) {
-			while (aliases.hasMoreElements()) {
-				keyAlias = (String) aliases.nextElement();
-				Certificate[] certs = keyStore.getCertificateChain(keyAlias);
-				if (certs == null || certs.length == 0)
-					continue;
-				X509Certificate cert = (X509Certificate) certs[0];
-				if (matchUsage(cert.getKeyUsage(), 1)) {
-					try {
-						cert.checkValidity();
-					} catch (CertificateException e) {
-						continue;
-					}
-					break;
-				}
-			}
-		}
-		// 没有找到可用签名私钥
-		if (keyAlias == null)
-			throw new GeneralSecurityException(
-					"None certificate for sign in this keystore");
-
-		if (debug) {
-			System.out.println(keyAlias);
-			System.out.println("SIGNER =\n"
-					+ new BASE64Encoder().encode(keyStore.getCertificate(
-							keyAlias).getEncoded()));
-		}
-		// 签名证书只能放一张
-		X509Certificate certificate = null;
-		if (keyStore.isKeyEntry(keyAlias)
-				|| keyStore.isCertificateEntry(keyAlias)) {
-			certificate = (X509Certificate) keyStore.getCertificate(keyAlias);
-		} else {
-			throw new GeneralSecurityException(keyAlias
-					+ " is unknown to this keystore");
-		}
-
-		PrivateKey privateKey = (PrivateKey) keyStore.getKey(keyAlias,
-				keyPassword.toCharArray());
-		// 没有私钥抛异常
-		if (privateKey == null) {
-			throw new GeneralSecurityException(keyAlias
-					+ " could not be accessed");
-		}
-
-		PKCS7Tool tool = new PKCS7Tool(SIGNER);
-		tool.certificates = new X509Certificate[] { certificate };
-		tool.privateKey = privateKey;
-		return tool;
-	}
-
-	/**
-	 * 取得验签名工具 加载信任根证书
-	 * 
-	 * @param rootCertificatePath
-	 *            根证书路径
-	 * @throws GeneralSecurityException
-	 * @throws IOException
-	 */
-	public static PKCS7Tool getVerifier(String rootCertificatePath)
-			throws GeneralSecurityException, IOException {
-		String type;
-		if (rootCertificatePath.toLowerCase().endsWith(".p7b"))
-			type = "PKCS7";
-		else if (rootCertificatePath.toLowerCase().endsWith(".cer"))
-			type = "DER";
-		else
-			throw new IllegalStateException("Unknown rootstore type.");
-		FileInputStream fis = null;
-		try {
-			fis = new FileInputStream(rootCertificatePath);
-			return getVerifier(fis, type);
-		} finally {
-			if (fis != null)
-				fis.close();
-		}
-	}
-
-	/**
-	 * 取得验签名工具 加载信任根证书
-	 * 
-	 * @param rootCertStresm
-	 *            根证书输入流
-	 * @throws GeneralSecurityException
-	 * @throws IOException
-	 */
-	public static PKCS7Tool getVerifier(InputStream rootCertStream, String type)
-			throws GeneralSecurityException, IOException {
-		init();
-		// 加载根证书
-		Certificate[] rootCertificates = null;
-
-		CertificateFactory certificatefactory = CertificateFactory
-				.getInstance("X.509");
-		if ("DER".equals(type)) {
-			try {
-				rootCertificates = new Certificate[] { certificatefactory
-						.generateCertificate(rootCertStream) };
-			} catch (Exception exception) {
-				if (debug)
-					exception.printStackTrace();
-				InputStream is = new ByteArrayInputStream(
-						new BASE64Decoder().decodeBuffer(rootCertStream));
-				rootCertificates = new Certificate[] { certificatefactory
-						.generateCertificate(is) };
-			}
-		} else if ("PKCS7".equals(type)) {
-			PKCS7 p7;
-			byte[] roots = readData(rootCertStream);
-			try {
-				p7 = new PKCS7(roots);
-			} catch (Exception exception) {
-				roots = new BASE64Decoder().decodeBuffer(new String(roots));
-				p7 = new PKCS7(roots);
-			}
-			rootCertificates = p7.getCertificates();
-		} else
-			throw new IllegalStateException("Unknown root certificate(s) type.");
-
-		PKCS7Tool tool = new PKCS7Tool(VERIFIER);
-		tool.rootCertificates = rootCertificates;
-		return tool;
-	}
-
-	/**
-	 * 签名
-	 * 
-	 * @param data
-	 *            数据
-	 * @return signature 签名结果
-	 * @throws GeneralSecurityException
-	 * @throws IOException
-	 * @throws IllegalArgumentException
-	 */
-	public String sign(byte[] data) throws Exception {
-		if (mode != SIGNER)
-			throw new IllegalStateException(
-					"call a PKCS7Tool instance not for signature.");
-
-		Signature signer = Signature.getInstance(signingAlgorithm);
-		signer.initSign(privateKey);
-		signer.update(data, 0, data.length);
-		byte[] signedAttributes = signer.sign();
-
-		ContentInfo contentInfo = null;
-		Field data_oidField = ContentInfo.class.getField("DATA_OID");
-		Object data_oid = data_oidField.get(null);
-		Constructor<ContentInfo> contentInfoConstructor = ContentInfo.class
-				.getConstructor(new Class[] { data_oid.getClass(), derValue });
-		contentInfo = contentInfoConstructor
-				.newInstance(new Object[] { data_oid, null });
-		// 根证书
-		X509Certificate x509 = certificates[certificates.length - 1];
-		BigInteger serial = x509.getSerialNumber();
-		// X500Name
-		Constructor x500NameConstructor = x500Name
-				.getConstructor(new Class[] { String.class });
-		Object x500NameObject = x500NameConstructor
-				.newInstance(new Object[] { x509.getIssuerDN().getName() });
-		// AlgorithmId
-		Method algorithmIdGet = algorithmId.getMethod("get",
-				new Class[] { String.class });
-		Object digestAlgorithmId = algorithmIdGet.invoke(null,
-				new Object[] { digestAlgorithm });
-		Field algorithmIdfield = algorithmId.getField("RSAEncryption_oid");
-		Object rsaOid = algorithmIdfield.get(null);
-		Constructor algorithmConstructor = algorithmId
-				.getConstructor(new Class[] { objectIdentifier });
-		Object algorithmRsaOid = algorithmConstructor
-				.newInstance(new Object[] { rsaOid });
-		// SignerInfo
-		Constructor<SignerInfo> signerInfoConstructor = SignerInfo.class
-				.getConstructor(new Class[] { x500Name, BigInteger.class,
-						algorithmId, PKCS9Attributes.class, algorithmId,
-						byte[].class, PKCS9Attributes.class });
-		// 签名信息
-		SignerInfo si = signerInfoConstructor
-				.newInstance(new Object[] { x500NameObject,// X500Name,
-															// issuerName,
-						serial, // x509.getSerialNumber(), BigInteger serial,
-						digestAlgorithmId, // AlgorithmId, digestAlgorithmId,
-						null, // PKCS9Attributes, authenticatedAttributes,
-						algorithmRsaOid, // AlgorithmId,
-											// digestEncryptionAlgorithmId,
-						signedAttributes, // byte[] encryptedDigest,
-						null // PKCS9Attributes unauthenticatedAttributes)
-				});
-
-		SignerInfo[] signerInfos = { si };
-
-		// 构造PKCS7数据
-		Object digestAlgorithmIds = Array.newInstance(algorithmId, 1);
-		Array.set(digestAlgorithmIds, 0, digestAlgorithmId);
-		// PKCS7
-		Constructor<PKCS7> pkcs7Constructor = PKCS7.class.getConstructor(new Class[] {
-				digestAlgorithmIds.getClass(), ContentInfo.class,
-				X509Certificate[].class, signerInfos.getClass() });
-		PKCS7 p7 = pkcs7Constructor.newInstance(new Object[] {
-				digestAlgorithmIds, contentInfo, certificates, signerInfos });
-
-		ByteArrayOutputStream baout = new ByteArrayOutputStream();
-		p7.encodeSignedData(baout);
-		// Base64编码
-		return (new BASE64Encoder()).encode(baout.toByteArray());
-	}
-
-	/**
-	 * 验证签名(无CRL)
-	 * 
-	 * @param signature
-	 *            签名签名结果
-	 * @param data
-	 *            被签名数据
-	 * @param dn
-	 *            签名证书dn, 如果为空则不做匹配验证
-	 * @throws IOException
-	 * @throws NoSuchAlgorithmException
-	 * @throws SignatureException
-	 * @throws InvalidKeyException
-	 * @throws CertificateException
-	 * @throws NoSuchProviderException
-	 */
-	public void verify(String signature, byte[] data, String dn)
-			throws IOException, NoSuchAlgorithmException, SignatureException,
-			InvalidKeyException, CertificateException, NoSuchProviderException {
-		if (mode != VERIFIER)
-			throw new IllegalStateException(
-					"call a PKCS7Tool instance not for verify.");
-		byte[] sign = new BASE64Decoder().decodeBuffer(signature);
-		PKCS7 p7 = new PKCS7(sign);
-		X509Certificate[] certs = p7.getCertificates();
-		if (debug)
-			for (int i = 0; i < certs.length; i++) {
-				X509Certificate cert = certs[i];
-				System.out.println("SIGNER " + i + "=\n" + cert);
-				System.out.println("SIGNER " + i + "=\n"
-						+ new BASE64Encoder().encode(cert.getEncoded()));
-			}
-
-		// 验证签名本身、证书用法、证书扩展
-		SignerInfo[] sis = p7.verify(data);
-
-		// check the results of the verification
-		if (sis == null)
-			throw new SignatureException(
-					"Signature failed verification, data has been tampered");
-
-		for (int i = 0; i < sis.length; i++) {
-			SignerInfo si = sis[i];
-
-			X509Certificate cert = si.getCertificate(p7);
-			// 证书是否过期验证,如果不用系统日期可用cert.checkValidity(date);
-			cert.checkValidity();
-			boolean valid = false;
-			for (int j = rootCertificates.length - 1; j >= 0; j--) {
-				if (cert.equals(rootCertificates[j])) {
-					valid = true;
-					break;
-				} else {
-					// 验证证书签名
-					try {
-						cert.verify(rootCertificates[j].getPublicKey());
-						valid = true;
-						break;
-					} catch (Exception e) {
-					}
-				}
-			}
-			if (!valid)
-				throw new SignatureException(
-						"Signature certificate's issuer is untrusty.");
-			// 验证dn
-			if (i == 0 && dn != null) {
-				X500Principal name = cert.getSubjectX500Principal();
-				if (!dn.equals(name.getName(X500Principal.RFC1779))
-						&& !new X500Principal(dn).equals(name))
-					throw new SignatureException("Signer dn '"
-							+ name.getName(X500Principal.RFC1779)
-							+ "' does not matchs '" + dn + "'");
-			}
-		}
-	}
-
-	/**
-	 * 读取输入流
-	 * 
-	 * @param in
-	 *            输入流
-	 * @return 数据
-	 * @throws IOException
-	 */
-	protected static byte[] readData(InputStream in) throws IOException {
-		ByteArrayOutputStream bai = new ByteArrayOutputStream();
-		byte[] buf = new byte[256];
-		int len;
-		while ((len = in.read(buf)) > 0)
-			bai.write(buf, 0, len);
-		return bai.toByteArray();
-	}
-}

+ 0 - 462
src/main/java/com/xynet/pay/util/RSAProvider.java

@@ -1,462 +0,0 @@
-package com.xynet.pay.util;
-
-import javax.crypto.Cipher;
-import java.io.IOException;
-import java.io.InputStream;
-import java.math.BigInteger;
-import java.security.*;
-import java.security.interfaces.RSAPrivateKey;
-import java.security.interfaces.RSAPublicKey;
-import java.security.spec.InvalidKeySpecException;
-import java.security.spec.PKCS8EncodedKeySpec;
-import java.security.spec.X509EncodedKeySpec;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- * Copyright (C) BlakeQu All Rights Reserved <blakequ@gmail.com>
- * <p>
- * Licensed under the blakequ.com License, Version 1.0 (the "License");
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * <p>
- * author  : quhao <blakequ@gmail.com> <br>
- * date     : 2017/2/22 16:03 <br>
- * last modify author : <br>
- * version : 1.0 <br>
- * description:
- */
-
-public class RSAProvider {
-
-    /**
-     * KEY_ALGORITHM
-     */
-    public static final String KEY_ALGORITHM = "RSA";
-    /**
-     * 加密Key的长度等于1024
-     */
-    public static int KEYSIZE = 1024;
-    /**
-     * 解密时必须按照此分组解密
-     */
-    public static int decodeLen = KEYSIZE / 8;
-    /**
-     * 加密时小于117即可
-     */
-    public static int encodeLen = 110;//(DEFAULT_KEY_SIZE / 8) - 11;
-    /**
-     * 公钥
-     */
-    private static final String PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnl3tOgNlzZAuF4+8XsO+rhrd17mAb6Tvp+0REc+WfiBt5f7xco25oyJJCwhpSe/n4e4Az/jqo3ipiZOq2U8GFNSJSIkFzfaagt6kit9DqyCr5cSwRiHmvqeb8ajuO4nJ5OoVwvqpfICrEbDlr6c7ShFtGREeaVAjwQfjRlgK8LSQ4yyyw6fqSWB1N3Z+H8Ji/fq8XGiCaN6gYpM5bukRvW95gkOzY8ASzmd+vX5OxEHcF4Tbf/qR/IcZb/eA9aGfCZJa0+OtOORn4wpo/1rUxwDfws4xg2RDpZnkrA99yZCu5Ce/t0qMIwmWLbpu9yRGexbFlY5ercqxyQO0sxS38QIDAQAB";
-    /**
-     * 私钥
-     */
-    private static final String PRIVATE_KEY = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCeXe06A2XNkC4Xj7xew76uGt3XuYBvpO+n7RERz5Z+IG3l/vFyjbmjIkkLCGlJ7+fh7gDP+OqjeKmJk6rZTwYU1IlIiQXN9pqC3qSK30OrIKvlxLBGIea+p5vxqO47icnk6hXC+ql8gKsRsOWvpztKEW0ZER5pUCPBB+NGWArwtJDjLLLDp+pJYHU3dn4fwmL9+rxcaIJo3qBikzlu6RG9b3mCQ7NjwBLOZ369fk7EQdwXhNt/+pH8hxlv94D1oZ8JklrT46045GfjCmj/WtTHAN/CzjGDZEOlmeSsD33JkK7kJ7+3SowjCZYtum73JEZ7FsWVjl6tyrHJA7SzFLfxAgMBAAECggEAH5ShcvksevKujlpGeStVwghvhs5iM2FTvUwEJGYeH6a946iUY4CprUNwB3g07t6dgithFBgSSmkMfffpkQ42Kz865TEV7D2qEEDv1RWyu9R3EwnHESU/i3OHIIjMgSj4DuMzVb+Avug1tQBuvTl/FEUnWWFVjDDEAIFfLC7wd5FqKQY4NUgxmOQZVHFvT5rtZISmTs/N7IAZrsYtYePvk8Nsjte948rvUCBPa0Y9Hbj2A9PoC4AZ+q24Oa1GjtMCMtBErsw8Kc1a+15ilAPLt4/f9hrimwyfluZzknZMCNPC/mXwkcyIlrPkofK/iyzFI4jI4XC14S/ggPTLC1tNsQKBgQDJWc6P9dv5E43r7bdH63blNdoAvgXWLA/c+azK9TqbUfcGbF196KZ5chpgZ/+UTzlNjPN4U8LUUX/KFuYqrljAXZeGkQuwfk1fX6CiiyDQ4x1NH2Yzc4PMUrjy8LAhXGgp9piRLAwIQa3ouy/d73GKrZyz7yxMCg/QdAysPNfB7QKBgQDJWYaKyd8BCTTEeTHJ603Xi9+Q3i61ymlKyYg6aH8MtRphS0qLrb1B78UHEjc+K39Oc87MoN0JmMcy/u6VLLY2IyBjzZvuHYA8laSKkItF21E308DUyml+XYOsyFy09pgUDowgbQRynkw8P+Dc9LsDaWHFcmdV93mUKDgqDY0dlQKBgQCm6PpxnhZecFZKiEFRriBeO3je+qat9tKjlJknmYeer6B9w6DwucYekHbLCgr0r4PKBJjjW1P7Wx/6r2bXZLWPqUXtuBkfkmOjNwtbEsf+QPbOMsQuzIgp/TzxrpHi5c43UwL//KpwwblfXqR8bnwJwIdRJWfsFL8tRrYmpT0ZtQKBgQC+RV6RyuB0zylRPSHiqPyfYut6r6s+WS+U38tfPp5I+N8b8BVa12zQYW80Fm+jzWD5VxCmaKFYT0p2k1gMGft6P0l9ZrAinTgwiEy8MImcEvu2IOHJdBmqs14aKiEJVTozQegDQGICmjp6ePbadl4/hBdDia/DGiCG9FbWzoV63QKBgQCzpZ+C8/9Vr5xZl8KlQLloVky/OFCUCpmrt0OFkiDfUe5VDLVm+YbtNVmEndiLziIdBa/7rfWLAJ3ivWhAhHbuBPffH0zXf/pjLXdN9NxNpnmoMFzmTv4m4CYlHfKYiRox+St44L9bYDy4QgqZ2unp4nphvxchgKYC61/tAxKSWw==";
-    /**
-     * MODULES
-     */
-    private static final String MODULES = "RSAModules";
-    /**
-     * 签名算法
-     */
-    public static final String SIGNATURE_ALGORITHM = "MD5withRSA";
-    /**
-     * 加密填充方式,android系统的RSA实现是"RSA/None/NoPadding",而标准JDK实现是"RSA/None/PKCS1Padding" ,这造成了在android机上加密后无法在服务器上解密的原因
-     */
-    public static final String ECB_PKCS1_PADDING = "RSA/ECB/PKCS1Padding";
-    //public static final String ECB_PKCS1_PADDING = "RSA/None/NoPadding";
-    /**
-     *
-     * 生成KeyPair
-     * @return
-     * @throws Exception
-     */
-    public static Map<String, Object> generateKeyPair() throws Exception {
-        KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM);
-        keyPairGen.initialize(KEYSIZE);
-        KeyPair keyPair = keyPairGen.generateKeyPair();
-
-        // 公钥
-        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
-
-        // 私钥
-        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
-        BigInteger modules = privateKey.getModulus();
-
-        Map<String, Object> keys = new HashMap<String, Object>(3);
-        keys.put(PUBLIC_KEY, publicKey);
-        keys.put(PRIVATE_KEY, privateKey);
-        keys.put(MODULES, modules);
-        return keys;
-    }
-
-    public static byte[] getModulesBytes(Map<String, Object> keys) {
-        BigInteger big = (BigInteger) keys.get(MODULES);
-        return big.toByteArray();
-    }
-
-    /**
-     *
-     * 取得私钥
-     * @return
-     * @throws Exception
-     */
-    public static String getPrivateKeyBytes(Map<String, Object> keys) throws Exception {
-        Key key = (Key) keys.get(PRIVATE_KEY);
-        return Base64Utils.encode(key.getEncoded());
-    }
-
-    /**
-     * 取得公钥
-     *
-     * @return
-     * @throws Exception
-     */
-    public static String getPublicKeyBytes(Map<String, Object> keys) throws Exception {
-        Key key = (Key) keys.get(PUBLIC_KEY);
-        return Base64Utils.encode(key.getEncoded());
-    }
-
-    /**
-     * 用私钥对信息生成数字签名
-     *
-     * @param data 已加密数据
-     * @param privateKey 私钥(BASE64编码)
-     *
-     * @return
-     * @throws Exception
-     */
-    public static String sign(byte[] data, String privateKey) throws Exception {
-        PrivateKey privateK = loadPrivateKey(privateKey);
-        Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
-        signature.initSign(privateK);
-        signature.update(data);
-        return Base64Utils.encode(signature.sign());
-    }
-
-    /**
-     * 校验数字签名
-     *
-     * @param data 已加密数据
-     * @param publicKey 公钥(BASE64编码)
-     * @param sign 数字签名
-     *
-     * @return
-     * @throws Exception
-     *
-     */
-    public static boolean verify(byte[] data, String publicKey, String sign)
-            throws Exception {
-        PublicKey publicK = loadPublicKey(publicKey);
-        Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
-        signature.initVerify(publicK);
-        signature.update(data);
-        return signature.verify(Base64Utils.decode(sign));
-    }
-
-    /**
-     *
-     * 通过私钥加密
-     * @param encryptedData
-     * @param key
-     * @return
-     * @throws Exception
-     */
-    public static byte[] encryptPrivateKey(byte[] encryptedData, String key) throws Exception {
-        if (encryptedData == null){
-            throw  new IllegalArgumentException("Input encryption data is null");
-        }
-        byte[] encode = new byte[] {};
-        for (int i = 0; i < encryptedData.length; i += encodeLen) {
-            byte[] subarray = ArrayUtils.subarray(encryptedData, i, i + encodeLen);
-            byte[] doFinal = encryptByPrivateKey(subarray, key);
-            encode = ArrayUtils.addAll(encode, doFinal);
-        }
-        return encode;
-    }
-
-    /**
-     * 通过公钥解密
-     * @param encode
-     * @param key
-     * @return
-     * @throws Exception
-     */
-    public static byte[] decryptPublicKey(byte[] encode, String key) throws Exception {
-        if (encode == null){
-            throw  new IllegalArgumentException("Input encryption data is null");
-        }
-        byte [] buffers = new byte[]{};
-        for (int i = 0; i < encode.length; i += decodeLen) {
-            byte[] subarray = ArrayUtils.subarray(encode, i, i + decodeLen);
-            byte[] doFinal = decryptByPublicKey(subarray, key);
-            buffers = ArrayUtils.addAll(buffers, doFinal);
-        }
-        return buffers;
-    }
-
-    /**
-     *
-     * 通过公钥加密
-     * @param encryptedData
-     * @param key
-     * @return
-     * @throws Exception
-     */
-    public static byte[] encryptPublicKey(byte[] encryptedData, String key) throws Exception {
-        if (encryptedData == null){
-            throw  new IllegalArgumentException("Input encryption data is null");
-        }
-        byte[] encode = new byte[] {};
-        for (int i = 0; i < encryptedData.length; i += encodeLen) {
-            byte[] subarray = ArrayUtils.subarray(encryptedData, i, i + encodeLen);
-            byte[] doFinal = encryptByPublicKey(subarray, key);
-            encode = ArrayUtils.addAll(encode, doFinal);
-        }
-        return encode;
-    }
-
-    /**
-     * 通过私钥解密
-     * @param encode
-     * @param key
-     * @return
-     * @throws Exception
-     */
-    public static byte[] decryptPrivateKey(byte[] encode, String key) throws Exception {
-        if (encode == null){
-            throw  new IllegalArgumentException("Input data is null");
-        }
-        byte [] buffers = new byte[]{};
-        for (int i = 0; i < encode.length; i += decodeLen) {
-            byte[] subarray = ArrayUtils.subarray(encode, i, i + decodeLen);
-            byte[] doFinal = decryptByPrivateKey(subarray, key);
-            buffers = ArrayUtils.addAll(buffers, doFinal);
-        }
-        return buffers;
-    }
-
-    /**
-     * 从字符串中加载公钥
-     *
-     * @param publicKeyStr 公钥数据字符串
-     * @throws Exception 加载公钥时产生的异常
-     */
-    public static PublicKey loadPublicKey(String publicKeyStr) throws Exception {
-        try {
-            byte[] buffer = Base64Utils.decode(publicKeyStr);
-            KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
-            //表示根据 ASN.1 类型 SubjectPublicKeyInfo 进行编码的公用密钥的 ASN.1 编码。
-            X509EncodedKeySpec keySpec = new X509EncodedKeySpec(buffer);
-            return keyFactory.generatePublic(keySpec);
-        } catch (NoSuchAlgorithmException e) {
-            throw new Exception("无此算法");
-        } catch (InvalidKeySpecException e) {
-            throw new Exception("公钥非法");
-        } catch (NullPointerException e) {
-            throw new Exception("公钥数据为空");
-        }
-    }
-
-    /**
-     * 从字符串中加载私钥<br>
-     * 加载时使用的是PKCS8EncodedKeySpec(PKCS#8编码的Key指令)。
-     *
-     * @param privateKeyStr
-     * @return
-     * @throws Exception
-     */
-    public static PrivateKey loadPrivateKey(String privateKeyStr) throws Exception {
-        try {
-            byte[] buffer = Base64Utils.decode(privateKeyStr);
-            //表示按照 ASN.1 类型 PrivateKeyInfo 进行编码的专用密钥的 ASN.1 编码。
-            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(buffer);
-            KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
-            return keyFactory.generatePrivate(keySpec);
-        } catch (NoSuchAlgorithmException e) {
-            throw new Exception("无此算法");
-        } catch (InvalidKeySpecException e) {
-            throw new Exception("私钥非法");
-        } catch (NullPointerException e) {
-            throw new Exception("私钥数据为空");
-        }
-    }
-
-    /**
-     * 从文件中输入流中加载公钥
-     *
-     * @param in 公钥输入流
-     * @throws Exception 加载公钥时产生的异常
-     */
-    public static PublicKey loadPublicKey(InputStream in) throws Exception {
-        try {
-            return loadPublicKey(FileUtils.readString(in));
-        } catch (IOException e) {
-            throw new Exception("公钥数据流读取错误");
-        } catch (NullPointerException e) {
-            throw new Exception("公钥输入流为空");
-        }
-    }
-
-    /**
-     * 读取私钥
-     *
-     * @param in
-     * @return
-     * @throws Exception
-     */
-    public static PrivateKey loadPrivateKey(InputStream in) throws Exception {
-        try {
-            return loadPrivateKey(FileUtils.readString(in));
-        } catch (IOException e) {
-            throw new Exception("私钥数据读取错误");
-        } catch (NullPointerException e) {
-            throw new Exception("私钥输入流为空");
-        }
-    }
-
-    /**
-     * 用私钥解密
-     * @param data
-     * @param key
-     * @return
-     * @throws Exception
-     */
-    private static byte[] decryptByPrivateKey(byte[] data, String key) throws Exception {
-        if (data == null){
-            throw  new IllegalArgumentException("Input data is null");
-        }
-        //取得私钥
-        Key privateKey = loadPrivateKey(key);
-        // 对数据解密
-        Cipher cipher = Cipher.getInstance(ECB_PKCS1_PADDING);
-        cipher.init(Cipher.DECRYPT_MODE, privateKey);
-
-        return cipher.doFinal(data);
-    }
-
-    /**
-     *
-     * 用公钥解密
-     * @param data
-     * @param key
-     * @return
-     * @throws Exception
-     */
-    private static byte[] decryptByPublicKey(byte[] data, String key) throws Exception {
-        if (data == null){
-            throw  new IllegalArgumentException("Input data is null");
-        }
-        //取得公钥
-        Key publicKey = loadPublicKey(key);
-        // 对数据解密
-        Cipher cipher = Cipher.getInstance(ECB_PKCS1_PADDING);
-        cipher.init(Cipher.DECRYPT_MODE, publicKey);
-
-        return cipher.doFinal(data);
-    }
-
-    /**
-     *
-     * 用公钥加密
-     * @param data
-     * @param key
-     * @return
-     * @throws Exception
-     */
-    private static byte[] encryptByPublicKey(byte[] data, String key) throws Exception {
-        if (data == null){
-            throw  new IllegalArgumentException("Input data is null");
-        }
-        // 取得公钥
-        Key publicKey = loadPublicKey(key);
-        // 对数据加密
-        Cipher cipher = Cipher.getInstance(ECB_PKCS1_PADDING);
-        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
-
-        return cipher.doFinal(data);
-    }
-
-    /**
-     * 用私钥加密
-     *
-     * @param data
-     * @param key
-     * @return
-     * @throws Exception
-     */
-    private static byte[] encryptByPrivateKey(byte[] data, String key) throws Exception {
-        if (data == null){
-            throw  new IllegalArgumentException("Input data is null");
-        }
-        // 取得私钥
-        Key privateKey = loadPrivateKey(key);
-        // 对数据加密
-        Cipher cipher = Cipher.getInstance(ECB_PKCS1_PADDING);
-        cipher.init(Cipher.ENCRYPT_MODE, privateKey);
-
-        return cipher.doFinal(data);
-    }
-    
-  /* public static void main(String[] args) {
-	   String result=null;
-	   String privateKey ="MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANwoNy/xUugCcXnYvI3VqOg59e8KzZL4O7fwqqFZ10ixvAbeGLryZ+plVGljrNTP/QyeCJR9BM+u3MKlk36KeDGTfZ7xcuLFoxS4T7u3BRIHrd33MkdszJXgByugSvQbrPj9v/iMAkFSCvT1KvgJhwVYMDS9Ax1/Rho7baPQNpSFAgMBAAECgYBxiJe1NKlBloj4ginypv2dDM7kQFj1cugxGn6UCOW5ylah4AU22211dl4Kn2lwsfXYfOMF2FcT1yRniMXAWx5R1db4jM+TpGkjyjQFBuxjLd+MPtCHUBgJ3qkLB2VnChTshmS26KxzpfJU2i4TmRWlGTYu9OzPZxKQ53W4/x+inQJBAO3yuX5GOt5/e/7X0s4iSaMOqOuT352Kz/z+INiFyHGeQl5BlShf5R45dpeu6uQERYyYiK5nR3hNQWJ1nD6+83MCQQDs2/b0371U5a4TJV4Dl0U8engldxO4BdmugYEAgD7iknZGKgjoP4vtW/WhrAfhhNqDGd8Khxv+uyjOIeQgrwonAkEAz5Dp0MZQuiC5OIBqatisJao3HnE7IsGhV48Tde2WAc7NFE3fYH3ubuQvmHfEfS1gwhmZOZHsXXv+6nWv22hVEwJBAJDL56zLGnNL9Z6+uTp4v1q5g7ljkiptaSXFBZfIzqiz4JoEGG3iaygvj3nGMQssrGh46GEHN5YB1HAvR8azOwECQGCm14aPjEoA8CqOKo917jbAiw2r7e7sbNRhb9VPfJIeOpq+asu4dakpJbZPXB/wAJ1nK0otD6JkSGxZBkLpucE=";
-	   String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcKDcv8VLoAnF52LyN1ajoOfXvCs2S+Du38KqhWddIsbwG3hi68mfqZVRpY6zUz/0MngiUfQTPrtzCpZN+ingxk32e8XLixaMUuE+7twUSB63d9zJHbMyV4AcroEr0G6z4/b/4jAJBUgr09Sr4CYcFWDA0vQMdf0YaO22j0DaUhQIDAQAB";
-	   String ss="test";
-	   try {
-	    	byte[] bt=ss.getBytes();
-	    	byte[] encodedData = RSAProvider.encryptPublicKey(bt, publicKey);
-	    	result=Base64Utils.encode(encodedData);
-	    	System.out.println("------>"+result);	    	
-		} catch (Exception e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-	   
-	   try {
-		   byte[] bt=RSAProvider.decryptByPrivateKey(Base64Utils.decode(result), privateKey);
-		   System.out.println("------>"+new String(bt));	
-	} catch (Exception e) {
-		// TODO Auto-generated catch block
-		e.printStackTrace();
-	}*/
-  public static void main(String[] args) {
-      try {
-          Map<String,String> params = new TreeMap();
-          params.put("requestId","test0001");
-          params.put("service","CreateEMVTrade");
-          params.put("version","2.0");
-          params.put("signType","RSA2");
-          params.put("merchantId","138618081008200");
-          params.put("terminalNo","98106094");
-          params.put("amount","1");
-          params.put("originalAmount","1");
-          params.put("payChannel","UNIONPAYQR");
-          params.put("productCode","PCWEB");
-          params.put("mercOrderNo","20200225113012");
-          params.put("orderDate","20210225");
-          params.put("orderTime","110223");
-          String string = "";
-          for (Map.Entry<String, String> entry : params.entrySet()) {
-              string += entry.getKey() + "="+entry.getValue() + "&";
-          }
-          string=string.substring(0,string.length()-1);
-          System.out.println(JsonUtils.objectToJson(params));
-          System.out.println(string);
-          byte[] bytes = RSAProvider.encryptPrivateKey(string.getBytes(), PRIVATE_KEY);
-          String encode = Base64Utils.encode(bytes);
-          System.out.println(encode.replaceAll("",""));
-          byte[] bytes1 = RSAProvider.decryptByPublicKey(bytes, PUBLIC_KEY);
-          System.out.println(new String(bytes1));
-      } catch (Exception e) {
-          e.printStackTrace();
-      }
-  }
-	   
-    String s = "YyctHEn5T8HXy7KSy+ebxnVrYISd/laI4SkbmQUKtPcBKsL9mbYuAW4j0fvena0Wua5+tEfTScQV6+ErxIXh8cugOWjydGYLgZAMUYhe7/wDTsqRwDqbPzRY7U0nDNd3avLnasDNamPUuppPG9siC9xZ6HRmYE9QXg0fiAwIupklLD6uLzuB9m+yyTAhJiqOtnV75lfW9DZXKHarFx90Vx7Mc9+2VhMdGXG7h5pCtYyJQUFVcLcB1t3Tbj5z421LpGxnxiMGCKQsyP0OYdO+Gk//jZD9l0dO/vTd3GFYOuETC6nNoGEnG4sPdcfR1L9ou86IVxS4RNGTUV0vHxehgw==";
-}

+ 0 - 98
src/main/java/com/xynet/pay/util/RSASignUtil.java

@@ -1,98 +0,0 @@
-package com.xynet.pay.util;
-
-import org.apache.commons.codec.binary.Base64;
-
-import java.io.UnsupportedEncodingException;
-import java.security.*;
-import java.security.spec.InvalidKeySpecException;
-import java.security.spec.PKCS8EncodedKeySpec;
-import java.security.spec.X509EncodedKeySpec;
-
-public class RSASignUtil {
-	/**
-	 * 加密
-	 * 
-	 * @param privateKey
-	 *            私钥
-	 * @param plain_text
-	 *            加密字符串
-	 * @return
-	 */
-	public static String signater(String privateKey, String plain_text) {
-		byte[] signed = null;
-		try {
-			Signature Sign = Signature.getInstance("SHA256WithRSA");
-			PKCS8EncodedKeySpec priPKCS8    = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKey.getBytes()));
-			KeyFactory keyf = KeyFactory.getInstance("RSA");  
-	        PrivateKey priKey = keyf.generatePrivate(priPKCS8);
-	        Sign.initSign(priKey);
-	        Sign.update(plain_text.getBytes("UTF-8"));
-			signed = Sign.sign();
-			System.out.println("SHA256withRSA?????-----??" + Base64.encodeBase64String(signed));
-		} catch (NoSuchAlgorithmException | InvalidKeyException | SignatureException e) {
-			e.printStackTrace();
-		} catch (InvalidKeySpecException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} catch (UnsupportedEncodingException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		return Base64.encodeBase64String(signed);
-	} 
-	
-	
-	/**
-	 * 解密
-	 * 
-	 * @param publicKey
-	 *            公钥
-	 * @param plain_text
-	 *            加密参数
-	 * @param signed
-	 *            ???
-	 */
-	public static boolean verify(String publicKey, String plain_text, String signed) {
-
-		//MessageDigest messageDigest;
-		boolean SignedSuccess=false;
-		try {
-			Signature verifySign = Signature.getInstance("SHA256WithRSA");
-			 KeyFactory keyFactory = KeyFactory.getInstance("RSA");  
-	         byte[] encodedKey = Base64.decodeBase64(publicKey);  
-	         PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));
-			verifySign.initVerify(pubKey);
-			verifySign.update(plain_text.getBytes("UTF-8"));
-			SignedSuccess = verifySign.verify(Base64.decodeBase64(signed));
-			System.out.println("????????---" + SignedSuccess);
-
-		} catch (NoSuchAlgorithmException | InvalidKeyException | SignatureException e) {
-			e.printStackTrace();
-		} catch (InvalidKeySpecException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} catch (UnsupportedEncodingException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		return SignedSuccess;
-	} 
-	
-	
-	public static void main(String[] args) throws UnsupportedEncodingException {
-		String privateKey="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCMA535xCcPJQ5b9J2nbj01FyG7zLc2Si6Zd0zS6vW5qygm6YwebWpqG37uJEulRjF6q6aGiCFrt7f8Mb5qOuBu/iZ3ByJn/UOGzDJYIl8nXxhCKzudZ8C2yq9hwtVKICzcEXphxtUbA1RutX1EiViFdPVIpCk0NPfzukzX8JaVoS2C4YUCnedpAUzD9if7N1wDYFaNdjuEOH1FznXPBO9unRU5dacVix6rqgFL5Lg5jdHdzra5GRZWdTFI9bL4UPbnOTK7rvt/963qM47F1vTf0KQR8F0pBb5kSsWZvg05bAGeYGi0TOQPRuddD1DZz5i1B71IPhEp23eLahqd5cBZAgMBAAECggEABE6YLXa7PNwG9Q0xTFU3zMpJX12MxT7C8DWbR2Gy7WM2ePv2M3lqLJlr7idvrEXcf8mH9dt6K7YbEsb09I+bF875n++4PzqrORpO8icchjmGpYJu8wieBQF3I6q6pO0YdCyVdyyGoa4Yis9KazFOZ8yRPwrNua1nczfn5TyhZTjkYec2zbWgU0XEk6DDj2NJO7Y9ut7o3+0xeVLE1WR5e324jS1DjHVafBGMnAaA7HBOIHmPp75OwXiFf6S6wwqTH4vMe+ivXq1RVo2M8Y28UvY3WNSkW5drEhDipz//fuMLowHLmTFYWzvq4pS3UjykSj6zWwDDf0HJRwipPtoAAQKBgQDJdBmhVfMLwkP9oHvzn5IZiCnunKymy3fZX5Wu6vjrn4wmDWuUoa53Hj3h2yTHZ4I/DQ29sMFd6M0+kC4aE60ecvD7o+eLRXqlJiuVUf9UijSB7BxznyAN0EGY1AcrNLLVQy/WMBxddMkOTyxAYi6CFwM2YCZNQbtI7gA8CLPpWQKBgQCx7MzhBHxgnda5oMR3Yuc2awZ6Fcka9vdRzU1UE6B5p4xbgKJcZIJgQsBaq0ZsYiSlAIoZX/dnL8eSMWK4ag6+ycCXo1AqNth1/Q+oS+IN9cuWFA0ofj49mJzkoM5oQVpgabzwnPVoj8pG9Y6BXLab1obdChwE64SvhtFz+l6vAQKBgFooPXg40QcIMAmIEzEazvXiPHHvaE1VbhO4dXLM8g3xX3WAOA9StJPW0vcLblBXgLDbFLU6L6/pikFfoWJGQAoKgtL7rZpkw9i5VnQDOHQLTih/FNSh+GR2OYU+Dt9FPGu5H+WJrogcxgZDZJiD2DCcP/HL4hhdPIYNDcnQU0QxAoGBAKhT8ZjIl6sIaMcBdB3GshvnsR77UWFzWJRJeOkcEGxHuSAwWGq0pCvRuw2MkHmleCmqkvxisDstFtAWbOEvZXfWg6ByXzsw3CT0H0YHVHwEmHEJ01EF7nhz06rw/5XejlQ8dQXmWL5tmt77HbEBN7nDgZ/JGq0E7GjrUWk56y4BAoGAKIA5F3e09oFPjfOVfq5cdfWPCVG0wYN//LNzx4REIUVyUCem423WB+TBMw7cQVHbHdYahO6Uqtlk0ONYG8CAxHVvEzJOXrqygf84DPNL06N/5ArH3czroG/mgX5f632xxlS5ppP31jLrSJjCl2sX17RuPRlyYpvbEkTDrlgPlqw=";
-		String publicKey="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjqDD+/kZfajDAk6H1KHl1ppar8vDbcza9a0ZaS+ia5JFoWmnZeHjaIowXdEozMdeyiBNxw++grdKzJVZRDx6iWL4q0rdp/OkESrPsrvCwmOpQ2alyZWXS/O6JEJ200Q80V87c7oRYNmaaT3kEmAvBmZ9xqA/t5+dmI0CrySSkzVrYgwltUYeO6I6saJ8XDHNjHly6uanDr/prpe7KWVDQ8TjQA8rAvAH6se3L6TDVru0wA04QHCFApV60pBt3ARp4SS4dHxL4y6CA44L/5C7DxOHG7/F2EzSVb221Oj5EKRV0aU7X/bp3Rm/hZygzfKS0FPAQhT72rSzTSwj34NmuwIDAQAB";//"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjAOd+cQnDyUOW/Sdp249NRchu8y3NkoumXdM0ur1uasoJumMHm1qaht+7iRLpUYxequmhogha7e3/DG+ajrgbv4mdwciZ/1DhswyWCJfJ18YQis7nWfAtsqvYcLVSiAs3BF6YcbVGwNUbrV9RIlYhXT1SKQpNDT387pM1/CWlaEtguGFAp3naQFMw/Yn+zdcA2BWjXY7hDh9Rc51zwTvbp0VOXWnFYseq6oBS+S4OY3R3c62uRkWVnUxSPWy+FD25zkyu677f/et6jOOxdb039CkEfBdKQW+ZErFmb4NOWwBnmBotEzkD0bnXQ9Q2c+YtQe9SD4RKdt3i2oaneXAWQIDAQAB";
-		String sign = "c3Dbqw0iwxCm8yNZxq+LRecK8yjxQFwNMgbntA2c8eCe0aMtXo6OlZUdxNbX+/85jMmtKph0rxRgHlfh2f6TAetrX/apfZCjO+7Pai20+LfdiW3nGOU0w/dZrcucUwoVs/tb2nfRvwaX7UKDHNcTpngST4i+c6qemFz4NFl1cR0S6Ji2mQRgWXH9HAwXx+9CzFl06G5YvfBHBIQQ4v29X+H8ovFng757Hnu5QvYDSrK/B8bnygBOEht1crX3WynQZQpd0+fYJB+kxjvl9Z6CKL90RHHto5nsLWcowYtPLf48v8Y8S7bb2Qb+7wNkT5Sbp/Wrfg0X+IrvZfUo8N12dQ==";
-
-		System.out.println(sign);
-		String plain_text="21CNY0TESTCU202103181425124762720210318142508888618050003300202103181425552000000OfflineResultSUCCESS42000008782021031822972141821.0";
-		//String signed=RSASignUtil.signater(privateKey, plain_text);
-		//System.out.println(signed);
-		System.out.println(RSASignUtil.verify(publicKey, plain_text, sign));
-
-
-		
-	}
-
-
-}

+ 0 - 301
src/main/java/com/xynet/pay/util/RSATool.java

@@ -1,301 +0,0 @@
-package com.xynet.pay.util;
-
-import java.security.KeyFactory;
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.MessageDigest;
-import java.security.PrivateKey;
-import java.security.PublicKey;
-import java.security.SecureRandom;
-import java.security.Signature;
-import java.security.spec.PKCS8EncodedKeySpec;
-import java.security.spec.X509EncodedKeySpec;
-import java.util.Arrays;
-import java.util.Base64;
-
-import javax.crypto.Cipher;
-
-/**
- * 关于JAVA中RSA加签解签,私钥加密公钥解密和公钥加密私钥解密代码详解 
- * 在项目中遇到的问题百度了许久总结出来的 私钥加密公钥解密和公钥加密私钥解密。
- * 一般为了安全采用的是私钥加密,公钥解密(公钥可以用Base64转换后公开)
- * 
- * @author wangchaohua
- *
- */
-
-public class RSATool {
-
-	public RSATool() {
-
-	}
-
-	/**
-	 * 使用私钥加密数据 用一个已打包成byte[]形式的私钥加密数据,即数字签名
-	 * 
-	 * @param keyInByte
-	 *            打包成byte[]的私钥
-	 * @param source
-	 *            要签名的数据,一般应是数字摘要
-	 * @return 签名 byte[]
-	 */
-
-	public static byte[] sign(byte[] keyInByte, byte[] source) {
-		try {
-			PKCS8EncodedKeySpec priv_spec = new PKCS8EncodedKeySpec(keyInByte);
-			KeyFactory mykeyFactory = KeyFactory.getInstance("RSA");
-			PrivateKey privKey = mykeyFactory.generatePrivate(priv_spec);
-			Signature sig = Signature.getInstance("SHA1withRSA");
-			sig.initSign(privKey);
-			sig.update(source);
-			return sig.sign();
-		} catch (Exception e) {
-			return null;
-		}
-	}
-
-	/**
-	 * 验证数字签名
-	 * 
-	 * @param keyInByte
-	 *            打包成byte[]形式的公钥
-	 * @param source
-	 *            原文的数字摘要
-	 * @param sign
-	 *            签名(对原文的数字摘要的签名)
-	 * @return 是否证实 boolean
-	 */
-	public static boolean verify(byte[] keyInByte, byte[] source, byte[] sign) {
-		try {
-			KeyFactory mykeyFactory = KeyFactory.getInstance("RSA");
-			Signature sig = Signature.getInstance("SHA1withRSA");
-			X509EncodedKeySpec pub_spec = new X509EncodedKeySpec(keyInByte);
-			PublicKey pubKey = mykeyFactory.generatePublic(pub_spec);
-			sig.initVerify(pubKey);
-			sig.update(source);
-			return sig.verify(sign);
-		} catch (Exception e) {
-			return false;
-		}
-	}
-
-	/**
-	 * 建立新的密钥对,返回打包的byte[]形式私钥和公钥
-	 * 
-	 * @return 包含打包成byte[]形式的私钥和公钥的object[],其中,object[0]为私钥byte[],object[1]
-	 *         为公钥byte[]
-	 */
-
-	public static Object[] giveRSAKeyPairInByte() {
-		KeyPair newKeyPair = creatmyKey();
-		if (newKeyPair == null)
-			return null;
-		Object[] re = new Object[2];
-		if (newKeyPair != null) {
-			PrivateKey priv = newKeyPair.getPrivate();
-			byte[] b_priv = priv.getEncoded();
-			PublicKey pub = newKeyPair.getPublic();
-			byte[] b_pub = pub.getEncoded();
-			re[0] = b_priv;
-			re[1] = b_pub;
-			return re;
-		}
-		return null;
-	}
-
-	/**
-	 * 新建密钥对
-	 * 
-	 * @return KeyPair对象
-	 */
-	public static KeyPair creatmyKey() {
-		KeyPair myPair;
-		long mySeed;
-		mySeed = System.currentTimeMillis();
-		try {
-			KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
-			SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
-			random.setSeed(mySeed);
-			keyGen.initialize(1024, random);
-			myPair = keyGen.generateKeyPair();
-		} catch (Exception e1) {
-			return null;
-		}
-		return myPair;
-	}
-
-	/**
-	 * 使用RSA公钥加密数据
-	 * 
-	 * @param pubKeyInByte
-	 *            打包的byte[]形式公钥
-	 * @param data
-	 *            要加密的数据
-	 * @return 加密数据
-	 */
-	public static byte[] encryptByRSA(byte[] pubKeyInByte, byte[] data) {
-		try {
-			KeyFactory mykeyFactory = KeyFactory.getInstance("RSA");
-			X509EncodedKeySpec pub_spec = new X509EncodedKeySpec(pubKeyInByte);
-			PublicKey pubKey = mykeyFactory.generatePublic(pub_spec);
-			Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
-			cipher.init(Cipher.ENCRYPT_MODE, pubKey);
-			return cipher.doFinal(data);
-		} catch (Exception e) {
-			return null;
-		}
-	}
-
-	/**
-	 * 用RSA私钥解密
-	 * 
-	 * @param privKeyInByte
-	 *            私钥打包成byte[]形式
-	 * @param data
-	 *            要解密的数据
-	 * @return 解密数据
-	 */
-	public static byte[] decryptByRSA(byte[] privKeyInByte, byte[] data) {
-		try {
-			PKCS8EncodedKeySpec priv_spec = new PKCS8EncodedKeySpec(privKeyInByte);
-			KeyFactory mykeyFactory = KeyFactory.getInstance("RSA");
-			PrivateKey privKey = mykeyFactory.generatePrivate(priv_spec);
-			Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
-			cipher.init(Cipher.DECRYPT_MODE, privKey);
-			return cipher.doFinal(data);
-		} catch (Exception e) {
-			return null;
-		}
-
-	}
-
-	/**
-	 * 使用RSA私钥加密数据
-	 * 
-	 * @param pubKeyInByte
-	 *            打包的byte[]形式私钥
-	 * @param data
-	 *            要加密的数据
-	 * @return 加密数据
-	 */
-
-	public static byte[] encryptByRSA1(byte[] privKeyInByte, byte[] data) {
-		try {
-			PKCS8EncodedKeySpec priv_spec = new PKCS8EncodedKeySpec(privKeyInByte);
-			KeyFactory mykeyFactory = KeyFactory.getInstance("RSA");
-			PrivateKey privKey = mykeyFactory.generatePrivate(priv_spec);
-			Cipher cipher = Cipher.getInstance(mykeyFactory.getAlgorithm());
-			cipher.init(Cipher.ENCRYPT_MODE, privKey);
-			return cipher.doFinal(data);
-		} catch (Exception e) {
-			return null;
-		}
-
-	}
-
-	/**
-	 * 用RSA公钥解密
-	 * 
-	 * @param privKeyInByte
-	 *            公钥打包成byte[]形式
-	 * @param data
-	 *            要解密的数据
-	 * @return 解密数据
-	 */
-
-	public static byte[] decryptByRSA1(byte[] pubKeyInByte, byte[] data) {
-		try {
-			KeyFactory mykeyFactory = KeyFactory.getInstance("RSA");
-			X509EncodedKeySpec pub_spec = new X509EncodedKeySpec(pubKeyInByte);
-			PublicKey pubKey = mykeyFactory.generatePublic(pub_spec);
-			Cipher cipher = Cipher.getInstance(mykeyFactory.getAlgorithm());
-			cipher.init(Cipher.DECRYPT_MODE, pubKey);
-			return cipher.doFinal(data);
-		} catch (Exception e) {
-			return null;
-		}
-	}
-
-	/**
-	 * 计算字符串的SHA数字摘要,以byte[]形式返回
-	 */
-	public static byte[] MdigestSHA(String source) {
-		// byte[] nullreturn = { 0 };
-		try {
-			MessageDigest thisMD = MessageDigest.getInstance("SHA");
-			byte[] digest = thisMD.digest(source.getBytes("UTF-8"));
-			return digest;
-		} catch (Exception e) {
-			return null;
-		}
-	}
-
-	/**
-	 * 测试
-	 * 
-	 */
-	public static void main(String[] args) {
-		try {
-			// 私钥加密 公钥解密
-			// 生成私钥-公钥对
-			Object[] v = giveRSAKeyPairInByte();
-			// 获得摘要
-			byte[] source = MdigestSHA("假设这是要加密的客户数据");
-			// 使用私钥对摘要进行加密 获得密文 即数字签名
-			byte[] sign = sign((byte[]) v[0], source);
-			// 使用公钥对密文进行解密,解密后与摘要进行匹配
-			boolean yes = verify((byte[]) v[1], source, sign);
-			if (yes)
-				System.out.println("匹配成功 合法的签名!");
-
-			// 公钥加密私钥解密
-			// 获得摘要
-			byte[] sourcepub_pri = ("13265986584||316494646546486498||01||public").getBytes("UTF-8");
-
-			// 使用公钥对摘要进行加密 获得密文
-			byte[] signpub_pri = encryptByRSA((byte[]) v[1], sourcepub_pri);
-			// System.out.println("公钥加密密文:"+new
-			// String(Base64.encodeBase64(signpub_pri)));
-
-			// 使用私钥对密文进行解密 返回解密后的数据
-			byte[] newSourcepub_pri = decryptByRSA((byte[]) v[0], signpub_pri);
-
-			System.out.println("私钥解密:" + new String(newSourcepub_pri, "UTF-8"));
-			// 对比源数据与解密后的数据
-			if (Arrays.equals(sourcepub_pri, newSourcepub_pri))
-				System.out.println("匹配成功 合法的私钥!");
-
-			// 私钥加密公钥解密
-			// 获得摘要
-			// byte[] sourcepri_pub = MdigestSHA("假设这是要加密的客户数据");
-			byte[] sourcepri_pub = ("13265986584||316494646546486498||01||private").getBytes("UTF-8");
-
-			// 使用私钥对摘要进行加密 获得密文
-			byte[] signpri_pub = encryptByRSA1((byte[]) v[0], sourcepri_pub);
-
-			// System.out.println("私钥加密密文:"+new
-			// String(Base64.encodeBase64(sign11)));
-			// 使用公钥对密文进行解密 返回解密后的数据
-			byte[] newSourcepri_pub = decryptByRSA1((byte[]) v[1], signpri_pub);
-
-			System.out.println("公钥解密:" + new String(newSourcepri_pub, "UTF-8"));
-
-			String PUBLICKEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCEGENnf3rdiO20isoLQqezw12FoWXII9FBw8nR1MWQ3X0CVzOsqY1hOmxD/YI9OB7WVIaVax5tj1l+wk6A0v85Z4OpGWqz4B5L3fCUlBwf/M6DXHlSN1OZttvQF3OeWvc6gvJHihR7pp18zc4KfCJx0Ry6IrGH/2SNOVE1AIgvRQIDAQAB";
-			String PRIVATEKEY = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIQYQ2d/et2I7bSKygtCp7PDXYWhZcgj0UHDydHUxZDdfQJXM6ypjWE6bEP9gj04HtZUhpVrHm2PWX7CToDS/zlng6kZarPgHkvd8JSUHB/8zoNceVI3U5m229AXc55a9zqC8keKFHumnXzNzgp8InHRHLoisYf/ZI05UTUAiC9FAgMBAAECgYAGNcHNds/G5G4QY8n1149cwx19b8YCL7Thu5ucUr1q/w6mcoUKY/oyjPWUCLH7wMyqVNTy51NJ4UhazjW0lrbK4ZbPDHFij9CiZ7QFASiQ/TQWaL+KSIWnE6/rK9IdouwFKxk+cvvLteZoAXP6mFcrsa7LzfkENiIMu7mjpTNHAQJBANXv9U5JWOAVhWHDQcEWKn7YKpAVRleXdeUeJrXcdkqBDI+P6suA9j+ahDREfu+x65wUsrJotPHUXgJG0TarJIUCQQCeEPLrv6Qvi5+nbn2Eifn/fjsmIdI0U2WZKDHWJEnLsRUuGDNYxVE/SPDNDedA2OHeFB6j0Kk/ECdsWnUq6zvBAkAgUGViFMwa1MVX1fFZo+p5TFdpef0s/9Cr8djxAULQ0BtAmAFkCa+oPcOYTXxK4jnvUmUHc69ZE7W7bEzvj/wtAkB50X4mClAzBFxK4XCC0QOG0HYtcStbgFpwqvWdn+Hvxc4Y9DW+WHPBXimXHvv2ki+gw8jJX2rQW1bGvwBFz30BAkASPkORJxVWv91StjI2f/HXDO5eG5/su/XIb3eajaLUSEdaQlcs3ywLrrJ0o3VAR0J9aq59cmp6em017AMnmbF7";
-			Base64.Decoder decoder = Base64.getDecoder();
-			byte[] signPrivate = decoder.decode(PRIVATEKEY.getBytes());
-			byte[] signPublic = decoder.decode(PUBLICKEY.getBytes());
-
-			String publicpwd = "N/b4nYbbLFVq0yTAIOpNNydtNQUCQxQy0B7bD6kzxLMW2guYxXtWOC/9Z5dpWecx/y7d5CezUJ6cf/8++msiNie4DcKBaFDFPh5rPbjeEB+DRfhjcdR2BsVGXWLsq3dLYLgZObQXG6Tb9rXakuH34Y+6KIIwCjiODH2QAU+PSiM=";
-			String privatepwd = "MTMyNjU5ODY1ODR8fDMxNjQ5NDY0NjU0NjQ4NjQ5OHx8MDF8fHByaXZhdGU=";
-			// 使用私钥对密文进行解密 返回解密后的数据
-			byte[] newSource111 = decryptByRSA(signPrivate, decoder.decode(publicpwd.getBytes()));
-			System.out.println("私钥解密1:" + new String(newSource111, "UTF-8"));
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-	}
-
-}

+ 0 - 76
src/main/java/com/xynet/pay/util/Reserve.java

@@ -1,76 +0,0 @@
-package com.xynet.pay.util;
-
-import java.util.Date;
-
-public class Reserve {
-    private Integer id;
-
-    private String jqbh;
-
-    private String shbh;
-
-    private String spbh;
-
-    private String spmc;
-
-    private Integer ydsl;
-
-    private Date xgsj;
-
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public String getJqbh() {
-        return jqbh;
-    }
-
-    public void setJqbh(String jqbh) {
-        this.jqbh = jqbh == null ? null : jqbh.trim();
-    }
-
-    public String getShbh() {
-        return shbh;
-    }
-
-    public void setShbh(String shbh) {
-        this.shbh = shbh == null ? null : shbh.trim();
-    }
-
-    public String getSpbh() {
-        return spbh;
-    }
-
-    public void setSpbh(String spbh) {
-        this.spbh = spbh == null ? null : spbh.trim();
-    }
-
-    public String getSpmc() {
-        return spmc;
-    }
-
-    public void setSpmc(String spmc) {
-        this.spmc = spmc == null ? null : spmc.trim();
-    }
-
-    public Integer getYdsl() {
-        return ydsl;
-    }
-
-    public void setYdsl(Integer ydsl) {
-        this.ydsl = ydsl;
-    }
-
-    public Date getXgsj() {
-        return xgsj;
-    }
-
-    public void setXgsj(Date xgsj) {
-        this.xgsj = xgsj;
-    }
-
-}

+ 0 - 440
src/main/resources/application.yml

@@ -1,440 +0,0 @@
-#配置文件环境配置
-spring:
-  profiles:
-    active: dev
-    
-  #jackson
-  jackson:
-    date-format: yyyy-MM-dd HH:mm:ss
-    time-zone: GMT+8  
-    serialization.indent_output: true
-    
-  application.name: service-pay-third
-  
-  http.multipart:
-    enabled: true #默认支持文件上传.
-    file-size-threshold: 0 #支持文件写入磁盘.
-    location: # 上传文件的临时目录
-    maxFileSize: 20Mb # 最大支持文件大小
-    maxRequestSize: 20Mb # 最大支持请求大小
-    
-  mqtt:
-    #MQTT服务端地址,端口默认为1883,如果有多个,用逗号隔开,如tcp://127.0.0.1:1883,tcp://192.168.60.133:1883
-    url: tcp://8.142.160.185:1883
-    #用户名
-    username: admin
-    #密码
-    password: public
-    #客户端id(不能重复)
-    client:
-      id: provider-id
-    #MQTT默认的消息推送主题,实际可在调用接口时指定
-    default:
-      topic: topic
-  
-mybatis:   
-  mapper-locations: classpath:mapping/*.xml  
-  type-aliases-package: com.xynet.pay.dao
-  config-location: classpath:mybatis/mybatis-config.xml 
-     
-server:
-  port: 8115 
-  tomcat:
-    max-connections: 1000
-    max-threads: 200
-    accept-count: 1000 
-    
-endpoints:
-  metrics:
-    sensitive: false
-  shutdown:
-    enabled: true
-    path: /service-pay-third
-    
-management:
-  security:
-    enabled: false
-    
-monitor:
-  agent:
-    url: http://127.0.0.1:8100
-  plugin:
-    type: application 
-    
-hystrix:
-  command:
-    default:
-      execution:
-        timeout:
-          enabled: true
-        isolation:
-          thread:
-            timeoutInMilliseconds: 300000  #超时时间
-            
-    HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds: 300000
-                        
-  threadpool:  
-    default:  
-      coreSize: 200  #核心线程数
-      maxQueueSize: 1000
-      queueSizeRejectionThreshold: 1000  #排队线程数量阈值   
-      auto-config: true  
-
-ribbon:
-  ReadTimeout: 60000
-  ConnectTimeout: 60000
-  MaxAutoRetries: 0
-  MaxAutoRetriesNextServer: 1
-  eureka:
-    enabled: true
-
-
----
-spring:
-  profiles: dev
-  #mysql
-  datasource:
-      driver-class-name: com.mysql.jdbc.Driver
-      username: root
-      password: xymysqlroot_2019
-      # set password for root@localhost = password('123');
-      #CREATE USER 'xyz'@'127.0.0.1' IDENTIFIED BY "xyz@qaz_123";
-      #GRANT ALL PRIVILEGES ON *.* TO 'xyz'@'127.0.0.1'
-      #url: jdbc:mysql://175.6.4.138:3694/xy-pay?characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false
-      url: jdbc:mysql://47.119.120.128:3316/xyplatdb?characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false
-      #test-while-idle: true
-      #time-between-eviction-runs-millis: 300000
-      #min-evictable-idle-time-millis: 1800000
-      
-      initialSize: 5  
-      minIdle: 5  
-      maxActive: 20  
-      maxWait: 60000  
-      timeBetweenEvictionRunsMillis: 60000  
-      minEvictableIdleTimeMillis: 300000  
-      validationQuery: SELECT NOW()  
-      testWhileIdle: true  
-      testOnBorrow: true  
-      testOnReturn: false  
-      poolPreparedStatements: true  
-      maxPoolPreparedStatementPerConnectionSize: 20  
-      filters: stat,wall,log4j 
-      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 
-            
-#redis
-  redis:
-    database: 0
-    host: 47.119.120.128
-    password:  XY#123456@mm
-    port: 6389
-    pool:
-      min-idle: 1
-      max-idle: 8
-      max-active: 100
-      max-wait: 1    
-    timeout: 10000  
-
- #log
-logging:
-    level:
-      root: INFO
-      com.xynet: DEBUG
-    file: logs/service-pay-third.log
-      
-#server
-server:
-  port: 8115 
-
-app:
-    fileHome: file/
-    tempFileHome: tmp/
-    xxwAppId: 202310201164921719597563904
-    xxwSK: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCu/W4vOOFFTEYMpVqSASQgqlKsxsgV6UnYf4OhskXXKWwwnZFKcqFh++aW9Aw73s1vZgoXKv/SVYEmrB48qJjZHZzVMg5BI6So8gs7JomwH7rNR9le1Xs3OVP5vML6jDVuCjd61/qyG++A3P+GviOCLny3qiytsVFBA9LfN+P9OoB7tW6FbRTlTRUNB0oKR+Hlg1wRKP+USuRUWzXQxZt0Ie0SmpDcnfAduUPurcODbrkqF5e4ic0mfXFhqPB6o9hUs0onjnc2P0W374rPUcWRxJJa5wT/6XFqYV5OSob6KSA9qBx/tefdvEfnrGFqtAQhPNv5N/uAwRxDMI4NDSWBAgMBAAECggEAHqkjFD0YI4dAwth6LRjsFpkhUUqnJkew+7EkBEHzQMbuQPpqyauaIUv81DhAqIDaaAlt/S84kccPkRIZXjGATpKEt0pE+x7erAd09lFDUMvOdEeBi79GDqAJ2bk8RKAqgHRj0i9jqq+AYIjYcOiB2j6A9cFogKqP/R9JZHkrhmPd34YxkvMvVy5GXsRXeWcruvyu+O1ai5GPUZw1FEPPEBP2ejvD6xX+8LQ6LKuoaTTByrdQpAk66/ykH8+p7aolCbLggFQvUDfqxTXShXZk0Z7mfhJsJnILcj0+k68L3xB19rhJL3NzIuA/8X2Ipo7u1eA6X17hKBhtUUnnmTP7QQKBgQDysl+WGj02pvylAeKKJlFsTXIC5IYbd91uUCmVTVDjGhcyfKKAIfJYxOp9V5dCMz/zG+m+V4EZdDTLNJrnkemGgB5QSN5+5MbRqch3LvX92WoTXs3YBWrxy+kfIZQCdvbIR4kIKXNVpNSqy1EdBlTAwCMJLKh0v/JZC54rGD3ZOQKBgQC4lPc0tkFzlOPD6XbJFMtLp+Mcogz0XW8c/kvrGR3sRs1AnKbYdn9nfR7hUqCXXWYyNuhUO4QwOZKM+VDJz2w1bnpluQpEmUYXgsIok4Tn7zPbuknzG05pw8YwqbkL96FBN7oAWGLW7LIihdcbMOerm3FBGHcrdeMsrFeIipEWiQKBgC87/hSFqNJBL7yhoEiI6qHsdLsRZPRloMf+fAld0ddRVaBy12Geub8DHCwm5v5wYQrcrOJpv2uHzVqbM2bMZCnUN5IijIMf3X4i0Cw6DJBKRzXb5q4bZ9QFfqqba2YLZz5Vhdr7zkGl4eoXxgKjH82f13HKqkKGtREVjMQQZMEpAoGATlhkSQpm45E5z8kDczwRQg6Dln6t8vbJl8vUG3iwu74dlqQnKU+6qglwlwEEStsI6p1lpYMRi4qUSqP0B4S0EEXRS+Xrlsxb9NS6ZpCe4/ci0svSYY6gjMHdGIChm5PC7TSjDUx2v3T98ytN7yul2bADtTaWNms2Ppr0GG+AP8kCgYEA3/y+q801/glLvib8+HR36OUs+9l+E/oyyTjVqB1A/d/LRgE5gGqRw6G1Jy2ZxxJ7zcG0TBvjv65B1Iwt45uNb8Uhw6r6PTHlZUE+F8/Hjzmh3Nk5YVoTQj4PqiSLaxhPao0Dkyrmoxmx9DN097A2AMk1FAvbLE+y9dsu78hH3XI=
-
-
-    
-eureka:
-    client:
-      #service-url.defaultZone: http://192.168.0.128:8761/eureka 
-      service-url.defaultZone:  http://admin:123@192.168.1.253:7010/eureka     
-      #service-url.defaultZone: http://admin:123@192.168.1.253:7010/eureka     
-      enabled: false
-      registerWithEureka: true
-      fetchRegistry: true  
-      healthcheck.enabled: true
-    instance:
-      #status-page-url-path: ${management.context-path}/info
-      #health-check-url-path: ${management.context-path}/health
-      prefer-ip-address: true    
-      instance-id: ${spring.cloud.client.ipAddress}:${server.port} 
-            
-   
----
-spring:
-  profiles: test
-  #mysql
-  datasource:
-      driver-class-name: com.mysql.jdbc.Driver
-     
-      username: root
-      password: xymysqlroot_2019
-      url: jdbc:mysql://127.0.0.1:3316/xyplatdb?characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false #&allowMultiQueries=true
-      #test-while-idle: true
-      #time-between-eviction-runs-millis: 300000
-      #min-evictable-idle-time-millis: 1800000
-      
-      initialSize: 5  
-      minIdle: 5  
-      maxActive: 20  
-      maxWait: 60000  
-      timeBetweenEvictionRunsMillis: 60000  
-      minEvictableIdleTimeMillis: 300000  
-      validationQuery: SELECT NOW()  
-      testWhileIdle: true  
-      testOnBorrow: true  
-      testOnReturn: false  
-      poolPreparedStatements: true  
-      maxPoolPreparedStatementPerConnectionSize: 20  
-      filters: stat,wall,log4j 
-      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 
-            
-#redis
-  redis:
-    database: 0
-    host: 127.0.0.1
-    password:  XY#123456@mm
-    port: 6389
-    pool:
-      min-idle: 1
-      max-idle: 8
-      max-active: 100
-      max-wait: 1
-    timeout: 10000
- #监控 
-  #boot.admin.url: http://localhost:8080     
- #log
-logging:
-    file: logs/service-pay-third.log
-    level:
-      root: INFO
-      com.xynet: INFO
-    
-#server 
-server:
-  port: 8115
-
-app:
-    fileHome: file/
-    tempFileHome: tmp/
-    xxwAppId: 202310201164921719597563904
-    xxwSK: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCu/W4vOOFFTEYMpVqSASQgqlKsxsgV6UnYf4OhskXXKWwwnZFKcqFh++aW9Aw73s1vZgoXKv/SVYEmrB48qJjZHZzVMg5BI6So8gs7JomwH7rNR9le1Xs3OVP5vML6jDVuCjd61/qyG++A3P+GviOCLny3qiytsVFBA9LfN+P9OoB7tW6FbRTlTRUNB0oKR+Hlg1wRKP+USuRUWzXQxZt0Ie0SmpDcnfAduUPurcODbrkqF5e4ic0mfXFhqPB6o9hUs0onjnc2P0W374rPUcWRxJJa5wT/6XFqYV5OSob6KSA9qBx/tefdvEfnrGFqtAQhPNv5N/uAwRxDMI4NDSWBAgMBAAECggEAHqkjFD0YI4dAwth6LRjsFpkhUUqnJkew+7EkBEHzQMbuQPpqyauaIUv81DhAqIDaaAlt/S84kccPkRIZXjGATpKEt0pE+x7erAd09lFDUMvOdEeBi79GDqAJ2bk8RKAqgHRj0i9jqq+AYIjYcOiB2j6A9cFogKqP/R9JZHkrhmPd34YxkvMvVy5GXsRXeWcruvyu+O1ai5GPUZw1FEPPEBP2ejvD6xX+8LQ6LKuoaTTByrdQpAk66/ykH8+p7aolCbLggFQvUDfqxTXShXZk0Z7mfhJsJnILcj0+k68L3xB19rhJL3NzIuA/8X2Ipo7u1eA6X17hKBhtUUnnmTP7QQKBgQDysl+WGj02pvylAeKKJlFsTXIC5IYbd91uUCmVTVDjGhcyfKKAIfJYxOp9V5dCMz/zG+m+V4EZdDTLNJrnkemGgB5QSN5+5MbRqch3LvX92WoTXs3YBWrxy+kfIZQCdvbIR4kIKXNVpNSqy1EdBlTAwCMJLKh0v/JZC54rGD3ZOQKBgQC4lPc0tkFzlOPD6XbJFMtLp+Mcogz0XW8c/kvrGR3sRs1AnKbYdn9nfR7hUqCXXWYyNuhUO4QwOZKM+VDJz2w1bnpluQpEmUYXgsIok4Tn7zPbuknzG05pw8YwqbkL96FBN7oAWGLW7LIihdcbMOerm3FBGHcrdeMsrFeIipEWiQKBgC87/hSFqNJBL7yhoEiI6qHsdLsRZPRloMf+fAld0ddRVaBy12Geub8DHCwm5v5wYQrcrOJpv2uHzVqbM2bMZCnUN5IijIMf3X4i0Cw6DJBKRzXb5q4bZ9QFfqqba2YLZz5Vhdr7zkGl4eoXxgKjH82f13HKqkKGtREVjMQQZMEpAoGATlhkSQpm45E5z8kDczwRQg6Dln6t8vbJl8vUG3iwu74dlqQnKU+6qglwlwEEStsI6p1lpYMRi4qUSqP0B4S0EEXRS+Xrlsxb9NS6ZpCe4/ci0svSYY6gjMHdGIChm5PC7TSjDUx2v3T98ytN7yul2bADtTaWNms2Ppr0GG+AP8kCgYEA3/y+q801/glLvib8+HR36OUs+9l+E/oyyTjVqB1A/d/LRgE5gGqRw6G1Jy2ZxxJ7zcG0TBvjv65B1Iwt45uNb8Uhw6r6PTHlZUE+F8/Hjzmh3Nk5YVoTQj4PqiSLaxhPao0Dkyrmoxmx9DN097A2AMk1FAvbLE+y9dsu78hH3XI=
-     
-auth:
-    url: http://127.0.0.1:8081/remote/authRemoteService
-    
-eureka:
-  client:
-    service-url.defaultZone: http://eureka:eureka_xyplat@127.0.0.1:8080/eureka
-    enabled: true     
-    registerWithEureka: true
-    fetchRegistry: true
-  instance:
-    prefer-ip-address: true    
-    instance-id: ${spring.cloud.client.ipAddress}:${server.port}
-
-zhong:
-  notifyUrl: apitest/service-pay-third/third/pay/api/notifyBOC
-  prvateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQChSlsRd+721kGVqGRAcTfuL4juQPb0iobS+iXlF/hzlS7qOQ3xYDtY2n23t9nBv8E0sSdIDrMhlJIS/yELPVSGAJIC21KItWXIobZ5pwUhRi89SQ1I6iiPzlLAHoKz1DGUX5G3ULThf9ONTSGQErMMXwI98unM7v8WqKR5+HPZL+yghVqCV8BGHoJtq1hsS01lmdwGmY/9+YiMPt4rdaAq4OeKtT8DfBuNiGLA8TnwN3sevKz2c5FShvbISjwNNUPRYmqb8rMSBbv4rAX4z9Kki1mFm+4MuxtWrcg+/dMRJHm17OlOp8GdzNo33Api7BH1IgnjmG3z7haQx/DzoOstAgMBAAECggEAaV4oDEtro3npMpnllGvifAo1zGBIdQ0icyXUJ8v3FZs6IO3Q/AVAABYM1z6WVYqt73xkCyD/SUrD+wENV0hjtX8d5Bvf2UuYCPAMQ4EnSsuNBN56fU3r3baOPNAx1sUi9qlQio+A+2gEjmT7LiHpMoXG8y2EK8tefjEB8mSrWhB027UXeA+zZhnsmeY5s0Q7mOU8gzKaNjQLVVNr5DZvzJ2znpFCBQIRZ9gjrXzVLzNSdIoOTxbZcEaMOt4/NYTdGN1r/8fBbWlMZ87IMIHwJusifzXwA8u8EUoO1NGV8N8s+ioQLrDqghLu7Zop1HDNqGP8Bw1ZI+Bb8dKtP+dsSQKBgQD0dUZkk0Ro6bylkKh2uGLyndwZahVBv6qJg0igPVnG+srAA/hXQTcmtdo+a0HzE32a9KPCqT33pxxRS8uv1mv/387VgFYlBNRG0swnTNR+Ct0d2r9EdEEP+EjC9raN+Ld16ci5iQwwQ2rJshnu6Cbu4Y1UaWfvmKMjvb1bUA9vEwKBgQCo59jTiKRqYFtLEFhUOOy58Ny8nhOlbfNV5RTNE/fUJZ0bYvnkJU+SwfpYfSU1pDfZx4G3XNUdQadkxO/zn1EZxFVnax1OmodeuxBvIyAluqGPcrOHd5FgbMSqZyQts5JHcJdb2/CihRQ4JoM4S+NeN5QoAvcBxoR7oYEyTnREvwKBgBujzuu8QvXhx7SooIOb4YQxGRu+hNzEQRH/SAzmIup+nMINMN0cwJGd6ik4k2Jah88nbgSqghkoSelfOo6NHfT2Zzp4okTZQO8pEnA3HaeKrumbPBkPU/PsTL3Oi2GOB6BLaKihuEEUvlRD0O7UTOKhmgs7R8ctaPS3lVtnt/cFAoGAe829A4gjo4lPQV0QsWMsOTqQQXzIv7gw5WPNdGhPfmO3nYxVyGGEyvh97ICGVqQw/+MZdHKKDzDBZr5ndzXutylOxEgiKixgTxJkgGHJvX3n0AJuDzyYBYqUOKbzQMBf1xdzCjTTU/yhjmrEQe52EOhCI3XQ4a9GCmyeC2awGHcCgYB441H4Ys+kNP9Zi1nWJCz+vOtWf6gMY6le7kZtPhpyAgANrGmLv/djlAPfrpgZO9EsufnE1YtcVv8f+JNG+o/lPsyYT/5B3K9OFlV80P6x01V8lF1V3PX48TPk1d56bhi4SGwchNVf7u12cj2FOrgRks+e9o5WmGLWdtQgs3bkYQ==
-  merchantId: 138620080012800
-  trmNo: 97027311
-  publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjBSmvi3Xmvrne2heayLd0yPPz1J7JlMCiTg8qVU0vyFAytglP0V3SHGjwwMUI0MAXDENf0FoFlVmltvVtiXqQG4zZUNec2kgM2/uA0dfLr5yyuqTO/IR1B0BrJ3COguMYIM48GE+DIiiCfRYgjSQxCMD8zZriX7p1up2cJRJqGsOxgoiv6HekmQUGfyb4ZoSHAaksniDR1nZ/CEJrhp03S8pLN8OmM2Y5PSZgMx5e4HgTkqDrnijZzVEnPCjXcWlR6+vFuFVqahyr4qAXFuS4wj0/GSXONos5Ihm/Cuj2SaJpyPChSaWfrGQPuxUj/CamjR9KnwqEfwmC6i2qYI95wIDAQAB
-
-
----
-
-spring:
-  profiles: local
-
-      
----
-spring:
-  profiles: prod
-  datasource:
-      driver-class-name: com.mysql.jdbc.Driver
-      username: xyplat
-      password: Z4t1k#Hmbo9
-      url: jdbc:mysql://rm-8vb5482le656d20el.mysql.zhangbei.rds.aliyuncs.com:3306/xyplatdb?characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false #&allowMultiQueries=true
-      type: com.alibaba.druid.pool.DruidDataSource 
-      
-      initialSize: 5  
-      minIdle: 5  
-      maxActive: 20  
-      maxWait: 60000  
-      timeBetweenEvictionRunsMillis: 60000  
-      minEvictableIdleTimeMillis: 300000  
-      validationQuery: SELECT NOW()  
-      testWhileIdle: true  
-      testOnBorrow: true  
-      testOnReturn: false  
-      poolPreparedStatements: true  
-      maxPoolPreparedStatementPerConnectionSize: 20  
-      filters: stat,wall,log4j 
-      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 
-
-  #jpa
-  jpa: 
-      show-sql: true
-      open-in-view: true  
-      
-  zipkin:
-    enabled: false
-    baseUrl: http://192.168.0.94:8088/
-
-  sleuth:
-     sampler:
-       #  采样率
-       percentage: 0.1
-
-#redis
-  redis:
-    database: 0
-    host: 172.26.239.162
-    password:  mWcMj69novC9
-    port: 7382
-    pool:
-      min-idle: 1
-      max-idel: 8
-      max-active: 100
-      max-wait: 1
-    timeout: 3000
-    
-logging:
-    level:
-      root: INFO
-      com.xynet: INFO
-    file: logs/service-pay-third.log
-    
-#server 
-server:
-  port: 8115
-
-app:
-    fileHome: file/
-    tempFileHome: tmp/
-    xxwAppId: 202310201164921719597563904
-    xxwSK: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCu/W4vOOFFTEYMpVqSASQgqlKsxsgV6UnYf4OhskXXKWwwnZFKcqFh++aW9Aw73s1vZgoXKv/SVYEmrB48qJjZHZzVMg5BI6So8gs7JomwH7rNR9le1Xs3OVP5vML6jDVuCjd61/qyG++A3P+GviOCLny3qiytsVFBA9LfN+P9OoB7tW6FbRTlTRUNB0oKR+Hlg1wRKP+USuRUWzXQxZt0Ie0SmpDcnfAduUPurcODbrkqF5e4ic0mfXFhqPB6o9hUs0onjnc2P0W374rPUcWRxJJa5wT/6XFqYV5OSob6KSA9qBx/tefdvEfnrGFqtAQhPNv5N/uAwRxDMI4NDSWBAgMBAAECggEAHqkjFD0YI4dAwth6LRjsFpkhUUqnJkew+7EkBEHzQMbuQPpqyauaIUv81DhAqIDaaAlt/S84kccPkRIZXjGATpKEt0pE+x7erAd09lFDUMvOdEeBi79GDqAJ2bk8RKAqgHRj0i9jqq+AYIjYcOiB2j6A9cFogKqP/R9JZHkrhmPd34YxkvMvVy5GXsRXeWcruvyu+O1ai5GPUZw1FEPPEBP2ejvD6xX+8LQ6LKuoaTTByrdQpAk66/ykH8+p7aolCbLggFQvUDfqxTXShXZk0Z7mfhJsJnILcj0+k68L3xB19rhJL3NzIuA/8X2Ipo7u1eA6X17hKBhtUUnnmTP7QQKBgQDysl+WGj02pvylAeKKJlFsTXIC5IYbd91uUCmVTVDjGhcyfKKAIfJYxOp9V5dCMz/zG+m+V4EZdDTLNJrnkemGgB5QSN5+5MbRqch3LvX92WoTXs3YBWrxy+kfIZQCdvbIR4kIKXNVpNSqy1EdBlTAwCMJLKh0v/JZC54rGD3ZOQKBgQC4lPc0tkFzlOPD6XbJFMtLp+Mcogz0XW8c/kvrGR3sRs1AnKbYdn9nfR7hUqCXXWYyNuhUO4QwOZKM+VDJz2w1bnpluQpEmUYXgsIok4Tn7zPbuknzG05pw8YwqbkL96FBN7oAWGLW7LIihdcbMOerm3FBGHcrdeMsrFeIipEWiQKBgC87/hSFqNJBL7yhoEiI6qHsdLsRZPRloMf+fAld0ddRVaBy12Geub8DHCwm5v5wYQrcrOJpv2uHzVqbM2bMZCnUN5IijIMf3X4i0Cw6DJBKRzXb5q4bZ9QFfqqba2YLZz5Vhdr7zkGl4eoXxgKjH82f13HKqkKGtREVjMQQZMEpAoGATlhkSQpm45E5z8kDczwRQg6Dln6t8vbJl8vUG3iwu74dlqQnKU+6qglwlwEEStsI6p1lpYMRi4qUSqP0B4S0EEXRS+Xrlsxb9NS6ZpCe4/ci0svSYY6gjMHdGIChm5PC7TSjDUx2v3T98ytN7yul2bADtTaWNms2Ppr0GG+AP8kCgYEA3/y+q801/glLvib8+HR36OUs+9l+E/oyyTjVqB1A/d/LRgE5gGqRw6G1Jy2ZxxJ7zcG0TBvjv65B1Iwt45uNb8Uhw6r6PTHlZUE+F8/Hjzmh3Nk5YVoTQj4PqiSLaxhPao0Dkyrmoxmx9DN097A2AMk1FAvbLE+y9dsu78hH3XI=
-
-eureka:
-  client:
-    service-url.defaultZone: http://eureka:eureka_xyplat@172.26.239.164:8761/eureka
-    registry-fetch-interval-seconds: 5 # 默认为30秒
-    enabled: true  
-    registerWithEureka: true
-    fetchRegistry: true  
-    healthcheck.enabled: true
-    
-  instance:
-    lease-renewal-interval-in-seconds: 5
-    lease-expiration-duration-in-seconds: 5
-    prefer-ip-address: true    
-    instance-id: ${spring.cloud.client.ipAddress}:${server.port}  
-    
-
-#小麦
-orderNotifyUrl: https://xcx.xynetweb.com/service-order/jzgcl/closeDoorState
-closeNotify: https://xcx.xynetweb.com/service-order/jzgcl/closeDoor
-key: xInYuAnWaNgLuOsIgN
-companyId: 113
-#中行智慧付
-zhong:
-  notifyUrl: service-pay-third/third/pay/api/notifyBOC
-  prvateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCMA535xCcPJQ5b9J2nbj01FyG7zLc2Si6Zd0zS6vW5qygm6YwebWpqG37uJEulRjF6q6aGiCFrt7f8Mb5qOuBu/iZ3ByJn/UOGzDJYIl8nXxhCKzudZ8C2yq9hwtVKICzcEXphxtUbA1RutX1EiViFdPVIpCk0NPfzukzX8JaVoS2C4YUCnedpAUzD9if7N1wDYFaNdjuEOH1FznXPBO9unRU5dacVix6rqgFL5Lg5jdHdzra5GRZWdTFI9bL4UPbnOTK7rvt/963qM47F1vTf0KQR8F0pBb5kSsWZvg05bAGeYGi0TOQPRuddD1DZz5i1B71IPhEp23eLahqd5cBZAgMBAAECggEABE6YLXa7PNwG9Q0xTFU3zMpJX12MxT7C8DWbR2Gy7WM2ePv2M3lqLJlr7idvrEXcf8mH9dt6K7YbEsb09I+bF875n++4PzqrORpO8icchjmGpYJu8wieBQF3I6q6pO0YdCyVdyyGoa4Yis9KazFOZ8yRPwrNua1nczfn5TyhZTjkYec2zbWgU0XEk6DDj2NJO7Y9ut7o3+0xeVLE1WR5e324jS1DjHVafBGMnAaA7HBOIHmPp75OwXiFf6S6wwqTH4vMe+ivXq1RVo2M8Y28UvY3WNSkW5drEhDipz//fuMLowHLmTFYWzvq4pS3UjykSj6zWwDDf0HJRwipPtoAAQKBgQDJdBmhVfMLwkP9oHvzn5IZiCnunKymy3fZX5Wu6vjrn4wmDWuUoa53Hj3h2yTHZ4I/DQ29sMFd6M0+kC4aE60ecvD7o+eLRXqlJiuVUf9UijSB7BxznyAN0EGY1AcrNLLVQy/WMBxddMkOTyxAYi6CFwM2YCZNQbtI7gA8CLPpWQKBgQCx7MzhBHxgnda5oMR3Yuc2awZ6Fcka9vdRzU1UE6B5p4xbgKJcZIJgQsBaq0ZsYiSlAIoZX/dnL8eSMWK4ag6+ycCXo1AqNth1/Q+oS+IN9cuWFA0ofj49mJzkoM5oQVpgabzwnPVoj8pG9Y6BXLab1obdChwE64SvhtFz+l6vAQKBgFooPXg40QcIMAmIEzEazvXiPHHvaE1VbhO4dXLM8g3xX3WAOA9StJPW0vcLblBXgLDbFLU6L6/pikFfoWJGQAoKgtL7rZpkw9i5VnQDOHQLTih/FNSh+GR2OYU+Dt9FPGu5H+WJrogcxgZDZJiD2DCcP/HL4hhdPIYNDcnQU0QxAoGBAKhT8ZjIl6sIaMcBdB3GshvnsR77UWFzWJRJeOkcEGxHuSAwWGq0pCvRuw2MkHmleCmqkvxisDstFtAWbOEvZXfWg6ByXzsw3CT0H0YHVHwEmHEJ01EF7nhz06rw/5XejlQ8dQXmWL5tmt77HbEBN7nDgZ/JGq0E7GjrUWk56y4BAoGAKIA5F3e09oFPjfOVfq5cdfWPCVG0wYN//LNzx4REIUVyUCem423WB+TBMw7cQVHbHdYahO6Uqtlk0ONYG8CAxHVvEzJOXrqygf84DPNL06N/5ArH3czroG/mgX5f632xxlS5ppP31jLrSJjCl2sX17RuPRlyYpvbEkTDrlgPlqw=
-  merchantId: 888618050003300
-  trmNo: 97033623
-  publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjAOd+cQnDyUOW/Sdp249NRchu8y3NkoumXdM0ur1uasoJumMHm1qaht+7iRLpUYxequmhogha7e3/DG+ajrgbv4mdwciZ/1DhswyWCJfJ18YQis7nWfAtsqvYcLVSiAs3BF6YcbVGwNUbrV9RIlYhXT1SKQpNDT387pM1/CWlaEtguGFAp3naQFMw/Yn+zdcA2BWjXY7hDh9Rc51zwTvbp0VOXWnFYseq6oBS+S4OY3R3c62uRkWVnUxSPWy+FD25zkyu677f/et6jOOxdb039CkEfBdKQW+ZErFmb4NOWwBnmBotEzkD0bnXQ9Q2c+YtQe9SD4RKdt3i2oaneXAWQIDAQAB
-
-
----
-spring:
-  profiles: prodlt
-  datasource:
-      driver-class-name: com.mysql.jdbc.Driver
-      username: root
-      password: root
-      url: jdbc:mysql://172.26.239.151:3306/xyplatdb?characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false&rewriteBatchedStatements=true&autoReconnect=true
-      type: com.alibaba.druid.pool.DruidDataSource 
-      
-      initialSize: 5  
-      minIdle: 5  
-      maxActive: 20  
-      maxWait: 60000  
-      timeBetweenEvictionRunsMillis: 60000  
-      minEvictableIdleTimeMillis: 300000  
-      validationQuery: SELECT NOW()  
-      testWhileIdle: true  
-      testOnBorrow: true  
-      testOnReturn: false  
-      poolPreparedStatements: true  
-      maxPoolPreparedStatementPerConnectionSize: 20  
-      filters: stat,log4j  
-      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000  
-
-  #jpa
-  jpa: 
-      show-sql: true
-      open-in-view: true  
-      
-  zipkin:
-    enabled: false
-    baseUrl: http://192.168.0.94:8088/
-
-  sleuth:
-     sampler:
-       #  采样率
-       percentage: 0.1
-            
-#redis
-  redis:
-    database: 0
-    host: 172.26.239.150
-    password:  XY#123456@mm
-    port: 6379
-    pool:
-      min-idle: 1
-      max-idel: 8
-      max-active: 100
-      max-wait: 1    
-    timeout: 3000 
-    
-logging:
-    level:
-      root: WARN
-      com.xynet: DEBUG
-    file: logs/service-pay-third.log
-    
-#server 
-server:
-  port: 8115
-
-app:
-    fileHome: file/
-    tempFileHome: tmp/
-    xxwAppId: 202310201164921719597563904
-    xxwSK: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCu/W4vOOFFTEYMpVqSASQgqlKsxsgV6UnYf4OhskXXKWwwnZFKcqFh++aW9Aw73s1vZgoXKv/SVYEmrB48qJjZHZzVMg5BI6So8gs7JomwH7rNR9le1Xs3OVP5vML6jDVuCjd61/qyG++A3P+GviOCLny3qiytsVFBA9LfN+P9OoB7tW6FbRTlTRUNB0oKR+Hlg1wRKP+USuRUWzXQxZt0Ie0SmpDcnfAduUPurcODbrkqF5e4ic0mfXFhqPB6o9hUs0onjnc2P0W374rPUcWRxJJa5wT/6XFqYV5OSob6KSA9qBx/tefdvEfnrGFqtAQhPNv5N/uAwRxDMI4NDSWBAgMBAAECggEAHqkjFD0YI4dAwth6LRjsFpkhUUqnJkew+7EkBEHzQMbuQPpqyauaIUv81DhAqIDaaAlt/S84kccPkRIZXjGATpKEt0pE+x7erAd09lFDUMvOdEeBi79GDqAJ2bk8RKAqgHRj0i9jqq+AYIjYcOiB2j6A9cFogKqP/R9JZHkrhmPd34YxkvMvVy5GXsRXeWcruvyu+O1ai5GPUZw1FEPPEBP2ejvD6xX+8LQ6LKuoaTTByrdQpAk66/ykH8+p7aolCbLggFQvUDfqxTXShXZk0Z7mfhJsJnILcj0+k68L3xB19rhJL3NzIuA/8X2Ipo7u1eA6X17hKBhtUUnnmTP7QQKBgQDysl+WGj02pvylAeKKJlFsTXIC5IYbd91uUCmVTVDjGhcyfKKAIfJYxOp9V5dCMz/zG+m+V4EZdDTLNJrnkemGgB5QSN5+5MbRqch3LvX92WoTXs3YBWrxy+kfIZQCdvbIR4kIKXNVpNSqy1EdBlTAwCMJLKh0v/JZC54rGD3ZOQKBgQC4lPc0tkFzlOPD6XbJFMtLp+Mcogz0XW8c/kvrGR3sRs1AnKbYdn9nfR7hUqCXXWYyNuhUO4QwOZKM+VDJz2w1bnpluQpEmUYXgsIok4Tn7zPbuknzG05pw8YwqbkL96FBN7oAWGLW7LIihdcbMOerm3FBGHcrdeMsrFeIipEWiQKBgC87/hSFqNJBL7yhoEiI6qHsdLsRZPRloMf+fAld0ddRVaBy12Geub8DHCwm5v5wYQrcrOJpv2uHzVqbM2bMZCnUN5IijIMf3X4i0Cw6DJBKRzXb5q4bZ9QFfqqba2YLZz5Vhdr7zkGl4eoXxgKjH82f13HKqkKGtREVjMQQZMEpAoGATlhkSQpm45E5z8kDczwRQg6Dln6t8vbJl8vUG3iwu74dlqQnKU+6qglwlwEEStsI6p1lpYMRi4qUSqP0B4S0EEXRS+Xrlsxb9NS6ZpCe4/ci0svSYY6gjMHdGIChm5PC7TSjDUx2v3T98ytN7yul2bADtTaWNms2Ppr0GG+AP8kCgYEA3/y+q801/glLvib8+HR36OUs+9l+E/oyyTjVqB1A/d/LRgE5gGqRw6G1Jy2ZxxJ7zcG0TBvjv65B1Iwt45uNb8Uhw6r6PTHlZUE+F8/Hjzmh3Nk5YVoTQj4PqiSLaxhPao0Dkyrmoxmx9DN097A2AMk1FAvbLE+y9dsu78hH3XI=
-
-eureka:
-  client:
-    service-url.defaultZone: http://eureka:eureka_xyplat@172.26.239.151:8761/eureka
-    registry-fetch-interval-seconds: 5 # 默认为30秒
-    enabled: true  
-    registerWithEureka: true
-    fetchRegistry: true  
-    healthcheck.enabled: true
-    
-  instance:
-    lease-renewal-interval-in-seconds: 5
-    lease-expiration-duration-in-seconds: 5
-    prefer-ip-address: true    
-    instance-id: ${spring.cloud.client.ipAddress}:${server.port}  
-    
-

+ 0 - 15
src/main/resources/environment.properties

@@ -1,15 +0,0 @@
-#0 表示测试环境 1 表示正式环境 2 表示本机环境
-env=1
-socketTimeOut=5000
-connectTimeOut=3000
-connectRequestTimeOut=3000
-# http client连接池参数
-maxTotal=20
-defaultMaxPerRoute=20
-maxPerRoute=20
-# OAuth认证token本地缓存文件路径 如调用时使用token为入参则不需要配置
-tokenFilePath=C:\\openapi
-# 认证方式:1-表示使用sig认证方式 2-表示使用OAuth认证方式
-isSig=1
-#sdk自动升级版本号
-sdkVersion = 1.0.14-SNAPSHOT

+ 0 - 80
src/main/resources/logback-spring.xml

@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Configuration status="warn">
-    <property name="logback.logDir" value="logs/"/>
-
-    <!--输出到控制台 ConsoleAppender-->
-    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-        <!--展示格式 layout-->
-        <encoder>
-            <charset>UTF-8</charset>
-            <pattern>%d [%t] %-5level %logger{36}.%M\(%file:%line\) - %msg%n</pattern>
-        </encoder>
-    </appender>
-
-    <appender name="infoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!--如果只是想要 Info 级别的日志,只是过滤 info 还是会输出 Error 日志,因为 Error 的级别高,
-            所以我们使用下面的策略,可以避免输出 Error 的日志-->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <!--过滤 Error
-            <level>ERROR</level>
-            <onMatch>DENY</onMatch>-->
-            <!--没有匹配到就允许-->
-            <onMismatch>ACCEPT</onMismatch>
-        </filter>
-        <File>${logback.logDir}/service-pay-third.log</File>
-        <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
-        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
-            <FileNamePattern>${logback.logDir}/info.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
-            <!-- 单个日志文件最多 50MB -->
-            <maxFileSize>10MB</maxFileSize>
-            <!--只保留最近10天的日志-->
-            <maxHistory>30</maxHistory>
-            <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
-            <totalSizeCap>1GB</totalSizeCap>
-        </rollingPolicy>
-        <!--日志输出编码格式化-->
-        <encoder>
-            <charset>UTF-8</charset>
-            <pattern>%d [%t] %-5level %logger{36}.%M\(%file:%line\) - %msg%n</pattern>
-        </encoder>
-    </appender>
-
-    <appender name="errorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!--如果只是想要 Error 级别的日志,那么需要过滤一下,默认是 info 级别的,ThresholdFilter-->
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>ERROR</level>
-        </filter>
-        <!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则
-            如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天
-            的日志改名为今天的日期。即,<File> 的日志都是当天的。
-        -->
-        <File>${logback.logDir}/error.log</File>
-        <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
-        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
-            <FileNamePattern>${logback.logDir}/error.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
-            <!-- 单个日志文件最多 100MB -->
-            <maxFileSize>20MB</maxFileSize>
-            <!--只保留最近30天的日志-->
-            <maxHistory>10</maxHistory>
-            <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
-            <!--<totalSizeCap>1GB</totalSizeCap>-->
-        </rollingPolicy>
-        <!--日志输出编码格式化-->
-        <encoder>
-            <charset>UTF-8</charset>
-            <pattern>%d [%t] %-5level %logger{36}.%M\(%file:%line\) - %msg%n</pattern>
-        </encoder>
-    </appender>
-
-    <root level="info">
-        <appender-ref ref="console"/>
-        <appender-ref ref="infoLog"/>
-        <appender-ref ref="errorLog"/>        
-    </root>
-    
-    <logger name="com.cow" level="info" additivity="false">
-        <appender-ref ref="infoLog"/>
-    </logger>
-</Configuration>

+ 0 - 30
src/main/resources/mybatis/mybatis-config.xml

@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
-        <configuration>    
-        <!-- 全局参数 -->    
-        <settings>        
-                <!-- 使全局的映射器启用或禁用缓存。 -->        
-                <setting name="cacheEnabled" value="true"/>        
-                <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->        
-                <setting name="lazyLoadingEnabled" value="true"/>        
-                <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->        
-                <setting name="aggressiveLazyLoading" value="true"/>        
-                <!-- 是否允许单条sql 返回多个数据集  (取决于驱动的兼容性) default:true -->        
-                <setting name="multipleResultSetsEnabled" value="true"/>        
-                <!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->        
-                <setting name="useColumnLabel" value="true"/>        
-                <!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。  default:false  -->        
-                <setting name="useGeneratedKeys" value="true"/>        
-                <!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分  FULL:全部  -->        
-                <setting name="autoMappingBehavior" value="PARTIAL"/>        
-                <!-- 这是默认的执行类型  (SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新)  -->        
-                <setting name="defaultExecutorType" value="SIMPLE"/>        
-                <!-- 使用驼峰命名法转换字段。 -->        
-                <setting name="mapUnderscoreToCamelCase" value="true"/>        
-                <!-- 设置本地缓存范围 session:就会有数据的共享  statement:语句范围 (这样就不会有数据的共享 ) defalut:session -->        
-                <setting name="localCacheScope" value="SESSION"/>        
-                <!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型 -->        
-                <setting name="jdbcTypeForNull" value="NULL"/>    
-                <setting name="logImpl" value="STDOUT_LOGGING" /> 
-         </settings>    
-
-</configuration>