运营端充值

This commit is contained in:
张松
2025-10-27 14:12:49 +08:00
parent 22ab03ea51
commit 249c6b4a6e
7 changed files with 41 additions and 8 deletions

View File

@@ -6,6 +6,7 @@ import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import com.czg.service.order.service.DistributionPayService;
import com.czg.system.service.SysParamsService;
import com.czg.utils.AssertUtil;
import com.czg.utils.ServletUtil;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
@@ -52,14 +53,14 @@ public class DistributionPayController {
/**
* 运营端小程序支付
* 运营端小程序余额充值
* payType 必填 支付方式aliPay 支付宝wechatPay 微信
* openId 必填
*/
@PostMapping("/mchRecharge")
@Debounce(value = "#payParam.userId")
public CzgResult<Map<String, String>> mchRecharge(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody MkDistributionPayDTO payParam) {
payParam.setShopId(shopId);
AssertUtil.isBlank(payParam.getCode(), "微信code不为空");
return CzgResult.success(payService.mchRecharge(ServletUtil.getClientIP(request), payParam));
}
//

View File

@@ -7,14 +7,18 @@ import cn.hutool.core.util.RandomUtil;
import com.alibaba.fastjson2.JSONObject;
import com.czg.CzgPayUtils;
import com.czg.entity.CzgBaseRespParams;
import com.czg.market.service.MkDistributionConfigService;
import com.czg.mq.PrintMqListener;
import com.czg.order.entity.OrderPayment;
import com.czg.order.service.OrderInfoService;
import com.czg.order.service.OrderPaymentService;
import com.czg.order.service.ShopTableOrderStatisticService;
import com.czg.service.Impl.WxServiceImpl;
import com.czg.system.service.WxService;
import com.czg.task.StatisticTask;
import com.czg.utils.AssertUtil;
import com.ijpay.core.kit.AesUtil;
import com.mybatisflex.core.query.QueryWrapper;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
@@ -46,11 +50,15 @@ public class NotifyController {
private ShopTableOrderStatisticService shopTableOrderStatisticService;
@Resource
private WxService wxService;
@Resource
private MkDistributionConfigService distributionConfigService;
@Resource
private OrderPaymentService paymentService;
@GetMapping("testOpen")
public Map<String, String> test1(String code) throws Exception {
return wxService.v3Pay("oeQYq5LzW-kSxJL9TR4s_UmOmNLE", new BigDecimal("0.01"), "测试", "testZs" + RandomUtil.randomNumbers(20), "test");
return wxService.v3Pay("oeQYq5LzW-kSxJL9TR4s_UmOmNLE", new BigDecimal("0.01"), "测试", "testZs" + RandomUtil.randomNumbers(20), "distributionRecharge");
}
@@ -66,7 +74,6 @@ public class NotifyController {
@RequestMapping("/native/wx/pay/distributionRecharge")
public String nativeNotify(HttpServletRequest request) throws IOException {
String timestamp = request.getHeader("Wechatpay-Timestamp");
String nonce = request.getHeader("Wechatpay-Nonce");
String serialNo = request.getHeader("Wechatpay-Serial");
@@ -79,14 +86,19 @@ public class NotifyController {
String nonceStr = resource.getString("nonce");
String plainText = wxService.decryptToString(associatedData, nonceStr, ciphertext);
log.info("支付通知明文 {}", plainText);
log.info("充值支付通知明文 {}", plainText);
JSONObject plainTextJson = JSONObject.parseObject(plainText);
String outTradeNo = plainTextJson.getString("out_trade_no");
String tradeState = plainTextJson.getString("trade_state");
String transactionId = plainTextJson.getString("transaction_id");
if ("SUCCESS" == tradeState) {
if ("SUCCESS".equals(tradeState)) {
OrderPayment payment = paymentService.getOne(new QueryWrapper().eq(OrderPayment::getOrderNo, outTradeNo));
payment.setTradeNumber(transactionId);
payment.setPayTime(DateUtil.date().toLocalDateTime());
payment.setRespJson(plainTextJson.toJSONString());
paymentService.updateById(payment);
distributionConfigService.rechargeCallBack(payment.getSourceId(), payment.getShopId(), payment.getAmount(), payment.getId());
}
return "SUCCESS";