This commit is contained in:
Paidax
2025-03-11 10:47:04 +08:00
parent 3d92f0df29
commit 2909e01111
4 changed files with 28 additions and 12 deletions
@@ -114,6 +114,6 @@ public class PaymentTransaction extends BaseModel {
@Column @Column
@Comment("交易名单的主键id") @Comment("交易名单的主键id")
@ColDefine(type = ColType.MYSQL_JSON) @ColDefine(type = ColType.VARCHAR, width = 32)
private String memberPaymentInfoId; private String memberPaymentInfoId;
} }
@@ -1,6 +1,5 @@
package io.v.nutz.base.payment.wxpay.controller; package io.v.nutz.base.payment.wxpay.controller;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.payment.wxpay.service.WxPayCommonService; import io.v.nutz.base.payment.wxpay.service.WxPayCommonService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.Inject;
@@ -30,8 +29,14 @@ public class WxPayCommonController {
@At @At
@Ok("void") @Ok("void")
@ViReturn public void payNotify(HttpServletRequest request, HttpServletResponse response){
public void notifyMessage(HttpServletRequest request, HttpServletResponse response){
wxPayCommonService.payNotify(request, response); wxPayCommonService.payNotify(request, response);
} }
@At
@Ok("void")
public void refundNotify(HttpServletRequest request, HttpServletResponse response){
wxPayCommonService.refundNotify(request, response);
}
} }
@@ -64,6 +64,8 @@ public class WxPayCommonServiceImpl implements WxPayCommonService {
private final static int OK = 200; private final static int OK = 200;
// 1666930980 商户号 // 1666930980 商户号
// ww3eda050a1b5ad96e 企业微信
// wxf12fa6175ec7c75f 微信服务号
// 微信V3必要的支付参数,后期优化 // 微信V3必要的支付参数,后期优化
private final static WxPayV3Bean WX_PAY_V3_BEAN = new WxPayV3Bean( private final static WxPayV3Bean WX_PAY_V3_BEAN = new WxPayV3Bean(
"ww3eda050a1b5ad96e", "ww3eda050a1b5ad96e",
@@ -81,7 +83,8 @@ public class WxPayCommonServiceImpl implements WxPayCommonService {
// 自定义参数,内容是统一的,但会被多次调用,直接声明 // 自定义参数,内容是统一的,但会被多次调用,直接声明
private String serialNo; private String serialNo;
private String platSerialNo; private String platSerialNo;
private final String payNotifyUrl = WX_PAY_V3_BEAN.getDomain().concat("/wxPay/notifyMessage"); private final String payNotifyUrl = WX_PAY_V3_BEAN.getDomain().concat("/wxPay/payNotify");
private final String refundNotifyUrl = WX_PAY_V3_BEAN.getDomain().concat("/wxPay/refundNotify");
@Inject @Inject
private Dao dao; private Dao dao;
@@ -307,7 +310,7 @@ public class WxPayCommonServiceImpl implements WxPayCommonService {
log.error("签名错误"); log.error("签名错误");
} }
// 支付回调,返回给微信,自己也接收不到结果,这里的返回完全没用 // 支付回调,返回给微信,自己也接收不到结果,这里的返回没用
response.setHeader("Content-type", ContentType.JSON.toString()); response.setHeader("Content-type", ContentType.JSON.toString());
response.getOutputStream().write(JSONUtil.toJsonStr(map).getBytes(StandardCharsets.UTF_8)); response.getOutputStream().write(JSONUtil.toJsonStr(map).getBytes(StandardCharsets.UTF_8));
response.flushBuffer(); response.flushBuffer();
@@ -332,10 +335,11 @@ public class WxPayCommonServiceImpl implements WxPayCommonService {
String outRefundNo = PayKit.generateStr(); String outRefundNo = PayKit.generateStr();
log.info("商户退款单号: {}", outRefundNo); log.info("商户退款单号: {}", outRefundNo);
// 没用
// List<RefundGoodsDetail> list = new ArrayList<>(); // List<RefundGoodsDetail> list = new ArrayList<>();
// RefundGoodsDetail refundGoodsDetail = new RefundGoodsDetail() // RefundGoodsDetail refundGoodsDetail = new RefundGoodsDetail()
// .setMerchant_goods_id("123") // .setMerchant_goods_id("123")
// .setGoods_name("IJPay 测试") // .setGoods_name("测试")
// .setUnit_price(1) // .setUnit_price(1)
// .setRefund_amount(1) // .setRefund_amount(1)
// .setRefund_quantity(1); // .setRefund_quantity(1);
@@ -343,8 +347,8 @@ public class WxPayCommonServiceImpl implements WxPayCommonService {
RefundModel refundModel = new RefundModel() RefundModel refundModel = new RefundModel()
.setOut_refund_no(outRefundNo) .setOut_refund_no(outRefundNo)
.setReason("用户发起退款") .setReason(transaction.getDescription() + "退款")
.setNotify_url(payNotifyUrl) .setNotify_url(refundNotifyUrl)
.setAmount(new RefundAmount().setRefund(tradingAmount).setTotal(tradingAmount).setCurrency("CNY")); .setAmount(new RefundAmount().setRefund(tradingAmount).setTotal(tradingAmount).setCurrency("CNY"));
// .setGoods_detail(list); // .setGoods_detail(list);
@@ -379,7 +383,7 @@ public class WxPayCommonServiceImpl implements WxPayCommonService {
record.setPaymentTransactionId(transaction.getId()); record.setPaymentTransactionId(transaction.getId());
record.setOutRefundTradeNo(outRefundNo); record.setOutRefundTradeNo(outRefundNo);
record.setRefundNo(null); record.setRefundNo(null);
record.setRefundState(RefundStateEnum.REFUNDING.getRefundStateName()); record.setRefundState(RefundStateEnum.REFUNDING.name());
record.setRefundAmount(tradingAmount); record.setRefundAmount(tradingAmount);
record.setTotal(tradingAmount); record.setTotal(tradingAmount);
record.setResultJson(response.getBody()); record.setResultJson(response.getBody());
@@ -402,6 +406,7 @@ public class WxPayCommonServiceImpl implements WxPayCommonService {
* @param response * @param response
*/ */
@Override @Override
@Aop(TransAop.READ_COMMITTED)
public void refundNotify(HttpServletRequest request, HttpServletResponse response) { public void refundNotify(HttpServletRequest request, HttpServletResponse response) {
Map<String, String> map = new HashMap<>(12); Map<String, String> map = new HashMap<>(12);
try { try {
@@ -427,9 +432,14 @@ public class WxPayCommonServiceImpl implements WxPayCommonService {
if (StrUtil.isNotEmpty(plainText)) { if (StrUtil.isNotEmpty(plainText)) {
// 取出明文,修改退款的结果 // 取出明文,修改退款的结果
JSONObject jsonObject = JSONUtil.parseObj(plainText); JSONObject jsonObject = JSONUtil.parseObj(plainText);
// 查询出退款记录 // 查询出退款记录,存储关键信息并修改
PaymentRefundRecord record = dao.fetch(PaymentRefundRecord.class, Cnd.where("outRefundTradeNo", "=", jsonObject.getStr("out_refund_no"))); PaymentRefundRecord record = dao.fetch(PaymentRefundRecord.class, Cnd.where("outRefundTradeNo", "=", jsonObject.getStr("out_refund_no")));
record.setRefundNo(jsonObject.getStr("refund_id")); record.setRefundNo(jsonObject.getStr("refund_id"));
record.setRefundState(RefundStateEnum.REFUND_SUCCESS.name());
// 到此是退款成功了,还要去修改订单表的数据
dao.update(PaymentTransaction.class, Chain.make("isRefund", true)
.add("refundAmount", record.getRefundAmount()),
Cnd.where("id", "=", record.getPaymentTransactionId()));
response.setStatus(200); response.setStatus(200);
map.put("code", "SUCCESS"); map.put("code", "SUCCESS");
@@ -439,6 +449,7 @@ public class WxPayCommonServiceImpl implements WxPayCommonService {
map.put("code", "ERROR"); map.put("code", "ERROR");
map.put("message", "签名错误"); map.put("message", "签名错误");
} }
// 没用
response.setHeader("Content-type", ContentType.JSON.toString()); response.setHeader("Content-type", ContentType.JSON.toString());
response.getOutputStream().write(JSONUtil.toJsonStr(map).getBytes(StandardCharsets.UTF_8)); response.getOutputStream().write(JSONUtil.toJsonStr(map).getBytes(StandardCharsets.UTF_8));
response.flushBuffer(); response.flushBuffer();
@@ -68,7 +68,7 @@ public class MemberPaymentTestController {
@At @At
@Ok("re") @Ok("re")
public String getCode(@Param("code") String code, @Param("state") String state){ public String getCode(@Param("code") String code, @Param("state") String state){
String openId = wxPayCommonService.getOpenId(code); // String openId = wxPayCommonService.getOpenId(code);
// WxPayNeedParamVo paramVo = new WxPayNeedParamVo(); // WxPayNeedParamVo paramVo = new WxPayNeedParamVo();
// paramVo.setDescription("支付"); // paramVo.setDescription("支付");
// paramVo.setAttach(""); // paramVo.setAttach("");