From 7d387aa126262ee12068f5b31aad661501edd286 Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期三, 13 十一月 2024 16:34:21 +0800 Subject: [PATCH] 优化未关阀记录接口 --- pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/wechatpay/PaymentCtrl.java | 92 ++++++++++++++++++++++++++++++---------------- 1 files changed, 60 insertions(+), 32 deletions(-) diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/wechatpay/PaymentCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/wechatpay/PaymentCtrl.java index 622d58d..7c77eb6 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/wechatpay/PaymentCtrl.java +++ b/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 @@ -71,15 +66,15 @@ private final RestTemplateUtil restTemplateUtil; private final PayHelper payHelper; private final VirtualCardSv virtualCardSv; - private final String appid = com.dy.pipIrrWechat.wechatpay.PayInfo.appid; - private final String secret = com.dy.pipIrrWechat.wechatpay.PayInfo.secret; - private final String mchid = com.dy.pipIrrWechat.wechatpay.PayInfo.mchid; - private final String schema = com.dy.pipIrrWechat.wechatpay.PayInfo.schema; - private final String signType = com.dy.pipIrrWechat.wechatpay.PayInfo.signType; - private final String description = com.dy.pipIrrWechat.wechatpay.PayInfo.description; - private final String loginUrl = com.dy.pipIrrWechat.wechatpay.PayInfo.loginUrl; - private final String notifyUrl = com.dy.pipIrrWechat.wechatpay.PayInfo.notifyUrl; - private final String grantType = com.dy.pipIrrWechat.wechatpay.PayInfo.grantType; + //private final String appid = com.dy.pipIrrWechat.wechatpay.PayInfo.appid; + //private final String secret = com.dy.pipIrrWechat.wechatpay.PayInfo.secret; + //private final String mchid = com.dy.pipIrrWechat.wechatpay.PayInfo.mchid; + //private final String schema = com.dy.pipIrrWechat.wechatpay.PayInfo.schema; + //private final String signType = com.dy.pipIrrWechat.wechatpay.PayInfo.signType; + //private final String description = com.dy.pipIrrWechat.wechatpay.PayInfo.description; + //private final String loginUrl = com.dy.pipIrrWechat.wechatpay.PayInfo.loginUrl; + //private final String notifyUrl = com.dy.pipIrrWechat.wechatpay.PayInfo.notifyUrl; + //private final String grantType = com.dy.pipIrrWechat.wechatpay.PayInfo.grantType; // 骞冲彴璇佷功鍏挜 private final Map CERTIFICATE_MAP = new HashMap(); @@ -111,12 +106,12 @@ String jsCode = code2Session.getJs_code(); Map<String, Object> queryParams = new HashMap<>(); - queryParams.put("appid", appid); - queryParams.put("secret", secret); + queryParams.put("appid", PayInfo.appid); + queryParams.put("secret", PayInfo.secret); queryParams.put("js_code", jsCode); - queryParams.put("grant_type", grantType); + queryParams.put("grant_type", com.dy.pipIrrWechat.wechatpay.PayInfo.grantType); Map<String, String> headerParams = new HashMap<>(); - JSONObject job = restTemplateUtil.get(loginUrl, queryParams, headerParams); + JSONObject job = restTemplateUtil.get(com.dy.pipIrrWechat.wechatpay.PayInfo.loginUrl, queryParams, headerParams); if(job.getLong("errcode") != null && job.getLong("errcode") >= -1) { return BaseResponseUtils.buildFail("鐧诲綍鍑瘉鏍¢獙澶辫触"); @@ -168,7 +163,7 @@ Long timestamp = System.currentTimeMillis() / 1000; byte[] certFileBs = WxCertUtil.getKey_pemBytes(resourceLoader) ; - String header = schema + " " + payHelper.getToken(method, httpUrl, "", nonceStr, timestamp, certFileBs); + String header = com.dy.pipIrrWechat.wechatpay.PayInfo.schema + " " + payHelper.getToken(method, httpUrl, "", nonceStr, timestamp, certFileBs); Map<String, String> headers = new HashMap<>(); headers.put("Authorization", header); @@ -204,10 +199,10 @@ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } - // 鎺ユ敹鍙傛暟锛氱櫥褰曟�両D銆佽櫄鎷熷崱ID銆佸厖鍊奸噾棰濓紙鍒嗭級 + // 鎺ユ敹鍙傛暟锛氱櫥褰曟�両D銆佽櫄鎷熷崱ID銆佸厖鍊奸噾棰�(鍗曚綅鍏�) Long sessionId = order.getSessionId(); Long virtualId = order.getVcId(); - Integer rechargeAmount = order.getRechargeAmount(); + //Integer rechargeAmount = (int)(order.getRechargeAmount()*100); String prepayId = ""; @@ -238,7 +233,8 @@ virtualCard.setVirtualId(virtualId); virtualCard.setClientId(clientId); virtualCard.setOrderNumber(orderNumber); - virtualCard.setRechargeAmount(rechargeAmount); + //virtualCard.setRechargeAmount(rechargeAmount); + virtualCard.setRechargeAmount(order.getRechargeAmount()); // -1锛氳櫄鎷熷崱涓嶅瓨鍦紝0锛氭坊鍔犲厖鍊艰褰曞け璐� Long rechargeId = virtualCardSv.insertVCRecharge(virtualCard); @@ -263,16 +259,16 @@ } JSONObject job_body = new JSONObject(); - job_body.put("appid", appid); - job_body.put("mchid", mchid); - job_body.put("description", description); + job_body.put("appid", PayInfo.appid); + job_body.put("mchid", PayInfo.mchid); + job_body.put("description", com.dy.pipIrrWechat.wechatpay.PayInfo.description); job_body.put("out_trade_no", orderNumber); job_body.put("attach", DataSourceContext.get()); - job_body.put("notify_url", notifyUrl); + job_body.put("notify_url", com.dy.pipIrrWechat.wechatpay.PayInfo.notifyUrl); //璁㈠崟閲戦 JSONObject job_amount = new JSONObject(); - job_amount.put("total", rechargeAmount); + job_amount.put("total", (int)(order.getRechargeAmount()*100)); job_amount.put("currency", "CNY"); job_body.put("amount", job_amount); @@ -290,7 +286,7 @@ String body = job_body.toJSONString(); byte[] certFileBs = WxCertUtil.getKey_pemBytes(resourceLoader) ; - String header = schema + " " + payHelper.getToken(method, httpUrl, body, nonceStr, timestamp, certFileBs); + String header = com.dy.pipIrrWechat.wechatpay.PayInfo.schema + " " + payHelper.getToken(method, httpUrl, body, nonceStr, timestamp, certFileBs); Map<String, String> headers = new HashMap<>(); headers.put("Authorization", header); @@ -338,7 +334,7 @@ job_result.put("timeStamp", timeStamp); job_result.put("nonceStr", nonceStr); job_result.put("package", pkg); - job_result.put("signType", signType); + job_result.put("signType", com.dy.pipIrrWechat.wechatpay.PayInfo.signType); job_result.put("paySign", paySign); return BaseResponseUtils.buildSuccess(job_result) ; @@ -535,4 +531,36 @@ 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) ; + } } \ No newline at end of file -- Gitblit v1.8.0