zhubaomin
2024-10-23 004391089df2fda26b9c514d76bac1c329cad750
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/wechatpay/PaymentCtrl.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.multiDataSource.DataSourceContext;
import com.dy.common.util.AES;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.common.webUtil.ResultCodeMsg;
@@ -17,10 +18,7 @@
import com.dy.pipIrrWechat.virtualCard.dto.DtoVirtualCard;
import com.dy.pipIrrWechat.virtualCard.enums.LastOperateENUM;
import com.dy.pipIrrWechat.virtualCard.enums.RefundItemStateENUM;
import com.dy.pipIrrWechat.wechatpay.dto.Code2Session;
import com.dy.pipIrrWechat.wechatpay.dto.DtoOrder;
import com.dy.pipIrrWechat.wechatpay.dto.NotifyResource;
import com.dy.pipIrrWechat.wechatpay.dto.OrderNotify;
import com.dy.pipIrrWechat.wechatpay.dto.*;
import com.dy.pipIrrWechat.wechatpay.enums.RefundStatusENUM;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
@@ -48,10 +46,7 @@
import java.security.SignatureException;
import java.security.spec.InvalidKeySpecException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.*;
/**
 * @author ZhuBaoMin
@@ -535,4 +530,63 @@
        result.put("message", "成功");
        return  result;
    }
    /**
     * 添加微信支付信息
     * @param po
     * @param bindingResult
     * @return
     */
    @PostMapping(path = "add_wechatpay", consumes = MediaType.APPLICATION_JSON_VALUE)
    public BaseResponse<Boolean> addWechatpay(@RequestBody @Valid Wechatpay po, BindingResult bindingResult) throws Exception {
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        if(paymentSv.getWechatpayByAppId(po.getAppId()) != null) {
            return BaseResponseUtils.buildErrorMsg("该微信支付信息已经存在");
        }
        SeWechatpay seWechatpay = new SeWechatpay();
        seWechatpay.setAppId(AES.encrypt(po.getAppId()));
        seWechatpay.setAppSecret(AES.encrypt(po.getAppSecret()));
        seWechatpay.setMchId(AES.encrypt(po.getMchId()));
        seWechatpay.setMchKey(AES.encrypt(po.getMchKey()));
        seWechatpay.setSerialNo((AES.encrypt(po.getSerialNo())));
        seWechatpay.setNotifyUrl(AES.encrypt(po.getNotifyUrl()));
        seWechatpay.setRemarks(po.getRemarks());
        Long rec = Optional.ofNullable(paymentSv.addWechatpay(seWechatpay)).orElse(0L);
        if(rec == 0) {
            return BaseResponseUtils.buildFail("添加微信支付信息失败");
        }
        return BaseResponseUtils.buildSuccess(true) ;
    }
    /**
     * 初始化微信支付信息
     * @param appId
     * @return
     */
    @PostMapping(path = "init_wechatpay")
    public BaseResponse<Boolean> initWechatpay(@RequestParam("appId") String appId) throws Exception {
        if(appId == null || appId.trim().length() == 0) {
            return BaseResponseUtils.buildErrorMsg("小程序唯一标识不能为空");
        }
        appId = AES.encrypt(appId);
        SeWechatpay seWechatpay = paymentSv.getWechatpayByAppId(appId);
        if(seWechatpay != null) {
            PayInfo.appid = AES.decrypt(seWechatpay.getAppId());
            PayInfo.secret = AES.decrypt(seWechatpay.getAppSecret());
            PayInfo.mchid = AES.decrypt(seWechatpay.getMchId());
            PayInfo.key = AES.decrypt(seWechatpay.getMchKey());
            PayInfo.serial_no = AES.decrypt(seWechatpay.getSerialNo());
            PayInfo.notifyUrl = AES.decrypt(seWechatpay.getNotifyUrl());
            return BaseResponseUtils.buildSuccess(true) ;
        }else {
            return BaseResponseUtils.buildErrorMsg("小程序唯一标识错误或其信息不存在");
        }
    }
}