微信支付配置

This commit is contained in:
linlihong 2024-09-02 10:05:21 +08:00
parent 3fbe1020d9
commit 7976fc79d3
2 changed files with 80 additions and 3 deletions

View File

@ -20,29 +20,33 @@ public class WxPayConfig implements WXPayConfig {
//此处暂时用不到这里是读取证书的地方 //此处暂时用不到这里是读取证书的地方
} }
@Override
public String getAppID() { public String getAppID() {
return "这里是你的appid"; return "wx865aefa5a7115ae0";
} }
@Override
public String getMchID() { public String getMchID() {
//申请普通商户时分配给你的商户号 //申请普通商户时分配给你的商户号
return "这里是你的商户号"; return "这里是你的商户号";
} }
@Override
public String getKey() { public String getKey() {
//这里的key 就是你在支付平台设置的API密钥 //这里的key 就是你在支付平台设置的API密钥
return "这是就是你的Key了"; return "这是就是你的Key了";
} }
@Override
public InputStream getCertStream() { public InputStream getCertStream() {
ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData); ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData);
return certBis; return certBis;
} }
@Override
public int getHttpConnectTimeoutMs() { public int getHttpConnectTimeoutMs() {
return 8000; return 8000;
} }
@Override
public int getHttpReadTimeoutMs() { public int getHttpReadTimeoutMs() {
return 10000; return 10000;
} }

View File

@ -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<String, String> 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<String, String> 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;
}
}