‘linchangsheng’ il y a 6 mois
Parent
commit
c38e8f3895

+ 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")

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

@@ -386,7 +386,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 +1308,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.getPayService(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;
+    }
 }