parent
59a41de04e
commit
5b04c4fbc9
@ -0,0 +1,25 @@ |
||||
/target/ |
||||
!.mvn/wrapper/maven-wrapper.jar |
||||
|
||||
### STS ### |
||||
.apt_generated |
||||
.classpath |
||||
.factorypath |
||||
.project |
||||
.settings |
||||
.springBeans |
||||
.sts4-cache |
||||
|
||||
### IntelliJ IDEA ### |
||||
.idea |
||||
*.iws |
||||
*.iml |
||||
*.ipr |
||||
|
||||
### NetBeans ### |
||||
/nbproject/private/ |
||||
/nbbuild/ |
||||
/dist/ |
||||
/nbdist/ |
||||
/.nb-gradle/ |
||||
/build/ |
@ -0,0 +1,164 @@ |
||||
<?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/maven-v4_0_0.xsd"> |
||||
<modelVersion>4.0.0</modelVersion> |
||||
<groupId>com.gitee.sop</groupId> |
||||
<artifactId>sop-springmvc</artifactId> |
||||
<name>sop-springmvc</name> |
||||
<packaging>war</packaging> |
||||
<version>1.0.0-SNAPSHOT</version> |
||||
|
||||
<properties> |
||||
<java-version>1.8</java-version> |
||||
<org.springframework-version>5.0.7.RELEASE</org.springframework-version> |
||||
<org.aspectj-version>1.6.10</org.aspectj-version> |
||||
<org.slf4j-version>1.6.6</org.slf4j-version> |
||||
</properties> |
||||
|
||||
<dependencies> |
||||
<!-- sop接入依赖 --> |
||||
<dependency> |
||||
<groupId>com.gitee.sop</groupId> |
||||
<artifactId>sop-service-common</artifactId> |
||||
<version>1.2.0-SNAPSHOT</version> |
||||
</dependency> |
||||
<!-- eureka 服务发现 --> |
||||
<dependency> |
||||
<groupId>com.netflix.eureka</groupId> |
||||
<artifactId>eureka-client</artifactId> |
||||
<version>1.7.0</version> |
||||
</dependency> |
||||
|
||||
<!-- sop接入依赖 end --> |
||||
|
||||
<!-- Spring --> |
||||
<dependency> |
||||
<groupId>org.springframework</groupId> |
||||
<artifactId>spring-context</artifactId> |
||||
<version>${org.springframework-version}</version> |
||||
</dependency> |
||||
<dependency> |
||||
<groupId>org.springframework</groupId> |
||||
<artifactId>spring-webmvc</artifactId> |
||||
<version>${org.springframework-version}</version> |
||||
</dependency> |
||||
|
||||
<!-- jackson --> |
||||
<dependency> |
||||
<groupId>com.fasterxml.jackson.core</groupId> |
||||
<artifactId>jackson-core</artifactId> |
||||
<version>2.9.6</version> |
||||
</dependency> |
||||
<dependency> |
||||
<groupId>com.fasterxml.jackson.core</groupId> |
||||
<artifactId>jackson-databind</artifactId> |
||||
<version>2.9.6</version> |
||||
</dependency> |
||||
<dependency> |
||||
<groupId>com.fasterxml.jackson.core</groupId> |
||||
<artifactId>jackson-annotations</artifactId> |
||||
<version>2.9.6</version> |
||||
</dependency> |
||||
|
||||
<!-- AspectJ --> |
||||
<dependency> |
||||
<groupId>org.aspectj</groupId> |
||||
<artifactId>aspectjrt</artifactId> |
||||
<version>${org.aspectj-version}</version> |
||||
</dependency> |
||||
|
||||
<!-- Logging --> |
||||
<dependency> |
||||
<groupId>org.slf4j</groupId> |
||||
<artifactId>slf4j-api</artifactId> |
||||
<version>${org.slf4j-version}</version> |
||||
</dependency> |
||||
<dependency> |
||||
<groupId>org.slf4j</groupId> |
||||
<artifactId>jcl-over-slf4j</artifactId> |
||||
<version>${org.slf4j-version}</version> |
||||
<scope>runtime</scope> |
||||
</dependency> |
||||
<dependency> |
||||
<groupId>org.slf4j</groupId> |
||||
<artifactId>slf4j-log4j12</artifactId> |
||||
<version>${org.slf4j-version}</version> |
||||
<scope>runtime</scope> |
||||
</dependency> |
||||
<dependency> |
||||
<groupId>log4j</groupId> |
||||
<artifactId>log4j</artifactId> |
||||
<version>1.2.17</version> |
||||
</dependency> |
||||
|
||||
|
||||
<!-- @Inject --> |
||||
<dependency> |
||||
<groupId>javax.inject</groupId> |
||||
<artifactId>javax.inject</artifactId> |
||||
<version>1</version> |
||||
</dependency> |
||||
|
||||
<!-- Servlet --> |
||||
<dependency> |
||||
<groupId>javax.servlet</groupId> |
||||
<artifactId>servlet-api</artifactId> |
||||
<version>2.5</version> |
||||
<scope>provided</scope> |
||||
</dependency> |
||||
<dependency> |
||||
<groupId>javax.servlet.jsp</groupId> |
||||
<artifactId>jsp-api</artifactId> |
||||
<version>2.1</version> |
||||
<scope>provided</scope> |
||||
</dependency> |
||||
<dependency> |
||||
<groupId>javax.servlet</groupId> |
||||
<artifactId>jstl</artifactId> |
||||
<version>1.2</version> |
||||
</dependency> |
||||
|
||||
<!-- Test --> |
||||
<dependency> |
||||
<groupId>junit</groupId> |
||||
<artifactId>junit</artifactId> |
||||
<version>4.8</version> |
||||
<scope>test</scope> |
||||
</dependency> |
||||
<dependency> |
||||
<groupId>org.springframework</groupId> |
||||
<artifactId>spring-tx</artifactId> |
||||
<version>5.1.5.RELEASE</version> |
||||
<scope>compile</scope> |
||||
</dependency> |
||||
<dependency> |
||||
<groupId>org.projectlombok</groupId> |
||||
<artifactId>lombok</artifactId> |
||||
<version>1.18.4</version> |
||||
<scope>provided</scope> |
||||
</dependency> |
||||
</dependencies> |
||||
<build> |
||||
<plugins> |
||||
<!-- 打包时跳过测试 --> |
||||
<plugin> |
||||
<groupId>org.apache.maven.plugins</groupId> |
||||
<artifactId>maven-surefire-plugin</artifactId> |
||||
<version>2.18.1</version> |
||||
<configuration> |
||||
<skipTests>true</skipTests> |
||||
</configuration> |
||||
</plugin> |
||||
|
||||
<plugin> |
||||
<groupId>org.apache.maven.plugins</groupId> |
||||
<artifactId>maven-compiler-plugin</artifactId> |
||||
<configuration> |
||||
<source>${java-version}</source> |
||||
<target>${java-version}</target> |
||||
<encoding>UTF-8</encoding> |
||||
</configuration> |
||||
</plugin> |
||||
</plugins> |
||||
</build> |
||||
</project> |
@ -0,0 +1,54 @@ |
||||
package com.gitee.app; |
||||
|
||||
import com.gitee.app.model.Goods; |
||||
import com.gitee.sop.servercommon.annotation.ApiMapping; |
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
import org.springframework.stereotype.Controller; |
||||
import org.springframework.ui.Model; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.RequestMethod; |
||||
import org.springframework.web.bind.annotation.ResponseBody; |
||||
|
||||
import java.math.BigDecimal; |
||||
import java.text.DateFormat; |
||||
import java.util.Date; |
||||
import java.util.Locale; |
||||
|
||||
/** |
||||
* Handles requests for the application home page. |
||||
*/ |
||||
@Controller |
||||
public class HomeController { |
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(HomeController.class); |
||||
|
||||
/** |
||||
* Simply selects the home view to render by returning its name. |
||||
*/ |
||||
@RequestMapping(value = "/", method = RequestMethod.GET) |
||||
public String home(Locale locale, Model model) { |
||||
logger.info("Welcome home! The client locale is {}.", locale); |
||||
|
||||
Date date = new Date(); |
||||
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); |
||||
|
||||
String formattedDate = dateFormat.format(date); |
||||
|
||||
model.addAttribute("serverTime", formattedDate ); |
||||
|
||||
return "home"; |
||||
} |
||||
|
||||
|
||||
@ApiMapping(value = "springmvc.goods.get") |
||||
@ResponseBody |
||||
public Goods getGoods(Goods param) { |
||||
Goods goods = new Goods(); |
||||
goods.setId(1L); |
||||
goods.setGoods_name(param.getGoods_name() + " 1"); |
||||
goods.setPrice(new BigDecimal(5000)); |
||||
return goods; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,61 @@ |
||||
package com.gitee.app.config; |
||||
|
||||
import com.netflix.appinfo.ApplicationInfoManager; |
||||
import com.netflix.appinfo.InstanceInfo; |
||||
import com.netflix.appinfo.MyDataCenterInstanceConfig; |
||||
import com.netflix.discovery.DefaultEurekaClientConfig; |
||||
import com.netflix.discovery.DiscoveryManager; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.context.annotation.PropertySource; |
||||
|
||||
import javax.servlet.ServletContextEvent; |
||||
import javax.servlet.ServletContextListener; |
||||
import java.net.InetAddress; |
||||
import java.net.UnknownHostException; |
||||
|
||||
/** |
||||
* 初始化Eureka Client |
||||
* @author thc |
||||
*/ |
||||
@Slf4j |
||||
public class EurekaInitAndRegisterListener implements ServletContextListener { |
||||
|
||||
@Override |
||||
public void contextInitialized(ServletContextEvent sce) { |
||||
// 初始化Eureka Client
|
||||
log.info("Eureka初始化完成,正在注册Eureka Server"); |
||||
DiscoveryManager.getInstance().initComponent(new MyInstanceConfig(), new DefaultEurekaClientConfig()); |
||||
ApplicationInfoManager.getInstance().setInstanceStatus(InstanceInfo.InstanceStatus.UP); |
||||
} |
||||
|
||||
/** |
||||
* * Notification that the servlet context is about to be shut down. |
||||
* * All servlets and filters have been destroy()ed before any |
||||
* * ServletContextListeners are notified of context |
||||
* * destruction. |
||||
* |
||||
* @param sce |
||||
*/ |
||||
@Override |
||||
public void contextDestroyed(ServletContextEvent sce) { |
||||
DiscoveryManager.getInstance().shutdownComponent(); |
||||
} |
||||
|
||||
@Configuration |
||||
@PropertySource(value = "classpath:eureka-client.properties") |
||||
public static class AppConfig { |
||||
|
||||
} |
||||
|
||||
public static class MyInstanceConfig extends MyDataCenterInstanceConfig { |
||||
@Override |
||||
public String getHostName(boolean refresh) { |
||||
try { |
||||
return InetAddress.getLocalHost().getHostAddress(); |
||||
} catch (UnknownHostException e) { |
||||
return super.getHostName(refresh); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,20 @@ |
||||
package com.gitee.app.config; |
||||
|
||||
import com.gitee.sop.servercommon.configuration.AlipayServiceConfiguration; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; |
||||
|
||||
/** |
||||
* 使用支付宝开放平台功能 |
||||
* |
||||
* @author tanghc |
||||
*/ |
||||
public class OpenServiceConfig extends AlipayServiceConfiguration { |
||||
|
||||
@Bean |
||||
@Override |
||||
public RequestMappingHandlerMapping requestMappingHandlerMapping() { |
||||
return super.requestMappingHandlerMapping(); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,17 @@ |
||||
package com.gitee.app.model; |
||||
|
||||
|
||||
import lombok.Data; |
||||
|
||||
import javax.validation.constraints.NotBlank; |
||||
import java.math.BigDecimal; |
||||
|
||||
@Data |
||||
public class Goods { |
||||
|
||||
private Long id; |
||||
@NotBlank(message = "goods_name不能为空") |
||||
private String goods_name; |
||||
private BigDecimal price; |
||||
|
||||
} |
@ -0,0 +1,27 @@ |
||||
# tomcat端口,根据实际情况填 |
||||
server.port=2223 |
||||
# 应用名称serviceId,根据实际情况填 |
||||
spring.application.name=sop-springmvc |
||||
# 注册中心地址,根据实际情况填 |
||||
eureka.url=http://localhost:1111/eureka/ |
||||
# zookeeper地址,根据实际情况填 |
||||
spring.cloud.zookeeper.connect-string=localhost:2181 |
||||
|
||||
# ----------- 以下内容不用改 ----------- |
||||
|
||||
# 控制是否注册自身到eureka中,本项目虽然不对外提供服务,但需要Eureka监控,在Eureka列表上显示 |
||||
eureka.registration.enabled=true |
||||
# eureka相关配置 |
||||
# 默认为true,以实现更好的基于区域的负载平衡。 |
||||
eureka.preferSameZone=true |
||||
# 是否要使用基于DNS的查找来确定其他eureka服务器 |
||||
eureka.shouldUseDns=false |
||||
# 由于shouldUseDns为false,因此我们使用以下属性来明确指定到eureka服务器的路由(eureka Server地址) |
||||
eureka.serviceUrl.default=${eureka.url} |
||||
eureka.decoderName=JacksonJson |
||||
# 客户识别此服务的虚拟主机名,这里指的是eureka服务本身 |
||||
eureka.vipAddress=${spring.application.name} |
||||
#服务指定应用名,这里指的是eureka服务本身 |
||||
eureka.name=${spring.application.name} |
||||
#服务将被识别并将提供请求的端口 |
||||
eureka.port=${server.port} |
@ -0,0 +1,41 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> |
||||
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> |
||||
|
||||
<!-- Appenders --> |
||||
<appender name="console" class="org.apache.log4j.ConsoleAppender"> |
||||
<param name="Target" value="System.out" /> |
||||
<layout class="org.apache.log4j.PatternLayout"> |
||||
<param name="ConversionPattern" value="%-5p: %c - %m%n" /> |
||||
</layout> |
||||
</appender> |
||||
|
||||
<!-- Application Loggers --> |
||||
<logger name="com.gitee"> |
||||
<level value="debug" /> |
||||
</logger> |
||||
|
||||
<!-- 3rdparty Loggers --> |
||||
<logger name="org.springframework.core"> |
||||
<level value="info" /> |
||||
</logger> |
||||
|
||||
<logger name="org.springframework.beans"> |
||||
<level value="info" /> |
||||
</logger> |
||||
|
||||
<logger name="org.springframework.context"> |
||||
<level value="info" /> |
||||
</logger> |
||||
|
||||
<logger name="org.springframework.web"> |
||||
<level value="info" /> |
||||
</logger> |
||||
|
||||
<!-- Root Logger --> |
||||
<root> |
||||
<priority value="warn" /> |
||||
<appender-ref ref="console" /> |
||||
</root> |
||||
|
||||
</log4j:configuration> |
@ -0,0 +1,39 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<beans xmlns="http://www.springframework.org/schema/beans" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xmlns:context="http://www.springframework.org/schema/context" |
||||
xmlns:mvc="http://www.springframework.org/schema/mvc" |
||||
xmlns:aop="http://www.springframework.org/schema/aop" |
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans |
||||
http://www.springframework.org/schema/beans/spring-beans.xsd |
||||
http://www.springframework.org/schema/context |
||||
http://www.springframework.org/schema/context/spring-context.xsd |
||||
http://www.springframework.org/schema/mvc |
||||
http://www.springframework.org/schema/mvc/spring-mvc.xsd |
||||
http://www.springframework.org/schema/aop |
||||
http://www.springframework.org/schema/aop/spring-aop.xsd"> |
||||
|
||||
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> |
||||
|
||||
<!-- 只扫描Controller类 --> |
||||
<context:component-scan base-package="com.gitee.app" use-default-filters="false"> |
||||
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> |
||||
</context:component-scan> |
||||
|
||||
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --> |
||||
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> |
||||
<property name="prefix" value="/WEB-INF/views/" /> |
||||
<property name="suffix" value=".jsp" /> |
||||
</bean> |
||||
|
||||
<!-- 接入SOP配置 --> |
||||
<mvc:annotation-driven> |
||||
<mvc:argument-resolvers> |
||||
<bean class="com.gitee.sop.servercommon.param.ApiArgumentResolver"/> |
||||
</mvc:argument-resolvers> |
||||
</mvc:annotation-driven> |
||||
|
||||
<bean class="com.gitee.app.config.OpenServiceConfig"/> |
||||
<!-- 接入SOP配置 end --> |
||||
|
||||
</beans> |
@ -0,0 +1,22 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<beans xmlns="http://www.springframework.org/schema/beans" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xmlns:context="http://www.springframework.org/schema/context" |
||||
xmlns:mvc="http://www.springframework.org/schema/mvc" |
||||
xmlns:aop="http://www.springframework.org/schema/aop" |
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans |
||||
http://www.springframework.org/schema/beans/spring-beans.xsd |
||||
http://www.springframework.org/schema/context |
||||
http://www.springframework.org/schema/context/spring-context.xsd |
||||
http://www.springframework.org/schema/mvc |
||||
http://www.springframework.org/schema/mvc/spring-mvc.xsd |
||||
http://www.springframework.org/schema/aop |
||||
http://www.springframework.org/schema/aop/spring-aop.xsd"> |
||||
|
||||
<!-- Root Context: defines shared resources visible to all other web components --> |
||||
<!-- 排除Controller类 --> |
||||
<context:component-scan base-package="com.gitee.app"> |
||||
<context:exclude-filter expression="org.springframework.stereotype.Controller" |
||||
type="annotation" /> |
||||
</context:component-scan> |
||||
</beans> |
@ -0,0 +1,15 @@ |
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> |
||||
<%@ page session="false" pageEncoding="utf-8" %> |
||||
<html> |
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
||||
<head> |
||||
<title>Home</title> |
||||
</head> |
||||
<body> |
||||
<h1> |
||||
Hello world! |
||||
</h1> |
||||
|
||||
<P> The time on the server is ${serverTime}. </P> |
||||
</body> |
||||
</html> |
@ -0,0 +1,37 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> |
||||
|
||||
<!-- The definition of the Root Spring Container shared by all Servlets and Filters --> |
||||
<context-param> |
||||
<param-name>contextConfigLocation</param-name> |
||||
<param-value>/WEB-INF/spring/root-context.xml</param-value> |
||||
</context-param> |
||||
|
||||
<!-- Creates the Spring Container shared by all Servlets and Filters --> |
||||
<listener> |
||||
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> |
||||
</listener> |
||||
|
||||
<listener> |
||||
<listener-class>com.gitee.app.config.EurekaInitAndRegisterListener</listener-class> |
||||
</listener> |
||||
|
||||
<!-- Processes application requests --> |
||||
<servlet> |
||||
<servlet-name>appServlet</servlet-name> |
||||
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> |
||||
<init-param> |
||||
<param-name>contextConfigLocation</param-name> |
||||
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> |
||||
</init-param> |
||||
<load-on-startup>1</load-on-startup> |
||||
</servlet> |
||||
|
||||
<servlet-mapping> |
||||
<servlet-name>appServlet</servlet-name> |
||||
<url-pattern>/</url-pattern> |
||||
</servlet-mapping> |
||||
|
||||
</web-app> |
@ -0,0 +1,41 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> |
||||
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> |
||||
|
||||
<!-- Appenders --> |
||||
<appender name="console" class="org.apache.log4j.ConsoleAppender"> |
||||
<param name="Target" value="System.out" /> |
||||
<layout class="org.apache.log4j.PatternLayout"> |
||||
<param name="ConversionPattern" value="%-5p: %c - %m%n" /> |
||||
</layout> |
||||
</appender> |
||||
|
||||
<!-- Application Loggers --> |
||||
<logger name="com.gitee.app"> |
||||
<level value="info" /> |
||||
</logger> |
||||
|
||||
<!-- 3rdparty Loggers --> |
||||
<logger name="org.springframework.core"> |
||||
<level value="info" /> |
||||
</logger> |
||||
|
||||
<logger name="org.springframework.beans"> |
||||
<level value="info" /> |
||||
</logger> |
||||
|
||||
<logger name="org.springframework.context"> |
||||
<level value="info" /> |
||||
</logger> |
||||
|
||||
<logger name="org.springframework.web"> |
||||
<level value="info" /> |
||||
</logger> |
||||
|
||||
<!-- Root Logger --> |
||||
<root> |
||||
<priority value="info" /> |
||||
<appender-ref ref="console" /> |
||||
</root> |
||||
|
||||
</log4j:configuration> |
@ -0,0 +1,57 @@ |
||||
package com.gitee.sop; |
||||
|
||||
import com.alibaba.fastjson.JSON; |
||||
import com.gitee.sop.alipay.AlipaySignature; |
||||
import org.junit.Test; |
||||
|
||||
import java.text.SimpleDateFormat; |
||||
import java.util.Date; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* 模仿支付宝客户端请求接口 |
||||
*/ |
||||
public class SpringmvcDemoPostTest extends TestBase { |
||||
|
||||
String url = "http://localhost:8081/api"; // zuul
|
||||
String appId = "2019032617262200001"; |
||||
// 支付宝私钥
|
||||
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXJv1pQFqWNA/++OYEV7WYXwexZK/J8LY1OWlP9X0T6wHFOvxNKRvMkJ5544SbgsJpVcvRDPrcxmhPbi/sAhdO4x2PiPKIz9Yni2OtYCCeaiE056B+e1O2jXoLeXbfi9fPivJZkxH/tb4xfLkH3bA8ZAQnQsoXA0SguykMRZntF0TndUfvDrLqwhlR8r5iRdZLB6F8o8qXH6UPDfNEnf/K8wX5T4EB1b8x8QJ7Ua4GcIUqeUxGHdQpzNbJdaQvoi06lgccmL+PHzminkFYON7alj1CjDN833j7QMHdPtS9l7B67fOU/p2LAAkPMtoVBfxQt9aFj7B8rEhGCz02iJIBAgMBAAECggEARqOuIpY0v6WtJBfmR3lGIOOokLrhfJrGTLF8CiZMQha+SRJ7/wOLPlsH9SbjPlopyViTXCuYwbzn2tdABigkBHYXxpDV6CJZjzmRZ+FY3S/0POlTFElGojYUJ3CooWiVfyUMhdg5vSuOq0oCny53woFrf32zPHYGiKdvU5Djku1onbDU0Lw8w+5tguuEZ76kZ/lUcccGy5978FFmYpzY/65RHCpvLiLqYyWTtaNT1aQ/9pw4jX9HO9NfdJ9gYFK8r/2f36ZE4hxluAfeOXQfRC/WhPmiw/ReUhxPznG/WgKaa/OaRtAx3inbQ+JuCND7uuKeRe4osP2jLPHPP6AUwQKBgQDUNu3BkLoKaimjGOjCTAwtp71g1oo+k5/uEInAo7lyEwpV0EuUMwLA/HCqUgR4K9pyYV+Oyb8d6f0+Hz0BMD92I2pqlXrD7xV2WzDvyXM3s63NvorRooKcyfd9i6ccMjAyTR2qfLkxv0hlbBbsPHz4BbU63xhTJp3Ghi0/ey/1HQKBgQC2VsgqC6ykfSidZUNLmQZe3J0p/Qf9VLkfrQ+xaHapOs6AzDU2H2osuysqXTLJHsGfrwVaTs00ER2z8ljTJPBUtNtOLrwNRlvgdnzyVAKHfOgDBGwJgiwpeE9voB1oAV/mXqSaUWNnuwlOIhvQEBwekqNyWvhLqC7nCAIhj3yvNQKBgQCqYbeec56LAhWP903Zwcj9VvG7sESqXUhIkUqoOkuIBTWFFIm54QLTA1tJxDQGb98heoCIWf5x/A3xNI98RsqNBX5JON6qNWjb7/dobitti3t99v/ptDp9u8JTMC7penoryLKK0Ty3bkan95Kn9SC42YxaSghzqkt+uvfVQgiNGQKBgGxU6P2aDAt6VNwWosHSe+d2WWXt8IZBhO9d6dn0f7ORvcjmCqNKTNGgrkewMZEuVcliueJquR47IROdY8qmwqcBAN7Vg2K7r7CPlTKAWTRYMJxCT1Hi5gwJb+CZF3+IeYqsJk2NF2s0w5WJTE70k1BSvQsfIzAIDz2yE1oPHvwVAoGAA6e+xQkVH4fMEph55RJIZ5goI4Y76BSvt2N5OKZKd4HtaV+eIhM3SDsVYRLIm9ZquJHMiZQGyUGnsvrKL6AAVNK7eQZCRDk9KQz+0GKOGqku0nOZjUbAu6A2/vtXAaAuFSFx1rUQVVjFulLexkXR3KcztL1Qu2k5pB6Si0K/uwQ="; |
||||
|
||||
|
||||
@Test |
||||
public void testPost() throws Exception { |
||||
|
||||
// 公共请求参数
|
||||
Map<String, String> params = new HashMap<String, String>(); |
||||
params.put("app_id", appId); |
||||
params.put("method", "springmvc.goods.get"); |
||||
params.put("format", "json"); |
||||
params.put("charset", "utf-8"); |
||||
params.put("sign_type", "RSA2"); |
||||
params.put("timestamp", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
||||
params.put("version", "1.0"); |
||||
|
||||
// 业务参数
|
||||
Map<String, String> bizContent = new HashMap<>(); |
||||
bizContent.put("goods_name", "iphone6"); |
||||
|
||||
params.put("biz_content", JSON.toJSONString(bizContent)); |
||||
|
||||
System.out.println("----------- 请求信息 -----------"); |
||||
System.out.println("请求参数:" + buildParamQuery(params)); |
||||
System.out.println("商户秘钥:" + privateKey); |
||||
String content = AlipaySignature.getSignContent(params); |
||||
System.out.println("待签名内容:" + content); |
||||
String sign = AlipaySignature.rsa256Sign(content, privateKey, "utf-8"); |
||||
System.out.println("签名(sign):" + sign); |
||||
|
||||
params.put("sign", sign); |
||||
|
||||
System.out.println("----------- 返回结果 -----------"); |
||||
String responseData = post(url, params);// 发送请求
|
||||
System.out.println(responseData); |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue