1、電商網站+支付平臺的支付過程html
經過RestTemplate模板對象發送http請求並接收返回結果。java
支付架構:web
支付過程:spring
pom.xmlapache
<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>SSM</groupId> <artifactId>SSM</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.0.0</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> <version>2.1.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.1.9.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.1.9.RELEASE</version> </dependency> <!-- 對json數據的支持jar --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.10</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.10</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.8.10</version> </dependency> <!-- 簽名加密依賴 --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.11</version> </dependency> <!-- springmvc對xml數據封裝的支持 --> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>org.codehaus.woodstox</groupId> <artifactId>woodstox-core-asl</artifactId> <version>4.4.1</version> </dependency> <!-- spring密碼安全機制 --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>4.2.0.RELEASE</version> </dependency> </dependencies> </project>
submit.jspjson
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html> <html> <head> <base href="<%=basePath%>"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="wenxinpay" method="post"> <p>訂單詳情</p> <p>蘋果X一臺,總金額:8888.88</p> <p>選擇支付方式:微信支付,支付寶支付</p> <input type="submit" value="支付"> </form> </body> </html>
OrderController.javaapi
package com.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.client.RestTemplate; import com.pojo.OrderInfo; import com.pojo.ResultBean; @Controller public class OrderController { @Autowired RestTemplate rest;//spring發送請求並接受相應對象的模板對象,須要配置一個bean對象 public void setRest(RestTemplate rest) { this.rest = rest; } //商戶下單 @RequestMapping(value="/wenxinpay",method=RequestMethod.POST) public String weinxinPay(){ //拿到頁面的訂單數據 //封裝好數據,發送到平臺的下單api OrderInfo order = new OrderInfo("010101","iphoneX256G全網通5.1金色一臺","9895729387239","888888","233.54.23.11","http://localhost:8888/SSM/reback","iyuddgsdhksa","328y4h32jhi7yf348"); ResultBean rb = rest.postForObject("http://localhost:8888/SSM/testrest", order,ResultBean.class); System.out.println("商戶拿到平臺的返回信息:"); System.out.println(rb.toString()); return "redirect:"+rb.getPayUrl(); } //平臺方拿到訂單,而且返回結果 @RequestMapping(value="/testrest",method=RequestMethod.POST) public @ResponseBody ResultBean testRest(@RequestBody OrderInfo order){ System.out.println("平臺從商戶拿到的訂單信息:"); System.out.println(order.toString()); ResultBean rb = new ResultBean("SUCCESS", "成功", "wx731j3uy8u12u8y3", "213892173987", "http://www.baidu.com?id=1123213", "asdu2323g4jygsd", "hdsgjg12323"); return rb; } }
spring-mvc.xmlspring-mvc
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">