1、订单创建、支付及订单处理流程图
2、创建HTTP客户端工具类
@Slf4j
public class HttpclientUtil {//类中定义了一个私有静态成员变量instance,并且将其初始化为HttpclientUtil类的一个实例,用于实现单例模式。private static HttpclientUtil instance = new HttpclientUtil();//定义了一个公共静态方法getInstance(),用于获取HttpclientUtil类的实例,因为构造函数是私有的,所以只能通过该静态方法获取类的实例public static HttpclientUtil getInstance() {return instance;}//定义了一个名为payGet的公共方法,用于发送HTTP GET请求,并接收一个字符串参数uri,表示要请求的目标资源的URIpublic PayResp payGet(String uri) {//首先创建了一个CloseableHttpClient对象httpClient,并利用HttpClientBuilder类的create()方法来构建一个默认的CloseableHttpClient实例//获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)CloseableHttpClient httpClient = HttpClientBuilder.create().build();log.debug("远程连接:{uri}", uri);//创建了一个HttpGet对象httpGet,并传入目标资源的URIHttpGet httpGet = new HttpGet(uri);//定义了一个PayResp类型的变量r,用于存储HTTP响应的结果PayResp r = null;//响应//创建了一个CloseableHttpResponse对象response,并尝试执行HTTP GET请求,并将响应结果赋值给responseCloseableHttpResponse response = null;try {response = httpClient.execute(httpGet);//然后从响应的实体中获取到返回的JSON字符串,并利用JSONObject进行解析,将其转换为PayResp对象HttpEntity entity = response.getEntity();JSONObject json = new JSONObject(EntityUtils.toString(entity));r = json.toBean(PayResp.class);log.debug("获取远程对象:{}", r);} catch (Exception e) {e.printStackTrace();} finally {//在try...catch块中捕获可能发生的异常,并在finally块中释放相关资源,包括关闭httpClient和responsetry {// 释放资源if (httpClient != null) {httpClient.close();}if (response != null) {response.close();}} catch (IOException e) {e.printStackTrace();}}//最后返回r对象,即HTTP响应结果的PayResp对象return r;}
}
3、实体类及数据库表
1. 订单表
2. 订单详情表order_details_tab(略)
3. 商品表goods_tab(略)
4. 支付表payment_tab(略)
5. 交易表transaction_tab(略)
4、具体业务及其实现逻辑
未完待续。。。