From 63dbede8fd302de185b4ea7e085cbc9fab7419ec Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期一, 13 一月 2025 11:07:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java                                     |    4 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java                       |    8 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/TransferUtil.java                   |   13 +--
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java              |    3 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java            |   30 ++++++-
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/payment/TransferUtil.java                       |   45 ++++++-----
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java             |    1 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java               |   17 +++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserCouponClient.java            |   19 ++++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/payment/TransferUtil.java                       |   40 +++------
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserCouponClientFallbackFactory.java |   11 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java             |   23 +++++
 12 files changed, 153 insertions(+), 61 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserCouponClientFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserCouponClientFallbackFactory.java
index 2438809..5371e8d 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserCouponClientFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserCouponClientFallbackFactory.java
@@ -1,6 +1,7 @@
 package com.ruoyi.account.api.factory;
 
 import com.ruoyi.account.api.feignClient.UserCouponClient;
+import com.ruoyi.account.api.model.UserCoupon;
 import com.ruoyi.account.api.vo.CouponInfoVo;
 import com.ruoyi.account.api.vo.PaymentUserCoupon;
 import com.ruoyi.account.api.vo.PaymentUserCouponVo;
@@ -32,6 +33,16 @@
 			public R<Long> getCouponCount(Integer couponId) {
 				return R.fail("根据优惠券id获取优惠券数量失败:" + cause.getMessage());
 			}
+
+			@Override
+			public R<UserCoupon> getUserCoupon(Long id) {
+				return R.fail("获取用户优惠券失败:" + cause.getMessage());
+			}
+
+			@Override
+			public R editUserCoupon(UserCoupon userCoupon) {
+				return R.fail("编辑用户优惠券失败:" + cause.getMessage());
+			}
 		};
 	}
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserCouponClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserCouponClient.java
index 6f75679..2a05f83 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserCouponClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserCouponClient.java
@@ -1,6 +1,7 @@
 package com.ruoyi.account.api.feignClient;
 
 import com.ruoyi.account.api.factory.UserCouponClientFallbackFactory;
+import com.ruoyi.account.api.model.UserCoupon;
 import com.ruoyi.account.api.vo.CouponInfoVo;
 import com.ruoyi.account.api.vo.PaymentUserCoupon;
 import com.ruoyi.account.api.vo.PaymentUserCouponVo;
@@ -40,4 +41,22 @@
 
 	@GetMapping("/user-coupon/getCouponCount")
 	R<Long> getCouponCount(@RequestParam("couponId") Integer couponId);
+
+
+	/**
+	 * 获取用户优惠券
+	 * @param id
+	 * @return
+	 */
+	@PostMapping("/user-coupon/getUserCoupon")
+	R<UserCoupon> getUserCoupon(@RequestParam("id") Long id);
+
+
+	/**
+	 * 编辑用户优惠券
+	 * @param userCoupon
+	 * @return
+	 */
+	@PostMapping("/user-coupon/editUserCoupon")
+	R editUserCoupon(@RequestBody UserCoupon userCoupon);
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java
index 6442849..5ca828a 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java
@@ -99,6 +99,10 @@
     @TableField("good_amount")
     private BigDecimal goodAmount;
 
+    @ApiModelProperty(value = "用户优惠券id")
+    @TableField("user_coupon_id")
+    private Long userCouponId;
+
     @ApiModelProperty(value = "活动优惠金额")
     @TableField("activity_amount")
     private BigDecimal activityAmount;
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
index f808871..28eb386 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
@@ -326,5 +326,28 @@
         userCouponService.updateById(userCoupon);
         return R.ok();
     }
+
+
+    /**
+     * 获取用户优惠券详情
+     * @param id
+     * @return
+     */
+    @PostMapping("/getUserCoupon")
+    public R<UserCoupon> getUserCoupon(@RequestParam("id") Long id){
+        UserCoupon userCoupon = userCouponService.getById(id);
+        return R.ok(userCoupon);
+    }
+
+
+    /**
+     * 编辑用户优惠券
+     * @return
+     */
+    @PostMapping("/editUserCoupon")
+    public R editUserCoupon(@RequestBody UserCoupon userCoupon){
+        userCouponService.updateById(userCoupon);
+        return R.ok();
+    }
 }
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
index 150588f..6fe833e 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -287,6 +287,7 @@
 			appUser = appUser1;
 		}else if(null == appUser){
 			appUser = new AppUser();
+			appUser.setAvatar(registerAccount.getAvatar());
 			appUser.setName(registerAccount.getName());
 			appUser.setPhone(registerAccount.getPhone());
 			appUser.setWxOpenid(openid);
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/TransferUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/TransferUtil.java
index d8dbcab..6ce1a8b 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/TransferUtil.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/TransferUtil.java
@@ -56,7 +56,7 @@
 		//商户编号
 		body.put("userNo", merchantNo);
 		//报备商户号
-		body.put("tradeMerchantNo", singlePay.getTradeMerchantNo());
+//		body.put("tradeMerchantNo", singlePay.getTradeMerchantNo());
 		//产品类型
 		body.put("productCode", "BANK_PAY_DAILY_ORDER");
 		//交易请求时间
@@ -216,17 +216,11 @@
 	
 	
 	public static String sign(JSONObject body) {
+		//构建字段顺序必须按照文档签名顺序
 		Set<Map.Entry<String, Object>> entries = body.entrySet();
-		List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(entries);
-		// 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)
-		Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() {
-			public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
-				return (o1.getKey()).compareTo(o2.getKey());
-			}
-		});
 		// 构造签名键值对的格式
 		StringBuilder sb = new StringBuilder();
-		for (Map.Entry<String, Object> item : infoIds) {
+		for (Map.Entry<String, Object> item : entries) {
 			if (item.getKey() != null || item.getKey() != "") {
 				Object val = item.getValue();
 				if (!(val == "" || val == null)) {
@@ -235,6 +229,7 @@
 			}
 		}
 		sb.append(key);
+		log.info("待签名串:{}", sb.toString());
 		return MD5AndKL.MD5(sb.toString());
 	}
 	
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
index bad6bc9..3a3a40b 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
@@ -68,6 +68,9 @@
             List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>()
                     .eq(OrderGood::getOrderId, order.getId()));
             AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
+            if(null == appUser){
+                return;
+            }
             //直推上级分佣金额
             BigDecimal ztsj_price = BigDecimal.ZERO;
             //直帮上级分佣金额
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
index 4010b15..0bad0c1 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -500,9 +500,11 @@
 				}
 			}
 
-			confirmOrderVo.setActivityName(activityInfo1.getActivityName());
-			paymentMoney = paymentMoney.subtract(zyh);
-			activityAmount = activityAmount.add(zyh);
+			if(null != activityInfo1){
+				confirmOrderVo.setActivityName(activityInfo1.getActivityName());
+				paymentMoney = paymentMoney.subtract(zyh);
+				activityAmount = activityAmount.add(zyh);
+			}
 		}
 		confirmOrderVo.setDiscountAmount(activityAmount);
 		int earnPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getEarnSpendingPoints).sum();
@@ -871,7 +873,6 @@
 				}
 			}
 
-			discount = orderActivityInfo1.getDiscount();
 			paymentMoney = paymentMoney.subtract(zyh);
 			activityAmount = activityAmount.add(zyh);
 		}
@@ -938,6 +939,7 @@
 		}
 		if(3 != shoppingCartPayment.getPaymentType() && (fullReductionAmount.compareTo(BigDecimal.ZERO) > 0 ||moneyAmount.compareTo(BigDecimal.ZERO) > 0 || discountAmount.compareTo(BigDecimal.ZERO) > 0)){
 			order.setCouponJson(JSON.toJSONString(couponInfoVo));
+			order.setUserCouponId(shoppingCartPayment.getUserCouponId());
 		}
 		if(null != orderActivityInfo1){
 			order.setActivityJson(JSON.toJSONString(orderActivityInfo1));
@@ -1136,6 +1138,15 @@
 			orderService.updateById(order);
 			//删除购物车数据
 			this.removeBatchByIds(ids);
+			//处理优惠券
+			if(null != order.getUserCouponId()){
+				UserCoupon userCoupon = userCouponClient.getUserCoupon(order.getUserCouponId()).getData();
+				if(null != userCoupon && 1 == userCoupon.getStatus()){
+					userCoupon.setStatus(2);
+					userCoupon.setUseTime(LocalDateTime.now());
+					userCouponClient.editUserCoupon(userCoupon);
+				}
+			}
 		}
 		//积分支付
 		if(3 == shoppingCartPayment.getPaymentType()){
@@ -1339,6 +1350,17 @@
 			order.setOrderStatus(2);
 		}
 		orderService.updateById(order);
+
+		//处理优惠券
+		if(null != order.getUserCouponId()){
+			UserCoupon userCoupon = userCouponClient.getUserCoupon(order.getUserCouponId()).getData();
+			if(null != userCoupon && 1 == userCoupon.getStatus()){
+				userCoupon.setStatus(2);
+				userCoupon.setUseTime(LocalDateTime.now());
+				userCouponClient.editUserCoupon(userCoupon);
+			}
+		}
+
 		//删除购物车数据
 		Long userid = tokenService.getLoginUserApplet().getUserid();
 		List<OrderGood> list = orderGoodService.list(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, order.getId()));
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/payment/TransferUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/payment/TransferUtil.java
index 9d04792..5d457f9 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/payment/TransferUtil.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/payment/TransferUtil.java
@@ -28,10 +28,18 @@
 	 * 商户号
 	 */
 	private static final String merchantNo = "888122600004175";
-	
+	/**
+	 * 平台-报备商户号
+	 */
+	public static final String sysTradeMerchantNo = "777168500885852";
+
 	private static final String format = "yyyy-MM-dd HH:mm:ss";
-	
-	
+	/**
+	 * 支付回调地址
+	 */
+	private static final String callbackUrl = "http://221.182.45.100:9000";
+
+
 	/**
 	 * 单笔代付
 	 * @param singlePay
@@ -45,7 +53,7 @@
 		//商户编号
 		body.put("userNo", merchantNo);
 		//报备商户号
-		body.put("tradeMerchantNo", singlePay.getTradeMerchantNo());
+//		body.put("tradeMerchantNo", singlePay.getTradeMerchantNo());
 		//产品类型
 		body.put("productCode", "BANK_PAY_DAILY_ORDER");
 		//交易请求时间
@@ -83,7 +91,7 @@
 		 */
 		body.put("paidUse", singlePay.getPaidUse());
 		//商户通知地址
-		body.put("callbackUrl", singlePay.getCallbackUrl());
+		body.put("callbackUrl", callbackUrl + singlePay.getCallbackUrl());
 		String sign = null;
 		try {
 			sign = sign(body);
@@ -113,8 +121,8 @@
 		SinglePayResult uniPayResult = jsonObject.getObject("data", SinglePayResult.class);
 		return uniPayResult;
 	}
-	
-	
+
+
 	/**
 	 * 单笔代付查询接口
 	 * @param merchantOrderNo   订单号
@@ -158,8 +166,8 @@
 		SinglePayQueryResult uniPayResult = jsonObject.getObject("data", SinglePayQueryResult.class);
 		return uniPayResult;
 	}
-	
-	
+
+
 	/**
 	 * 可取余额查询
 	 * @return
@@ -200,22 +208,16 @@
 		AccountBalanceQueryResult uniPayResult = jsonObject.getObject("data", AccountBalanceQueryResult.class);
 		return uniPayResult;
 	}
-	
-	
-	
-	
+
+
+
+
 	public static String sign(JSONObject body) {
+		//构建字段顺序必须按照文档签名顺序
 		Set<Map.Entry<String, Object>> entries = body.entrySet();
-		List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(entries);
-		// 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)
-		Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() {
-			public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
-				return (o1.getKey()).compareTo(o2.getKey());
-			}
-		});
 		// 构造签名键值对的格式
 		StringBuilder sb = new StringBuilder();
-		for (Map.Entry<String, Object> item : infoIds) {
+		for (Map.Entry<String, Object> item : entries) {
 			if (item.getKey() != null || item.getKey() != "") {
 				Object val = item.getValue();
 				if (!(val == "" || val == null)) {
@@ -224,6 +226,7 @@
 			}
 		}
 		sb.append(key);
+		log.info("待签名串:{}", sb.toString());
 		return MD5AndKL.MD5(sb.toString());
 	}
 	
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
index ff9f10e..ee2356d 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -187,6 +187,14 @@
     @DeleteMapping("/deleteShop")
     @ApiOperation(value = "删除门店", tags = {"管理后台-门店管理"})
     public R<Void> deleteShop(@ApiParam("门店id") @RequestParam("id") Integer id){
+        List<Goods> list1 = goodsService.list(new LambdaQueryWrapper<Goods>().eq(Goods::getDelFlag, 0).eq(Goods::getAppointStore, 1).eq(Goods::getStatus, 2));
+        if(list1.size() > 0){
+            Set<Integer> collect1 = list1.stream().map(Goods::getId).collect(Collectors.toSet());
+            long count = goodsShopService.count(new LambdaQueryWrapper<GoodsShop>().eq(GoodsShop::getShopId, id).in(GoodsShop::getGoodsId, collect1));
+            if(0 < count){
+                return R.fail("门店已被商品使用,不能删除");
+            }
+        }
         Shop shop = shopService.getById(id);
         shop.setDelFlag(1);
         shopService.updateById(shop);
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java
index cce5829..883a4c3 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java
@@ -3,13 +3,17 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.other.api.domain.ShopPoint;
 import com.ruoyi.other.api.enums.PointChangeType;
 import com.ruoyi.other.mapper.ShopPointMapper;
 import com.ruoyi.other.service.ShopPointService;
 import com.ruoyi.other.vo.ShopPointStatistics;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysUserClient;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
@@ -29,8 +33,18 @@
 @Service
 public class ShopPointServiceImpl extends ServiceImpl<ShopPointMapper, ShopPoint> implements ShopPointService {
 
+    @Resource
+    private TokenService tokenService;
+    @Resource
+    private SysUserClient sysUserClient;
+
+
+
+
     @Override
     public ShopPointStatistics statistics(IPage<ShopPoint> page, ShopPoint shopPoint) {
+        Long userid = tokenService.getLoginUser().getUserid();
+        SysUser sysUser = sysUserClient.getSysUser(userid).getData();
         List<ShopPoint> shopPoints = this.baseMapper.selectShopPointList(shopPoint);
         Map<Integer, Integer> shopPointMap = shopPoints.stream()
                 .collect(Collectors.groupingBy(
@@ -54,8 +68,7 @@
         LocalDateTime endTime = shopPoint.getEndTime();
         if(null != startTime){
             List<ShopPoint> list = this.list(new LambdaUpdateWrapper<ShopPoint>()
-                    // todo bug说应展示所有门店积分数据
-//                    .eq(ShopPoint::getShopId, shopPoint.getShopId())
+                    .eq(ShopPoint::getShopId, sysUser.getObjectId())
                     .last(" and create_time between '" + startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "' and '" + endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "'"));
             List<String> date = new ArrayList<>();
             List<Map<String, Integer>> data = new ArrayList<>();
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/payment/TransferUtil.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/payment/TransferUtil.java
index 9525a52..a54b3ec 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/payment/TransferUtil.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/payment/TransferUtil.java
@@ -35,14 +35,14 @@
 	 * 平台-报备商户号
 	 */
 	public static final String sysTradeMerchantNo = "777168500885852";
-	
+
 	private static final String format = "yyyy-MM-dd HH:mm:ss";
 	/**
 	 * 支付回调地址
 	 */
 	private static final String callbackUrl = "http://221.182.45.100:9000";
-	
-	
+
+
 	/**
 	 * 单笔代付
 	 * @param singlePay
@@ -56,7 +56,7 @@
 		//商户编号
 		body.put("userNo", merchantNo);
 		//报备商户号
-		body.put("tradeMerchantNo", singlePay.getTradeMerchantNo());
+//		body.put("tradeMerchantNo", singlePay.getTradeMerchantNo());
 		//产品类型
 		body.put("productCode", "BANK_PAY_DAILY_ORDER");
 		//交易请求时间
@@ -124,8 +124,8 @@
 		SinglePayResult uniPayResult = jsonObject.getObject("data", SinglePayResult.class);
 		return uniPayResult;
 	}
-	
-	
+
+
 	/**
 	 * 单笔代付查询接口
 	 * @param merchantOrderNo   订单号
@@ -169,8 +169,8 @@
 		SinglePayQueryResult uniPayResult = jsonObject.getObject("data", SinglePayQueryResult.class);
 		return uniPayResult;
 	}
-	
-	
+
+
 	/**
 	 * 可取余额查询
 	 * @return
@@ -211,22 +211,16 @@
 		AccountBalanceQueryResult uniPayResult = jsonObject.getObject("data", AccountBalanceQueryResult.class);
 		return uniPayResult;
 	}
-	
-	
-	
-	
+
+
+
+
 	public static String sign(JSONObject body) {
+		//构建字段顺序必须按照文档签名顺序
 		Set<Map.Entry<String, Object>> entries = body.entrySet();
-		List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(entries);
-		// 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)
-		Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() {
-			public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
-				return (o1.getKey()).compareTo(o2.getKey());
-			}
-		});
 		// 构造签名键值对的格式
 		StringBuilder sb = new StringBuilder();
-		for (Map.Entry<String, Object> item : infoIds) {
+		for (Map.Entry<String, Object> item : entries) {
 			if (item.getKey() != null || item.getKey() != "") {
 				Object val = item.getValue();
 				if (!(val == "" || val == null)) {
@@ -235,12 +229,8 @@
 			}
 		}
 		sb.append(key);
+		log.info("待签名串:{}", sb.toString());
 		return MD5AndKL.MD5(sb.toString());
-	}
-	
-	
-	public static void main(String[] args) {
-		TransferUtil.accountBalanceQuery();
 	}
 	
 }

--
Gitblit v1.7.1