@ -0,0 +1,8 @@ | |||
package org.jeecg.api.wxUtils; | |||
public class CreateOrderReq { | |||
/** | |||
* 微信用户openid(前端不用传参) | |||
*/ | |||
private String wxOpenId; | |||
} |
@ -0,0 +1,47 @@ | |||
package org.jeecg.api.wxUtils; | |||
import javax.servlet.ServletInputStream; | |||
import javax.servlet.http.HttpServletRequest; | |||
import java.io.BufferedReader; | |||
import java.io.IOException; | |||
import java.io.InputStreamReader; | |||
import java.nio.charset.StandardCharsets; | |||
/** | |||
* <p> | |||
* HttpServletRequest 获取请求体 | |||
* </p> | |||
* | |||
* @author songfayuan | |||
* @date 2024/9/30 19:11 | |||
*/ | |||
public class HttpServletUtils { | |||
/** | |||
* 获取请求体 | |||
* | |||
* @param request | |||
* @return | |||
* @throws IOException | |||
*/ | |||
public static String getRequestBody(HttpServletRequest request) throws IOException { | |||
ServletInputStream stream = null; | |||
BufferedReader reader = null; | |||
StringBuffer sb = new StringBuffer(); | |||
try { | |||
stream = request.getInputStream(); | |||
// 获取响应 | |||
reader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8)); | |||
String line; | |||
while ((line = reader.readLine()) != null) { | |||
sb.append(line); | |||
} | |||
} catch (IOException e) { | |||
throw new IOException("读取返回支付接口数据流出现异常!"); | |||
} finally { | |||
reader.close(); | |||
} | |||
return sb.toString(); | |||
} | |||
} |
@ -0,0 +1,31 @@ | |||
package org.jeecg.api.wxUtils; | |||
import lombok.Data; | |||
import java.math.BigDecimal; | |||
/** | |||
* <p> | |||
* 支付订单信息 | |||
* </p> | |||
* | |||
* @author songfayuan | |||
* @date 2024/9/30 17:46 | |||
*/ | |||
@Data | |||
public class PayOrderInfo { | |||
/** | |||
* 订单标题 | |||
*/ | |||
private String description; | |||
/** | |||
* 商户订单号 | |||
* 只能是数字、大小写字母_-*且在同一个商户号下唯一。 | |||
*/ | |||
private String outTradeNo; | |||
/** | |||
* 支付金额,单位:元 | |||
*/ | |||
private BigDecimal amount; | |||
} | |||
@ -0,0 +1,23 @@ | |||
package org.jeecg.api.wxUtils; | |||
import lombok.Data; | |||
/** | |||
* <p> | |||
* 订单查询请求 | |||
* </p> | |||
* | |||
* @author songfayuan | |||
* @date 2024/9/30 19:19 | |||
*/ | |||
@Data | |||
public class QueryOrderReq { | |||
/** | |||
* 订单号:业务侧的订单号 | |||
*/ | |||
private String transactionId; | |||
/** | |||
* 商户订单号 | |||
*/ | |||
private String outTradeNo; | |||
} |
@ -0,0 +1,36 @@ | |||
package org.jeecg.api.wxUtils; | |||
import lombok.Data; | |||
import java.math.BigDecimal; | |||
/** | |||
* <p> | |||
* 退款订单请求参数 | |||
* </p> | |||
* | |||
* @author songfayuan | |||
* @date 2024/9/30 19:19 | |||
*/ | |||
@Data | |||
public class RefundOrderReq { | |||
/** | |||
* 订单号:业务侧的订单号 | |||
*/ | |||
private String transactionId; | |||
/** | |||
* 商户订单号 | |||
*/ | |||
private String outTradeNo; | |||
/** | |||
* 原订单金额 说明:原支付交易的订单总金额,这里单位为元。 | |||
*/ | |||
private BigDecimal totalAmount; | |||
/** | |||
* 退款金额 说明:退款金额,这里单位为元,不能超过原订单支付金额。 | |||
*/ | |||
private BigDecimal refundAmount; | |||
} | |||
@ -0,0 +1,164 @@ | |||
package org.jeecg.api.wxUtils; | |||
import lombok.Data; | |||
/** | |||
* 返回参数封装类 | |||
* | |||
* @param <T> | |||
* @author songfayuan | |||
*/ | |||
@Data | |||
public class Response<T> { | |||
/** | |||
* 状态码 | |||
*/ | |||
protected int code; | |||
/** | |||
* 提示信息 | |||
*/ | |||
protected String msg; | |||
/** | |||
* 数据 | |||
*/ | |||
protected T data; | |||
/** | |||
* 成功时状态码 | |||
*/ | |||
private static final int SUCCESS_CODE = 200; | |||
/** | |||
* 成功时提示信息 | |||
*/ | |||
private static final String SUCCESS_MSG = "success"; | |||
/** | |||
* 异常、错误信息状态码 | |||
*/ | |||
private static final int ERROR_CODE = 500; | |||
/** | |||
* 异常、错误提示信息 | |||
*/ | |||
private static final String ERROR_MSG = "服务器内部异常,请联系技术人员!"; | |||
/** | |||
* 返回成功消息 | |||
* | |||
* @param <T> | |||
* @return | |||
*/ | |||
public static <T> Response<T> success() { | |||
Response resp = new Response(); | |||
resp.code = (SUCCESS_CODE); | |||
resp.msg = (SUCCESS_MSG); | |||
return resp; | |||
} | |||
/** | |||
* 返回成功消息 | |||
* | |||
* @param <T> | |||
* @param msg | |||
* @return | |||
*/ | |||
public static <T> Response<T> successResponse(String msg) { | |||
Response resp = new Response(); | |||
resp.code = SUCCESS_CODE; | |||
resp.msg = msg; | |||
return resp; | |||
} | |||
/** | |||
* 返回错误消息 | |||
* | |||
* @param <T> | |||
* @return | |||
*/ | |||
public static <T> Response<T> error() { | |||
Response resp = new Response(); | |||
resp.code = (ERROR_CODE); | |||
resp.msg = (ERROR_MSG); | |||
return resp; | |||
} | |||
/** | |||
* 返回错误消息 | |||
* | |||
* @param <T> | |||
* @param msg | |||
* @return | |||
*/ | |||
public static <T> Response<T> errorResponse(String msg) { | |||
Response resp = new Response(); | |||
resp.code = ERROR_CODE; | |||
resp.msg = msg; | |||
return resp; | |||
} | |||
/** | |||
* 自定义状态码、提示信息 | |||
* | |||
* @param <T> | |||
* @param code 状态码 | |||
* @param msg 提示信息 | |||
* @return | |||
*/ | |||
public static <T> Response<T> response(int code, String msg) { | |||
Response resp = new Response(); | |||
resp.code = (code); | |||
resp.msg = (msg); | |||
return resp; | |||
} | |||
/** | |||
* 自定义状态码、提示信息、业务数据 | |||
* | |||
* @param <T> | |||
* @param code 状态码 | |||
* @param msg 提示信息 | |||
* @param data 业务数据 | |||
* @return | |||
*/ | |||
public static <T> Response<T> response(int code, String msg, T data) { | |||
Response<T> resp = new Response<>(); | |||
resp.code = (code); | |||
resp.msg = (msg); | |||
resp.data = data; | |||
return resp; | |||
} | |||
/** | |||
* 返回成功数据 | |||
* | |||
* @param <T> | |||
* @param data 业务数据 | |||
* @return | |||
*/ | |||
public static <T> Response<T> success(T data) { | |||
Response<T> resp = new Response<>(); | |||
resp.code = (SUCCESS_CODE); | |||
resp.msg = (SUCCESS_MSG); | |||
resp.data = data; | |||
return resp; | |||
} | |||
/** | |||
* 返回错误消息 | |||
* | |||
* @param <T> | |||
* @param data 业务数据 | |||
* @return | |||
*/ | |||
public static <T> Response<T> error(T data) { | |||
Response<T> resp = new Response<>(); | |||
resp.code = (ERROR_CODE); | |||
resp.msg = (ERROR_MSG); | |||
resp.data = data; | |||
return resp; | |||
} | |||
} |
@ -0,0 +1,86 @@ | |||
package org.jeecg.api.wxUtils; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.springframework.context.annotation.Configuration; | |||
@Slf4j | |||
@Configuration | |||
public class WxPayAutoCertificateConfig { | |||
// /** | |||
// * 微信小程序的 AppID | |||
// */ | |||
// @Value("${wx.miniapp.appid}") | |||
// private String appid; | |||
// | |||
// /** | |||
// * 微信小程序的密钥 | |||
// */ | |||
// @Value("${wx.miniapp.secret}") | |||
// private String secret; | |||
// | |||
// /** | |||
// * 商户号 | |||
// */ | |||
// @Value("${wx.miniapp.merchantId}") | |||
// private String merchantId; | |||
// | |||
// /** | |||
// * 商户API私钥路径 | |||
// */ | |||
// @Value("${wx.miniapp.privateKeyPath}") | |||
// private String privateKeyPath; | |||
// | |||
// /** | |||
// * 商户证书序列号 | |||
// */ | |||
// @Value("${wx.miniapp.merchantSerialNumber}") | |||
// private String merchantSerialNumber; | |||
// | |||
// /** | |||
// * 商户APIV3密钥 | |||
// */ | |||
// @Value("${wx.miniapp.apiV3Key}") | |||
// private String apiV3Key; | |||
// | |||
// /** | |||
// * 支付通知地址 | |||
// */ | |||
// @Value("${wx.miniapp.payNotifyUrl}") | |||
// private String payNotifyUrl; | |||
// | |||
// /** | |||
// * 退款通知地址 | |||
// */ | |||
// @Value("${wx.miniapp.refundNotifyUrl}") | |||
// private String refundNotifyUrl; | |||
// /** | |||
// * 初始化商户配置 | |||
// * @return | |||
// */ | |||
// @Bean | |||
// public Config rsaAutoCertificateConfig() { | |||
// // 这里把Config作为配置Bean是为了避免多次创建资源,一般项目运行的时候这些东西都确定了 | |||
// // 具体的参数改为申请的数据,可以通过读配置文件的形式获取 | |||
//// Config config = new RSAAutoCertificateConfig.Builder() | |||
//// .merchantId("1659066870") | |||
//// .privateKeyFromPath("E:\\git_java\\api_java\\popularize-admin\\popularize-admin\\popularize-admin\\module-pay\\src\\main\\resources\\apiclient_key.pem") | |||
//// .merchantSerialNumber("7BE56DC695B2B612BD1C6C710A7FBFA1AC46B10F") | |||
//// .apiV3Key("vtribevtribevtribevtribevtribe12") | |||
//// .build(); | |||
// | |||
// | |||
//// Config config = new RSAAutoCertificateConfig.Builder() | |||
//// .merchantId(merchantId) | |||
//// .privateKeyFromPath(privateKeyPath) | |||
//// .merchantSerialNumber(merchantSerialNumber) | |||
//// .apiV3Key(apiV3Key) | |||
//// .build(); | |||
//// log.info("初始化微信支付商户配置完成..."); | |||
// return config; | |||
// } | |||
} |
@ -0,0 +1,15 @@ | |||
package org.jeecg.api.wxUtils; | |||
import lombok.Data; | |||
import org.springframework.stereotype.Component; | |||
@Data | |||
@Component | |||
public class WxPayConfig { | |||
} | |||
@ -0,0 +1,18 @@ | |||
package org.jeecg.api.wxUtils; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
@Data | |||
public class WxQrCodeVo { | |||
/**图片地址*/ | |||
@ApiModelProperty(value = "图片地址") | |||
private String url; | |||
@ApiModelProperty(value = "二维码名称") | |||
private String name; | |||
@ApiModelProperty(value = "二维码背景图") | |||
private String bjImage; | |||
} |