From 7976fc79d30f2347535b39c5f64d3a13ecf84e16 Mon Sep 17 00:00:00 2001 From: linlihong <747682928@qq.com> Date: Mon, 2 Sep 2024 10:05:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wxappserver/config/WxPayConfig.java | 10 ++- .../wxappserver/controller/PayController.java | 73 +++++++++++++++++++ 2 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/bigdata/wxappserver/controller/PayController.java diff --git a/src/main/java/com/bigdata/wxappserver/config/WxPayConfig.java b/src/main/java/com/bigdata/wxappserver/config/WxPayConfig.java index 61662d6..c405ae8 100644 --- a/src/main/java/com/bigdata/wxappserver/config/WxPayConfig.java +++ b/src/main/java/com/bigdata/wxappserver/config/WxPayConfig.java @@ -20,29 +20,33 @@ public class WxPayConfig implements WXPayConfig { //此处暂时用不到,这里是读取证书的地方 } + @Override public String getAppID() { - return "这里是你的appid"; + return "wx865aefa5a7115ae0"; } + @Override public String getMchID() { //申请普通商户时分配给你的商户号 return "这里是你的商户号"; } + @Override public String getKey() { //这里的key 就是你在支付平台设置的API密钥 return "这是就是你的Key了"; } + @Override public InputStream getCertStream() { ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData); return certBis; } - + @Override public int getHttpConnectTimeoutMs() { return 8000; } - + @Override public int getHttpReadTimeoutMs() { return 10000; } diff --git a/src/main/java/com/bigdata/wxappserver/controller/PayController.java b/src/main/java/com/bigdata/wxappserver/controller/PayController.java new file mode 100644 index 0000000..8d4132b --- /dev/null +++ b/src/main/java/com/bigdata/wxappserver/controller/PayController.java @@ -0,0 +1,73 @@ +package com.bigdata.wxappserver.controller; + +import com.bigdata.wxappserver.config.WxPayConfig; +import com.github.wxpay.sdk.WXPay; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("pay") +public class PayController { + + @RequestMapping("payment") + public Object getPayment(HttpServletRequest request, @RequestParam("totalFee") String totalFee, String tradeno) throws Exception { +// 获取到当前登录用户,因为这里我保存了openid , 方法大家可以自己处理,这里就不展示了 +// User user = User.getCurrentUserInfo().getUser(); + //当前就是我们自己配置的支付配置。appid 商户号 key 什么的; + WxPayConfig config = new WxPayConfig(); + //当前类是官方为我们封装的一些使用的方法 + WXPay wxpay = new WXPay(config); + //获取到 IP + String clientIp = getIpAddress(request); + System.err.println(clientIp); + //封装请求参数 参数说明看API文档,当前就不进行讲解了 + Map data = new HashMap<>(); + data.put("body", "腾讯充值中心-QQ会员充值"); + data.put("out_trade_no", "2016090910595900000012"); + data.put("device_info", "12345679"); //此处设备或商品编号 + data.put("fee_type", "CNY"); // 货币类型 人民币 + + // 支付中没有小数点,起步以分做为单们,当前为1 分钱,所以自行调整金额 ,这里可以做为传参, + //选取商品金额传到后端来 + data.put("total_fee", "1"); + + data.put("spbill_create_ip", "123.12.12.123"); + data.put("notify_url", "http://www.example.com/wxpay/notify"); + data.put("trade_type", "JSAPI"); // 此处指定JSAPI + data.put("product_id", "12"); + data.put("openid", "这是是登录获取到的openId 必传"); + //调用统一下单方法 + Map order = wxpay.unifiedOrder(data); + //获取到需要的参数返回小程序 + return order; + + + } + + // 获取 IP + public static String getIpAddress(HttpServletRequest request) { + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("HTTP_CLIENT_IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("HTTP_X_FORWARDED_FOR"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + return ip; + } + +}