SpringBoot实现小程序微信支付(超级详细)
开发环境
- 
 java1.8 maven 3.3.9 springboot 2.1.3.RELEASE
第一步:开通JSAPI支付
第二步:SpringBoot技术对接
1、小程序内调用登录接口,获取到用户的openid,api参见公共api【】
2、商户server调用支付统一下单,api参见公共api【】
3、商户server调用再次签名,api参见公共api【】
4、商户server接收支付通知,api参见公共api【】
5、商户server查询支付结果,api参见公共api【】
注意上面有两次签名
1.配置文件类
3.小程序发起请求 组装发起统一下单所需要的参数
1     @PostMapping("/recharge/wx")
 2     public Map recharge(HttpServletRequest request, @RequestParam(value = "vipType",required = true) VipType vipType) throws Exception {
 3         // 本案例是充值会员 用的时候根据实际情况改成自己的需求
 4         Integer loginDealerId = MySecurityUtil.getLoginDealerId();
 5         // 获取ip地址 发起统一下单必要的参数
 6         String ipAddress = HttpUtil.getIpAddress(request);
 7         // 生成预付订单 存入数据库 回调成功在对订单状态进行修改
 8         PrepaidOrder prepaidOrder = payService.recharge(loginDealerId, vipType, ipAddress);
 9         // 组装统一下单需要的数据map 
10         Map<String, String> stringStringMap = prepaidOrder.toWxPayParameters();
11         // 调起统一支付
12         Map<String, String> payParameters =WxUtil.unifiedOrder(stringStringMap);
13         return payParameters;
14     }  
生成预付订单代码(根据实际需求生成,此处只是我这的需求,仅供参考)
72 } 73 }
在实体类做最后的参数封装
4.签名类型的枚举类 public enum SignType { MD5, HMACSHA256 }
5.获取用户IP工具类
1     public static String getIpAddress(HttpServletRequest request) {
 2         String ip = request.getHeader("x-forwarded-for");
 3         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 4             ip = request.getHeader("Proxy-Client-IP");
 5         }
 6         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 7             ip = request.getHeader("WL-Proxy-Client-IP");
 8         }
 9         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
10             ip = request.getHeader("HTTP_CLIENT_IP");
11         }
12         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
13             ip = request.getHeader("HTTP_X_FORWARDED_FOR");
14         }
15         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
16             ip = request.getRemoteAddr();
17         }
18         return ip;
19     }     
本人花费2个月时间,整理了一套JAVA开发技术资料,内容涵盖java基础,分布式、微服务等主流技术资料,包含大厂面经,学习笔记、源码讲义、项目实战、讲解视频。
领取更多学习资料
上一篇:
			            uniapp开发微信小程序-2.页面制作 
			          
			          下一篇:
			            微信小程序之支付15分钟倒计时 
			          
			        
