zhijiezhao 3 jaren geleden
bovenliggende
commit
1f1617810f

+ 0 - 33
src/main/java/com/caimei365/order/components/HeliPayUtil.java

@@ -98,18 +98,6 @@ public class HeliPayUtil {
             pay.setP18_desc(attach);
             //收款账号
             pay.setP3_customerNumber(Constant.CUSTOMERNUM);
-//            //立即分账,固定金额
-//            pay.setSplitBillType("FIXED_AMOUNT");
-//            //分账对象
-//            PaySplitVo paySplitVo = new PaySplitVo();
-            //分账账户邮箱 超级会员默认进信息
-            //交易分账规则串必须包含两个参数,分别是分账商户的合法邮箱splitBillMerchantEmail和对应分账合法金额splitBillAmount,
-            //分账金额单位:元,最多保留两位小数,分账规则串中不可以重复出现同一邮箱,分账规则串中不可以传分账发起方自己;
-//            paySplitVo.setSplitBillMerchantEmail(Constant.XX_MAIL);
-            //手续费0.25% 支付金额*(1-0.25%)
-//            paySplitVo.setSplitBillAmount(MathUtil.mul(price,0.9975).toString());
-//            String s = JSON.toJSONString(new ArrayList<PaySplitVo>().add(paySplitVo));
-//            pay.setRuleJson(s);
         }else if("coupon".equals(payFlag)){
             Double couponPrice = payOrderMapper.getCouponPrice(heliDto.getCouponRecordId());
             orderId = heliDto.getUserId() + "C" + heliDto.getCouponId() + "R" + heliDto.getCouponRecordId() + "T" + time + environment;
@@ -123,7 +111,6 @@ public class HeliPayUtil {
             pay.setP3_customerNumber(Constant.CUSTOMERNUM);
         } else if ("order".equals(payFlag)) {
             //普通订单
-//            pay.setP3_customerNumber(Constant.CUSTOMERNUM2);
             OrderVo order = orderCommonMapper.getOrderByOrderId(heliDto.getOrderId());
             orderId = order.getOrderNo() + "T" + time + environment;
             pay.setP9_orderAmount(heliDto.getPayAmount().toString());
@@ -171,16 +158,6 @@ public class HeliPayUtil {
             pay.setP14_desc(heliDto.getProductId().toString() + "," + BizType.getNumByType(heliDto.getPayType()));
             //网络收款,分账进信息
             pay.setP3_customerNumber(Constant.CUSTOMERNUM);
-//            PaySplitVo paySplitVo = new PaySplitVo();
-            //分账规则穿给分账账户邮箱 二手进信息
-            //交易分账规则串必须包含两个参数,分别是分账商户的合法邮箱splitBillMerchantEmail和对应分账合法金额splitBillAmount,
-            //分账金额单位:元,最多保留两位小数,分账规则串中不可以重复出现同一邮箱,分账规则串中不可以传分账发起方自己;
-//            paySplitVo.setSplitBillMerchantEmail(Constant.XX_MAIL);
-            //手续费0.25% 100*(1-0.25%)
-//            paySplitVo.setSplitBillAmount("99.75");
-//            String s = JSON.toJSONString(new ArrayList<PaySplitVo>().add(paySplitVo));
-//            pay.setRuleJson(s);
-//            pay.setSplitBillType("FIXED_AMOUNT");
         }else if ("vip".equals(payFlag)) {
             VipRecordBo record = payOrderMapper.getVipPackageRecord(heliDto.getVipRecordId());
             Double price = payOrderMapper.getVipPackagePriceById(record.getPackageId());
@@ -193,14 +170,6 @@ public class HeliPayUtil {
             pay.setP14_desc(attach);
             //收款账号
             pay.setP3_customerNumber(Constant.CUSTOMERNUM);
-//            PaySplitVo paySplitVo = new PaySplitVo();
-            //进信息
-//            paySplitVo.setSplitBillMerchantEmail(Constant.XX_MAIL);
-            //价格*0.9975
-//            paySplitVo.setSplitBillAmount(MathUtil.mul(price,0.9975).toString());
-//            String s = JSON.toJSONString(new ArrayList<PaySplitVo>().add(paySplitVo));
-//            pay.setRuleJson(s);
-//            pay.setSplitBillType("FIXED_AMOUNT");
         }else if("coupon".equals(payFlag)){
             Double couponPrice = payOrderMapper.getCouponPrice(heliDto.getCouponRecordId());
             orderId = heliDto.getUserId() + "C" + heliDto.getCouponId() + "R" + heliDto.getCouponRecordId() + "T" + time + environment;
@@ -215,7 +184,6 @@ public class HeliPayUtil {
         }
         else if ("order".equals(payFlag)) {
             //以子订单为单位付款,商户号为商品的分帐号
-//            pay.setP3_customerNumber(Constant.CUSTOMERNUM2);
             OrderVo order = orderCommonMapper.getOrderByOrderId(heliDto.getOrderId());
             orderId = order.getOrderNo() + "T" + time + environment;
             pay.setP5_orderAmount(heliDto.getPayAmount().toString());
@@ -287,7 +255,6 @@ public class HeliPayUtil {
                 pay.setP15_desc(attach);
             }
             else if ("order".equals(payFlag)) {
-//                pay.setP3_customerNumber(Constant.CUSTOMERNUM2);
                 OrderVo order = orderCommonMapper.getOrderByOrderId(heliDto.getOrderId());
                 orderId = order.getOrderNo() + "T" + time + environment;
                 pay.setP4_orderAmount(heliDto.getPayAmount().toString());

+ 12 - 3
src/main/java/com/caimei365/order/controller/HeliPayNonOrderApi.java

@@ -4,8 +4,6 @@ import com.alibaba.fastjson.JSONObject;
 import com.caimei365.order.model.ResponseJson;
 import com.caimei365.order.model.dto.HeliDto;
 import com.caimei365.order.model.dto.PayCouponDto;
-import com.caimei365.order.model.dto.PaySecondDto;
-import com.caimei365.order.model.dto.PayVipDto;
 import com.caimei365.order.model.vo.NotifyResponseVo;
 import com.caimei365.order.model.vo.UnionResVo;
 import com.caimei365.order.service.HeliPayNonOrderService;
@@ -99,6 +97,17 @@ public class HeliPayNonOrderApi {
         return payNonOrderService.getCouponRecord(payCouponDto, headers);
     }
 
+    /**
+     * 购买优惠券-查询是否购买成功
+     */
+    @ApiOperation("购买优惠券-查询是否购买成功")
+    @GetMapping("/coupon/check")
+    public ResponseJson couponCheck(Integer couponRecordId) {
+        if (null == couponRecordId) {
+            return ResponseJson.error("购买记录id不能为空!", null);
+        }
+        return payNonOrderService.couponCheck(couponRecordId);
+    }
      /**
      * 购买优惠券-微信线上支付
      *
@@ -111,7 +120,7 @@ public class HeliPayNonOrderApi {
      *                     state         微信公众号state参数
      *                     }
      */
-    @ApiOperation("购买价值优惠券-微信线上支付")
+    @ApiOperation("购买价值优惠券-微信支付")
     @PostMapping("/coupon/wechat")
     public ResponseJson<JSONObject> payCouponByWeChat(HeliDto heliDto, @RequestHeader HttpHeaders headers) {
         if (null == heliDto.getCouponRecordId()) {

+ 2 - 0
src/main/java/com/caimei365/order/service/HeliPayNonOrderService.java

@@ -87,4 +87,6 @@ public interface HeliPayNonOrderService {
     ResponseJson<String> couponUnionPay(HeliDto heliDto, HttpHeaders headers);
 
     String unionCouponCallback(UnionResVo data) throws IntrospectionException, InvocationTargetException, IllegalAccessException;
+
+    ResponseJson couponCheck(Integer couponRecordId);
 }

+ 15 - 111
src/main/java/com/caimei365/order/service/impl/HeliPayNonOrderServiceImpl.java

@@ -167,14 +167,8 @@ public class HeliPayNonOrderServiceImpl implements HeliPayNonOrderService {
         // 公钥验签
         String oriMessage = MyBeanUtils.getSigned(res, null);
         String oriMessage1 = oriMessage + Constant.SPLIT + Constant.SAOMA;
-        String oriMessage2 = oriMessage + Constant.SPLIT + Constant.FENZHANG;
-        String oriMessage3 = oriMessage + Constant.SPLIT + Constant.XUNI;
-        String oriMessage4 = oriMessage + Constant.SPLIT + Constant.WANGYIN;
         String checkSign1 = Disguiser.disguiseMD5(oriMessage1.trim());
-        String checkSign2 = Disguiser.disguiseMD5(oriMessage2.trim());
-        String checkSign3 = Disguiser.disguiseMD5(oriMessage3.trim());
-        String checkSign4 = Disguiser.disguiseMD5(oriMessage4.trim());
-        boolean b = sign.equals(checkSign1) || sign.equals(checkSign2) || sign.equals(checkSign3) || sign.equals(checkSign4);
+        boolean b = sign.equals(checkSign1);
         if (!b) {
             return "验签失败!";
         }
@@ -471,14 +465,8 @@ public class HeliPayNonOrderServiceImpl implements HeliPayNonOrderService {
         // 公钥验签
         String oriMessage = MyBeanUtils.getSigned(res, null);
         String oriMessage1 = oriMessage + Constant.SPLIT + Constant.SAOMA;
-        String oriMessage2 = oriMessage + Constant.SPLIT + Constant.FENZHANG;
-        String oriMessage3 = oriMessage + Constant.SPLIT + Constant.XUNI;
-        String oriMessage4 = oriMessage + Constant.SPLIT + Constant.WANGYIN;
         String checkSign1 = Disguiser.disguiseMD5(oriMessage1.trim());
-        String checkSign2 = Disguiser.disguiseMD5(oriMessage2.trim());
-        String checkSign3 = Disguiser.disguiseMD5(oriMessage3.trim());
-        String checkSign4 = Disguiser.disguiseMD5(oriMessage4.trim());
-        boolean b = sign.equals(checkSign1) || sign.equals(checkSign2) || sign.equals(checkSign3) || sign.equals(checkSign4);
+        boolean b = sign.equals(checkSign1);
         if (!b) {
             return "验签失败!";
         }
@@ -720,14 +708,8 @@ public class HeliPayNonOrderServiceImpl implements HeliPayNonOrderService {
         // 公钥验签
         String oriMessage = MyBeanUtils.getSigned(res, null);
         String oriMessage1 = oriMessage + Constant.SPLIT + Constant.SAOMA;
-        String oriMessage2 = oriMessage + Constant.SPLIT + Constant.FENZHANG;
-        String oriMessage3 = oriMessage + Constant.SPLIT + Constant.XUNI;
-        String oriMessage4 = oriMessage + Constant.SPLIT + Constant.WANGYIN;
         String checkSign1 = Disguiser.disguiseMD5(oriMessage1.trim());
-        String checkSign2 = Disguiser.disguiseMD5(oriMessage2.trim());
-        String checkSign3 = Disguiser.disguiseMD5(oriMessage3.trim());
-        String checkSign4 = Disguiser.disguiseMD5(oriMessage4.trim());
-        boolean b = sign.equals(checkSign1) || sign.equals(checkSign2) || sign.equals(checkSign3) || sign.equals(checkSign4);
+        boolean b = sign.equals(checkSign1);
         if (!b) {
             return "验签失败!";
         }
@@ -1004,15 +986,9 @@ public class HeliPayNonOrderServiceImpl implements HeliPayNonOrderService {
         log.info("回调签名" + sign);
         // 公钥验签
         String oriMessage = MyBeanUtils.getSigned(data, null);
-        String oriMessage1 = oriMessage + Constant.SPLIT + Constant.SAOMA;
-        String oriMessage2 = oriMessage + Constant.SPLIT + Constant.FENZHANG;
-        String oriMessage3 = oriMessage + Constant.SPLIT + Constant.XUNI;
         String oriMessage4 = oriMessage + Constant.SPLIT + Constant.WANGYIN;
-        String checkSign1 = Disguiser.disguiseMD5(oriMessage1.trim());
-        String checkSign2 = Disguiser.disguiseMD5(oriMessage2.trim());
-        String checkSign3 = Disguiser.disguiseMD5(oriMessage3.trim());
         String checkSign4 = Disguiser.disguiseMD5(oriMessage4.trim());
-        boolean b = sign.equals(checkSign1) || sign.equals(checkSign2) || sign.equals(checkSign3) || sign.equals(checkSign4);
+        boolean b = sign.equals(checkSign4);
         if (!b) {
             return "验签失败!";
         }
@@ -1135,20 +1111,7 @@ public class HeliPayNonOrderServiceImpl implements HeliPayNonOrderService {
             }
         }
         //修改分账付款状态
-        //合利宝无立即回调,这里用唯一订单id查,然后把真实mborderid存进去
-        BigDecimal totalAmount = BigDecimal.ZERO;
-        //12企业17个人
-        if ("12".equals(payType)) {
-            //vipprice-(vipprice-10手续费)*(1-0.1%)分账手续费
-            totalAmount = MathUtil.mul(MathUtil.sub(amount, 10), 0.999);
-        } else if ("17".equals(payType)) {
-            //vipprice-(vipprice-0.2%*vipprice手续费)*(1-0.1%)
-            totalAmount = MathUtil.mul(MathUtil.mul(amount, 0.998), 0.999);
-        } else {
-            log.info("二手网银分账类型参数payType错误======================》" + payType);
-            return "SUCCESS";
-        }
-//        split(data.getRt5_orderId(), totalAmount);
+        payOrderMapper.updateSplitAccount(mbOrderId,orderRequestNo);
         return "SUCCESS";
     }
 
@@ -1159,15 +1122,9 @@ public class HeliPayNonOrderServiceImpl implements HeliPayNonOrderService {
         log.info("回调签名" + sign);
         // 公钥验签
         String oriMessage = MyBeanUtils.getSigned(res, null);
-        String oriMessage1 = oriMessage + Constant.SPLIT + Constant.SAOMA;
-        String oriMessage2 = oriMessage + Constant.SPLIT + Constant.FENZHANG;
-        String oriMessage3 = oriMessage + Constant.SPLIT + Constant.XUNI;
         String oriMessage4 = oriMessage + Constant.SPLIT + Constant.WANGYIN;
-        String checkSign1 = Disguiser.disguiseMD5(oriMessage1.trim());
-        String checkSign2 = Disguiser.disguiseMD5(oriMessage2.trim());
-        String checkSign3 = Disguiser.disguiseMD5(oriMessage3.trim());
         String checkSign4 = Disguiser.disguiseMD5(oriMessage4.trim());
-        boolean b = sign.equals(checkSign1) || sign.equals(checkSign2) || sign.equals(checkSign3) || sign.equals(checkSign4);
+        boolean b = sign.equals(checkSign4);
         if (!b) {
             return "验签失败!";
         }
@@ -1225,20 +1182,7 @@ public class HeliPayNonOrderServiceImpl implements HeliPayNonOrderService {
         // 保存 收款项和订单关系
         baseMapper.insertOrderReceiptRelation(relation);
         //修改分账付款状态
-        //合利宝无立即回调,这里用唯一订单id查,然后把真实mborderid存进去
-        BigDecimal totalAmount = BigDecimal.ZERO;
-        //12企业17个人
-        if ("12".equals(payType)) {
-            //100-(100-10手续费)*0.1%分账手续费
-            totalAmount = MathUtil.mul(90, 0.999);
-        } else if ("17".equals(payType)) {
-            //100-(100-0.2%*100手续费)*0.1%
-            totalAmount = MathUtil.mul(99.8, 0.999);
-        } else {
-            log.info("二手网银分账类型参数payType错误======================》" + payType);
-            return "SUCCESS";
-        }
-//        split(res.getRt5_orderId(), totalAmount);
+        payOrderMapper.updateSplitAccount(mbOrderId,res.getRt5_orderId());
         return "SUCCESS";
     }
 
@@ -1477,58 +1421,18 @@ public class HeliPayNonOrderServiceImpl implements HeliPayNonOrderService {
         baseMapper.insertOrderReceiptRelation(relation);
         log.info("【购买优惠券异步回调】>>>>>>>>>>>收款项和购买历史关系(insert[cm_receipt_order_relation])id:" + relation.getId() + ",couponRecordId:" + recordId);
         //修改分账付款状态
-        payOrderMapper.updateSplitAccountByPay(mbOrderId);
+        payOrderMapper.updateSplitAccount(mbOrderId,orderRequestNo);
         return "SUCCESS";
     }
 
-    void split(String orderId, BigDecimal totalAmount) {
-        log.info("超级会员/二手发布网银支付回调分账开始================================分账金额 》 " + totalAmount);
-        try {
-            AccountPayOrder accountPayOrder = new AccountPayOrder();
-            accountPayOrder.setP1_bizType("AccountPaySub");
-            accountPayOrder.setP2_signType("MD5");
-            accountPayOrder.setP3_timestamp(new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss.SSS").format(new Date()));
-            // fz+原唯一订单号
-            accountPayOrder.setP4_orderId("FZ" + orderId);
-            //付款账户商编
-            accountPayOrder.setP5_customerNumber(Constant.CUSTOMERNUM2);
-            AccountPayOrder.AccountPayOrderExt accountPayOrderExt = new AccountPayOrder.AccountPayOrderExt();
-            //收款账户商编
-            accountPayOrderExt.setInMerchantNo(Constant.CUSTOMERNUM);
-            accountPayOrderExt.setOrderType(AccountPayOrderType.TRANSFER);
-            accountPayOrderExt.setAmount(totalAmount);
-            //todo 二手/vip的网银支付无法立即分账,这里放在支付回调里面分账,暂不设置回调
-            //accountPayOrderExt.setServerCallbackUrl(callUrl);
-            accountPayOrderExt.setGoodsName("分账");
-            String ext = JSON.toJSONString(accountPayOrderExt);
-            accountPayOrder.setP6_ext(ext);
-            // 生成签名
-            StringBuilder builder = new StringBuilder();
-            builder.append(SPLIT)
-                    .append(accountPayOrder.getP1_bizType()).append(SPLIT)
-                    .append(accountPayOrder.getP2_signType()).append(SPLIT)
-                    .append(accountPayOrder.getP3_timestamp()).append(SPLIT)
-                    .append(accountPayOrder.getP4_orderId()).append(SPLIT)
-                    .append(accountPayOrder.getP5_customerNumber()).append(SPLIT)
-                    .append(accountPayOrder.getP6_ext()).append(SPLIT)
-                    .append(Constant.FENZHANG);
-            String sign = Disguiser.disguiseMD5(builder.toString());
-            Map<String, String> bean = HeliPayServiceImpl.convertBean(accountPayOrder);
-            Map<String, String> map = HeliPayServiceImpl.postForm(bean, Constant.FZ, sign, Map.class);
-            if (map != null) {
-                String code = map.get("rt5_retCode");
-                if (!"0000".equals(code)) {
-                    String msg = map.get("rt6_retMsg");
-                    log.info("【二手/vip网银立即分账失败】>>>>>>>>>>立即分账失败>>>>>>>msg:" + msg);
-                } else {
-                    //分账成功改变分账状态
-                    payOrderMapper.updateSplitAccount(map.get("rt9_serialNumber"), orderId);
-                    log.info("【二手/vip网银立即分账成功】>>>>>>>>>>此订单分账结束");
-                }
-            }
-        } catch (Exception e) {
-            log.error("【二手/vip网银立即分账失败】>>>>>>>>>>错误信息", e);
+    @Override
+    public ResponseJson couponCheck(Integer couponRecordId) {
+        Integer status = payOrderMapper.findPayStatus(couponRecordId);
+        if (null != status && 1 == status) {
+            return ResponseJson.success("支付成功", null);
         }
+        return ResponseJson.error("支付失败", null);
     }
+
 }