Prechádzať zdrojové kódy

Merge branch 'develop'

FengChaoYu 6 mesiacov pred
rodič
commit
bd1da8c422

+ 1 - 1
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/constant/Constant.java

@@ -67,7 +67,7 @@ public class Constant {
     //APPID
     public final static String APPID = "APPID";
     //默认的appid
-    public final static String DEF_APPID = "wx21d155e8a449d9b1";
+    public final static String DEF_APPID = "wxb0f1112291629413";
 
 //    public class User{
 //        public final static String WORKER_ID_PREFIX = "S210";

+ 18 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/common/outside/WechatLogic.java

@@ -255,4 +255,22 @@ public class WechatLogic extends OutsideBaseApi{
         return JSONUtil.toBean(s, new TypeReference<ResponseHelper<WxMpQrCodeTicket>>() {
         }, false);
     }
+
+    public PayDetail paymentWebsit(String orderId, BigDecimal payAmount, String openId, String profitSharingFlag, String ip, String payInsureCodeId, boolean miniPay) {
+        Map<String,Object> map = new HashMap<>();
+        map.put("orderId",orderId);
+        map.put("payAmount",payAmount);
+        map.put("openId",openId);
+        map.put("profitSharingFlag",profitSharingFlag);
+        map.put("ip",ip);
+        map.put("companyWechatId",payInsureCodeId);
+        map.put("miniPay",miniPay);
+        String s = HttpUtils.requestPostForm(pcUrl + "/wechat/paymentWebsit", map, getHeader());
+        log.info("微信支付response:{}",s);
+        ResponseHelper<PayDetail> result = JSONUtil.toBean(s, new TypeReference<ResponseHelper<PayDetail>>() {
+        }, false);
+        PayDetail payDetail = checkData(result);
+        log.info("微信支付:{}",payDetail);
+        return payDetail;
+    }
 }

+ 12 - 3
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/policy/WorkerLogic.java

@@ -377,19 +377,28 @@ public class WorkerLogic {
 
         CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
 
+
+
+
+
         String source = StringUtil.isEmpty(commonLogic.getSource())?"B":commonLogic.getSource();
 
         PayDetail payDetail = new PayDetail();
 
         PolicyOrder policyOrder = policyOrderService.getById(policyOrderId);
 
+        AdminWebsit adminWebsit = adminWebsitService.getById(policyOrder.getWebsitId());
+
+        if (StringUtil.isEmpty(adminWebsit.getPayWorkerCodeId()))
+            throw new RemoteServiceException("网点支付配置未配置");
+
         if (source.equals("B")) {
             payDetail = wechatLogic.paymentWebsitH5(policyOrder.getId(), policyOrder.getPayAmount(), currentCompanyWechat.getUser().getOpenId(),
-                    "N", ip, currentCompanyWechat.getCompanyWechatId());
+                    "N", ip, adminWebsit.getPayInsureCodeId());
         } else {
-            payDetail = wechatLogic.payment(policyOrder.getId(), policyOrder.getPayAmount(),
+            payDetail = wechatLogic.paymentWebsit(policyOrder.getId(), policyOrder.getPayAmount(),
                     currentCompanyWechat.getUser().getOpenId(),
-                    "N", ip, currentCompanyWechat.getCompanyWechatId(), true);
+                    "N", ip, adminWebsit.getPayInsureCodeId(), true);
         }
 
         return payDetail;

+ 1 - 1
mall-miniapp-service/src/main/resources/bootstrap-prd.properties

@@ -81,4 +81,4 @@ inf.token.appid=material
 inf.token.appSecret=kaksladjaklsdjlasjdlasjdlaskijwsmk
 
 #分销商城appid
-share.mall.appid=wx21d155e8a449d9b1
+share.mall.appid=wxb0f1112291629413

+ 0 - 2
mall-server-api/src/main/java/com/gree/mall/manager/controller/common/WechatController.java

@@ -108,7 +108,6 @@ public class WechatController {
     }
 
 
-/*
     @PostMapping("/paymentWebsit")
     @ApiOperation(value = "微信小程序支付")
     public ResponseHelper<PayDetail> paymentWebsit(
@@ -123,7 +122,6 @@ public class WechatController {
         PayDetail payDetail = wechatLogic.paymentWebsit(orderId, payAmount, openId, profitSharingFlag, ip, companyWechatId,miniPay);
         return ResponseHelper.success(payDetail);
     }
-*/
 
 
     @PostMapping("/payment")

+ 71 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/common/WechatLogic.java

@@ -128,6 +128,19 @@ public class WechatLogic {
 
     }
 
+
+    /**
+     * 微信支付服务
+     * @param companyWechatId
+     * @param source 公众号 / 小程序
+     * @return
+     */
+    public WxPayService getPayJaspWebstiService(String id,String source){
+
+        return WxConfiguration.wxSubPayWebsitServices.get(id);
+
+    }
+
     /**
      * 微信支付服务(小程序)
      * @param companyWechatId
@@ -386,7 +399,8 @@ public class WechatLogic {
      * @return
      * @throws Exception
      */
-    private PayDetail payment(String id, BigDecimal payment, String openId, String profitSharingFlag, String ip, String companyWechatId,String tradeType,Boolean miniPay) throws Exception {
+    private PayDetail payment(String id, BigDecimal payment, String openId, String profitSharingFlag, String ip, String companyWechatId,
+                              String tradeType,Boolean miniPay) throws Exception {
 
         if(payment.doubleValue() <= 0){
             //throw new RemoteServiceException("支付金额小于等于0,实际支付金额:"+payment);
@@ -1307,4 +1321,60 @@ public class WechatLogic {
         log.info("payDetail:{}",JSONObject.toJSONString(payDetail));
         return payDetail;
     }
+
+    public PayDetail paymentWebsit(String id, BigDecimal payment, String openId, String profitSharingFlag,
+                                   String ip, String companyWechatId, Boolean miniPay) throws WxPayException {
+
+
+        if(payment.doubleValue() <= 0){
+            //throw new RemoteServiceException("支付金额小于等于0,实际支付金额:"+payment);
+            PayDetail payDetail = new PayDetail();
+            payDetail.setIsPay(false);
+            payDetail.setId(id);
+            return payDetail;
+        }
+        //撤销订单
+        //this.reverse(id,companyWechatId);
+
+        WxPayService payService =this.getPayJaspWebstiService(companyWechatId,"A");
+
+        WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest = new WxPayUnifiedOrderRequest();
+        wxPayUnifiedOrderRequest.setBody("商城支付费用");
+        wxPayUnifiedOrderRequest.setTotalFee((int)ArithUtils.mul(payment.doubleValue(), 100));
+        wxPayUnifiedOrderRequest.setSubOpenid(openId);
+        wxPayUnifiedOrderRequest.setNonceStr(StringUtil.getUUID());
+        wxPayUnifiedOrderRequest.setOutTradeNo(id +"-"+ StringUtil.getRandomSMS());
+        wxPayUnifiedOrderRequest.setAttach(id);//支付通过该方式回调处理
+        //wxPayUnifiedOrderRequest.setTradeType("JSAPI");
+        wxPayUnifiedOrderRequest.setTradeType("JSAPI");
+        wxPayUnifiedOrderRequest.setProductId(id);
+        wxPayUnifiedOrderRequest.setNotifyUrl(payService.getConfig().getNotifyUrl());
+        wxPayUnifiedOrderRequest.setSpbillCreateIp(ip);
+        wxPayUnifiedOrderRequest.setProfitSharing(profitSharingFlag);
+        WxPayUnifiedOrderResult wxPayUnifiedOrderResult = payService.unifiedOrder(wxPayUnifiedOrderRequest);
+        log.info("服务商调起支付result:{}",JSONObject.toJSONString(wxPayUnifiedOrderResult));
+        String returnCode = wxPayUnifiedOrderResult.getReturnCode();
+        if (!StringUtils.equals(returnCode, "SUCCESS")) {
+            throw new RemoteServiceException( "微信调起支付失败:" + wxPayUnifiedOrderResult.getReturnMsg());
+        }
+
+        //二次签名
+        String time = System.currentTimeMillis() / 1000 + "";
+        String prepayId = "prepay_id=" + wxPayUnifiedOrderResult.getPrepayId();
+        String nonceStr = wxPayUnifiedOrderResult.getNonceStr();
+        String twoSign = this.getTwoSign(prepayId, nonceStr, time,payService.getConfig().getSubAppId(),payService.getConfig().getMchKey());
+        PayDetail payDetail = new PayDetail();
+        payDetail.setPayPackage(prepayId);
+        payDetail.setPaySign(twoSign);
+        payDetail.setNonceStr(wxPayUnifiedOrderResult.getNonceStr());
+        payDetail.setTimeStamp(time);
+        payDetail.setCodeUrl(wxPayUnifiedOrderResult.getCodeURL());
+        //h5的url
+        if(StringUtils.isNotBlank(wxPayUnifiedOrderResult.getMwebUrl())) {
+            payDetail.setCodeUrl(wxPayUnifiedOrderResult.getMwebUrl());
+        }
+        payDetail.setId(id);
+        log.info("payDetail:{}",JSONObject.toJSONString(payDetail));
+        return payDetail;
+    }
 }

+ 1 - 1
mall-server-api/src/main/resources/bootstrap-prd.properties

@@ -82,7 +82,7 @@ inf.token.appid=material
 inf.token.appSecret=kaksladjaklsdjlasjdlasjdlaskijwsmk
 
 #分销商城appid
-share.mall.appid=wx21d155e8a449d9b1
+share.mall.appid=wxb0f1112291629413
 
 #cmc bank request setting
 cmc.bank.url=https://cdc.cmbchina.com/cdcserver/api/v2