Переглянути джерело

微信app支付接口支付成功结果处理,阿里支付依赖

ZhangWenQiang 6 роки тому
батько
коміт
1db1dfc929

+ 3 - 0
happy-job-module-hpjob/src/main/java/com/jeeplus/modules/sys/mapper/HpMemberMapper.java

@@ -7,6 +7,7 @@ import com.jeeplus.core.persistence.BaseMapper;
 import com.jeeplus.core.persistence.annotation.MyBatisMapper;
 import com.jeeplus.modules.sys.entity.HpMember;
 import com.jeeplus.modules.sys.entity.HpMemberForExport;
+import com.jeeplus.modules.sys.entity.HpUser;
 import com.jeeplus.modules.vipmanager.entity.MpMemberAccountF;
 import com.jeeplus.modules.vipmanager.entity.MpMemberTaskF;
 
@@ -37,4 +38,6 @@ public interface HpMemberMapper extends BaseMapper<HpMember> {
     void saveMpMemberTask(MpMemberTaskF mpMemberTaskF);
 
     int getCountForNewTask(String id, String taskId);
+
+    HpMember getByUserId(String id);
 }

+ 6 - 0
happy-job-module-hpjob/src/main/java/com/jeeplus/modules/sys/mapper/xml/HpMemberMapper.xml

@@ -451,4 +451,10 @@
 		where a.member_id = #{0}
 		and a.task_id = #{1}
 	</select>
+
+	<select id="getByUserId" resultType="HpMember">
+		select a.id
+		from hp_member a
+		where a.user_id = #{0}
+	</select>
 </mapper>

+ 5 - 0
happy-job-module-hpjob/src/main/java/com/jeeplus/modules/sys/service/HpMemberService.java

@@ -14,6 +14,7 @@ import com.jeeplus.modules.hpuser.entity.HpUserContact;
 import com.jeeplus.modules.hpuser.service.*;
 import com.jeeplus.modules.sys.entity.HpMember;
 import com.jeeplus.modules.sys.entity.HpMemberForExport;
+import com.jeeplus.modules.sys.entity.HpUser;
 import com.jeeplus.modules.sys.mapper.HpMemberMapper;
 import com.jeeplus.modules.vipmanager.entity.MpMemberAccountF;
 import com.jeeplus.modules.vipmanager.entity.MpMemberTaskF;
@@ -188,4 +189,8 @@ public class HpMemberService extends CrudService<HpMemberMapper, HpMember> {
     public int getCountForNewTask(String id, String taskId) {
         return mapper.getCountForNewTask(id, taskId);
     }
+
+    public HpMember getByUserId(String id) {
+        return mapper.getByUserId(id);
+    }
 }

+ 6 - 0
happy-job-module-hppay/pom.xml

@@ -33,5 +33,11 @@
             <artifactId>happy-job-base-common</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
+        <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
+        <dependency>
+            <groupId>com.alipay.sdk</groupId>
+            <artifactId>alipay-sdk-java</artifactId>
+            <version>4.8.10.ALL</version>
+        </dependency>
     </dependencies>
 </project>

+ 5 - 0
happy-job-module-hppay/src/main/java/com/jeeplus/modules/alipay/utils/AliPay.java

@@ -1,9 +1,14 @@
 package com.jeeplus.modules.alipay.utils;
 
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
 /**
  * @Author: zwq
  * @Description:支付宝支付接口
  * @Date: Create in 10:32 2019/11/5
  */
+@RestController
+@RequestMapping(value = "/aliPay")
 public class AliPay {
 }

+ 15 - 17
happy-job-module-hpvip/src/main/java/com/jeeplus/modules/api/ordermanager/OrderMinaPayAPI.java

@@ -2,6 +2,7 @@ package com.jeeplus.modules.api.ordermanager;
 
 import com.jeeplus.common.config.Global;
 import com.jeeplus.modules.api.sys.BaseAppController;
+import com.jeeplus.modules.moneymanager.service.MpMoneyDetailService;
 import com.jeeplus.modules.mporder.entity.MpMemberOrder;
 import com.jeeplus.modules.mporder.service.MpMemberOrderService;
 import com.jeeplus.modules.wechatpay.utils.CommUtil;
@@ -19,7 +20,6 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Date;
 import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
@@ -34,6 +34,8 @@ import java.util.TreeMap;
 public class OrderMinaPayAPI extends BaseAppController {
     @Autowired
     private MpMemberOrderService mpMemberOrderService;
+    @Autowired
+    private MpMoneyDetailService mpMoneyDetailService;
     //服务器支付域名
     String path = Global.getPayPath();
 
@@ -54,7 +56,7 @@ public class OrderMinaPayAPI extends BaseAppController {
             String orderId = requestMap.get("orderId");
             MpMemberOrder mpMemberOrder = mpMemberOrderService.get(orderId);
             // 粉丝ID
-            String memberId = requestMap.get("member_id");
+            String userId = requestMap.get("user_id");
             // 通知地址(接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。)
             String notifyUrl = null;
             // 商品描述
@@ -67,7 +69,7 @@ public class OrderMinaPayAPI extends BaseAppController {
             double money = mpMemberOrder.getActuallymoney();
 
             SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
-            parameters.put("fansId", memberId);
+            parameters.put("fansId", userId);
             parameters.put("out_trade_no", mpMemberOrder.getOrderNumber());
             parameters.put("total_fee", money * 100);
             parameters.put("body", body);
@@ -147,20 +149,16 @@ public class OrderMinaPayAPI extends BaseAppController {
             String trade_state = paramJson.getString("trade_state");
             if (trade_state.equals("SUCCESS")) {
                 System.out.println(result + "=====================付款成功后回调2================================");
-                // 返回成功,处理订单状态
-                MpMemberOrder mpMemberOrder = mpMemberOrderService.getByOrderNumber(orderNumber);
-                mpMemberOrder.setPayTime(new Date());
-                mpMemberOrder.setOrderStatus(3);
-                mpMemberOrderService.save(mpMemberOrder);
-                System.out.println("============发送模板消息(下单成功通知)=======================");
-                try {
-                    String url = "pages/index/index";
-                    // 发送模板消息
-//                    sendMessage.wcsMessage(wcsOrder, wcsOrder.getPrepayId(), url);
-                } catch (Exception e) {
-                    System.out.println("发送模板消息失败============================");
-                    e.printStackTrace();
-                }
+                //粉丝id
+                String userId = paramJson.getString("fansId");
+                //订单金额
+                String total_fee = paramJson.getString("total_fee");
+                /**
+                 * 返回成功
+                 * 处理订单,会员账户等信息
+                 */
+                mpMoneyDetailService.paySuccess(orderNumber, userId, total_fee);
+
                 response.getWriter().write(WxCommonUtil.setXML("SUCCESS", "OK"));
             }
         } else {

+ 23 - 69
happy-job-module-hpvip/src/main/java/com/jeeplus/modules/api/ordermanager/OrderWeChatPayAPI.java

@@ -1,9 +1,18 @@
 package com.jeeplus.modules.api.ordermanager;
 
 import com.jeeplus.common.config.Global;
+import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.modules.api.sys.BaseAppController;
+import com.jeeplus.modules.moneymanager.entity.MpMoneyDetail;
+import com.jeeplus.modules.moneymanager.service.MpMoneyDetailService;
 import com.jeeplus.modules.mporder.entity.MpMemberOrder;
 import com.jeeplus.modules.mporder.service.MpMemberOrderService;
+import com.jeeplus.modules.sys.entity.HpMember;
+import com.jeeplus.modules.sys.entity.HpUser;
+import com.jeeplus.modules.sys.service.HpMemberService;
+import com.jeeplus.modules.sys.service.HpUserService;
+import com.jeeplus.modules.vipmanager.entity.MpMemberAccount;
+import com.jeeplus.modules.vipmanager.mapper.MpMemberAccountMapper;
 import com.jeeplus.modules.wechatpay.utils.CommUtil;
 import com.jeeplus.modules.wechatpay.utils.WxCommonUtil;
 import net.sf.json.JSONArray;
@@ -34,6 +43,8 @@ import java.util.TreeMap;
 public class OrderWeChatPayAPI extends BaseAppController {
     @Autowired
     private MpMemberOrderService mpMemberOrderService;
+    @Autowired
+    private MpMoneyDetailService mpMoneyDetailService;
     //服务器支付域名
     String path = Global.getPayPath();
 
@@ -54,7 +65,7 @@ public class OrderWeChatPayAPI extends BaseAppController {
             String orderId = requestMap.get("orderId");
             MpMemberOrder mpMemberOrder = mpMemberOrderService.get(orderId);
             // 粉丝ID
-            String memberId = requestMap.get("member_id");
+            String userId = requestMap.get("user_id");
             // 通知地址(接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。)
             String notifyUrl = null;
             // 商品描述
@@ -67,7 +78,7 @@ public class OrderWeChatPayAPI extends BaseAppController {
             double money = mpMemberOrder.getActuallymoney();
 
             SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
-            parameters.put("fansId", memberId);
+            parameters.put("fansId", userId);
             parameters.put("out_trade_no", mpMemberOrder.getOrderNumber());
             parameters.put("total_fee", money * 100);
             parameters.put("body", body);
@@ -146,77 +157,20 @@ public class OrderWeChatPayAPI extends BaseAppController {
             String trade_state = paramJson.getString("trade_state");
             if (trade_state.equals("SUCCESS")) {
                 System.out.println(result + "=====================付款成功后回调2================================");
-                // 返回成功,处理订单状态
-                MpMemberOrder mpMemberOrder = mpMemberOrderService.getByOrderNumber(orderNumber);
-                mpMemberOrder.setOrderStatus(3);
-                mpMemberOrder.setPayTime(new Date());
-                mpMemberOrderService.save(mpMemberOrder);
-                System.out.println("============发送模板消息(下单成功通知)=======================");
-                try {
-                    String url = "pages/index/index";
-                    // 发送模板消息
-//                    sendMessage.wcsMessage(wcsOrder, wcsOrder.getPrepayId(), url);
-                } catch (Exception e) {
-                    System.out.println("发送模板消息失败============================");
-                    e.printStackTrace();
-                }
+                //粉丝id
+                String userId = paramJson.getString("fansId");
+                //订单金额
+                String total_fee = paramJson.getString("total_fee");
+                /**
+                 * 返回成功
+                 * 处理订单,会员账户等信息
+                 */
+                mpMoneyDetailService.paySuccess(orderNumber, userId, total_fee);
+
                 response.getWriter().write(WxCommonUtil.setXML("SUCCESS", "OK"));
             }
         } else {
             System.out.println(result + "=====================付款成功后回调3================================");
         }
     }
-
-    /**
-     * 退款
-     *
-     * @param request
-     * @throws IOException
-     * @throws JDOMException
-     */
-    @SuppressWarnings("unchecked")
-    @RequestMapping(value = "/reimburse.do", method = RequestMethod.POST)
-    public void reimburse(HttpServletRequest request, HttpServletResponse response) throws Exception {
-        String url = path + "/happyjob/weChatPay/customerRefund.do";
-        // 获得订单的逐渐id
-        String orderId = request.getParameter("orderId");
-        // 小程序ID
-        String minaId = request.getParameter("minaId");
-        String appId = request.getParameter("appId");
-        try {
-
-            if (!"0".equals(minaId) && minaId != null) {// 小程序ID不为0
-                int refund_fee = 0;
-                // 商户订单号
-                String orderNo = "";
-                // 付款金额
-                SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
-                parameters.put("minaId", minaId);
-                parameters.put("refund_fee", refund_fee + "");
-                parameters.put("out_trade_no", orderNo);
-                parameters.put("total_fee", refund_fee + "");
-                parameters.put("payType", "1");
-
-                String jsonStr = JSONArray.fromObject(parameters).toString();
-                jsonStr = jsonStr.substring(1, jsonStr.length() - 1);
-                // 获取发送后接口返回数据
-                String resultStr = CommUtil.doPost(url, jsonStr);
-
-                JSONObject paramJson = JSONObject.fromObject(resultStr);
-                String minaIdStr = paramJson.getString("minaId");
-                String returnCode = paramJson.getString("return_code");// 退款狀態
-                String returnMsg = paramJson.getString("return_msg");// 返回信息
-
-                if (returnCode.equals("SUCCESS") && returnMsg.equals("SUCCESS")) {
-                    response.getWriter().print("OK");
-//                    wcsOrder.setOrderStatus(7);// 退款成功
-//                    wcsOrder.setUpdateTime(new Date());// 订单更新时间
-//                    wcsOrderService.upData(wcsOrder);
-                }
-            }
-        } catch (Exception e) {
-            System.err.println(e.toString());
-        }
-
-    }
 }

+ 126 - 78
happy-job-module-hpvip/src/main/java/com/jeeplus/modules/moneymanager/service/MpMoneyDetailService.java

@@ -3,16 +3,22 @@
  */
 package com.jeeplus.modules.moneymanager.service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
+import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.modules.api.moneymanager.entity.MpMoneyDetailAPI;
+import com.jeeplus.modules.mporder.entity.MpMemberOrder;
+import com.jeeplus.modules.mporder.service.MpMemberOrderService;
 import com.jeeplus.modules.sys.entity.HpMember;
+import com.jeeplus.modules.sys.entity.HpUser;
+import com.jeeplus.modules.sys.service.HpMemberService;
+import com.jeeplus.modules.sys.service.HpUserService;
 import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.sys.wxUtils.TokenUtil;
+import com.jeeplus.modules.vipmanager.entity.MpMemberAccount;
+import com.jeeplus.modules.vipmanager.mapper.MpMemberAccountMapper;
 import org.apache.commons.lang3.StringEscapeUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -26,88 +32,130 @@ import javax.servlet.http.HttpServletResponse;
 
 /**
  * 会员钱明细Service
+ *
  * @author lifei
  * @version 2019-09-10
  */
 @Service
 @Transactional(readOnly = true)
 public class MpMoneyDetailService extends CrudService<MpMoneyDetailMapper, MpMoneyDetail> {
+    @Autowired
+    private MpMemberOrderService mpMemberOrderService;
+    @Autowired
+    private MpMemberAccountMapper mpMemberAccountMapper;
+    @Autowired
+    private HpMemberService hpMemberService;
+    @Autowired
+    private HpUserService hpUserService;
 
-	public MpMoneyDetail get(String id) {
-		return super.get(id);
-	}
-	
-	public List<MpMoneyDetail> findList(MpMoneyDetail mpMoneyDetail) {
-		return super.findList(mpMoneyDetail);
-	}
-	
-	public Page<MpMoneyDetail> findPage(Page<MpMoneyDetail> page, MpMoneyDetail mpMoneyDetail) {
-		return super.findPage(page, mpMoneyDetail);
-	}
-	
-	@Transactional(readOnly = false)
-	public void save(MpMoneyDetail mpMoneyDetail) {
-		super.save(mpMoneyDetail);
-	}
-	
-	@Transactional(readOnly = false)
-	public void delete(MpMoneyDetail mpMoneyDetail) {
-		super.delete(mpMoneyDetail);
-	}
+    public MpMoneyDetail get(String id) {
+        return super.get(id);
+    }
 
-	/**
-	 * 查询收支明细
-	 * @param requestMap
-	 * @param request
-	 * @param response
-	 * @return
-	 */
-	public Map<String,Object> getMoneyDetail(Map<String,String> requestMap, HttpServletRequest request, HttpServletResponse response) {
-		Map<String, Object> returnMap = new HashMap<String, Object>();
-		String userId = requestMap.get("user_id");
-		String userToken = requestMap.get("user_token");
-		String memberId = requestMap.get("member_id");
-		String pageNo = requestMap.get("pageNo");
-		//验证用户是否处于登录态
-		if (TokenUtil.validateLogin(memberId, userId)) {
-			//验证用户合法性
-			if (TokenUtil.validateToken(userId, userToken)) {
-				MpMoneyDetailAPI mpMoneyDetailAPI=new MpMoneyDetailAPI();
-				HpMember hpMember=new HpMember();
-				hpMember.setId(memberId);
-				mpMoneyDetailAPI.setHpMember(hpMember);
-				Page<MpMoneyDetailAPI> page = findMpMoneyDetailAPIPage(new Page<MpMoneyDetailAPI>(request, response), mpMoneyDetailAPI);
-				if (Integer.parseInt(pageNo) > page.getLast()) {
-					List<MpMoneyDetailAPI> list = new ArrayList<MpMoneyDetailAPI>();
-					returnMap.put("mpMoneyDetailAPIList", list);
-				} else {
-					List<MpMoneyDetailAPI> list1 = page.getList();
-					if (list1 != null && !list1.isEmpty()) {
-						returnMap.put("mpMoneyDetailAPIList", list1);
-						returnMap.put("pageNo", page.getPageNo());
-					} else {
-						returnMap.put("mpMoneyDetailAPIList", list1);
-					}
-					//提示前端是否为最后一页
-					if (Integer.parseInt(pageNo) == page.getLast()) {
-						returnMap.put("isLast", true);
-					} else {
-						returnMap.put("isLast", false);
-					}
-				}
-			} else {
-				returnMap.put("success", "1004");
-			}
-		} else {
-			returnMap.put("success", "2010");
-		}
-		return returnMap;
-	}
+    public List<MpMoneyDetail> findList(MpMoneyDetail mpMoneyDetail) {
+        return super.findList(mpMoneyDetail);
+    }
 
+    public Page<MpMoneyDetail> findPage(Page<MpMoneyDetail> page, MpMoneyDetail mpMoneyDetail) {
+        return super.findPage(page, mpMoneyDetail);
+    }
 
-	private Page<MpMoneyDetailAPI> findMpMoneyDetailAPIPage(Page<MpMoneyDetailAPI> page, MpMoneyDetailAPI mpMoneyDetailAPI) {
-		mpMoneyDetailAPI.setPage(page);
-		page.setList(mapper.findMpMoneyDetailListByMemberId(mpMoneyDetailAPI));
-		return page;
-	}
+    @Transactional(readOnly = false)
+    public void save(MpMoneyDetail mpMoneyDetail) {
+        super.save(mpMoneyDetail);
+    }
+
+    @Transactional(readOnly = false)
+    public void delete(MpMoneyDetail mpMoneyDetail) {
+        super.delete(mpMoneyDetail);
+    }
+
+    /**
+     * 查询收支明细
+     *
+     * @param requestMap
+     * @param request
+     * @param response
+     * @return
+     */
+    public Map<String, Object> getMoneyDetail(Map<String, String> requestMap, HttpServletRequest request, HttpServletResponse response) {
+        Map<String, Object> returnMap = new HashMap<String, Object>();
+        String userId = requestMap.get("user_id");
+        String userToken = requestMap.get("user_token");
+        String memberId = requestMap.get("member_id");
+        String pageNo = requestMap.get("pageNo");
+        //验证用户是否处于登录态
+        if (TokenUtil.validateLogin(memberId, userId)) {
+            //验证用户合法性
+            if (TokenUtil.validateToken(userId, userToken)) {
+                MpMoneyDetailAPI mpMoneyDetailAPI = new MpMoneyDetailAPI();
+                HpMember hpMember = new HpMember();
+                hpMember.setId(memberId);
+                mpMoneyDetailAPI.setHpMember(hpMember);
+                Page<MpMoneyDetailAPI> page = findMpMoneyDetailAPIPage(new Page<MpMoneyDetailAPI>(request, response), mpMoneyDetailAPI);
+                if (Integer.parseInt(pageNo) > page.getLast()) {
+                    List<MpMoneyDetailAPI> list = new ArrayList<MpMoneyDetailAPI>();
+                    returnMap.put("mpMoneyDetailAPIList", list);
+                } else {
+                    List<MpMoneyDetailAPI> list1 = page.getList();
+                    if (list1 != null && !list1.isEmpty()) {
+                        returnMap.put("mpMoneyDetailAPIList", list1);
+                        returnMap.put("pageNo", page.getPageNo());
+                    } else {
+                        returnMap.put("mpMoneyDetailAPIList", list1);
+                    }
+                    //提示前端是否为最后一页
+                    if (Integer.parseInt(pageNo) == page.getLast()) {
+                        returnMap.put("isLast", true);
+                    } else {
+                        returnMap.put("isLast", false);
+                    }
+                }
+            } else {
+                returnMap.put("success", "1004");
+            }
+        } else {
+            returnMap.put("success", "2010");
+        }
+        return returnMap;
+    }
+
+
+    private Page<MpMoneyDetailAPI> findMpMoneyDetailAPIPage(Page<MpMoneyDetailAPI> page, MpMoneyDetailAPI mpMoneyDetailAPI) {
+        mpMoneyDetailAPI.setPage(page);
+        page.setList(mapper.findMpMoneyDetailListByMemberId(mpMoneyDetailAPI));
+        return page;
+    }
+
+    /**
+     * APP/小程序付款成功处理
+     *
+     * @param orderNumber
+     * @param userId
+     * @param total_fee
+     */
+    @Transactional(readOnly = false)
+    public void paySuccess(String orderNumber, String userId, String total_fee) {
+        MpMemberOrder mpMemberOrder = mpMemberOrderService.getByOrderNumber(orderNumber);
+        mpMemberOrder.setOrderStatus(3);
+        mpMemberOrder.setPayTime(new Date());
+        mpMemberOrderService.save(mpMemberOrder);
+        /**
+         * 更新会员账户和明细
+         */
+        HpUser hpUser = hpUserService.get(userId);
+        HpMember hpMember = hpMemberService.getByUserId(hpUser.getId());
+        MpMemberAccount mpMemberAccount = mpMemberAccountMapper.getByMemberId(hpMember.getId());
+        if (StringUtils.isNotBlank(total_fee)) {
+            mpMemberAccount.setMoneyBalance(Double.parseDouble(total_fee));
+            mpMemberAccount.setMoneyDeposit(Double.parseDouble(total_fee));
+            mpMemberAccountMapper.update(mpMemberAccount);
+        }
+        MpMoneyDetail mpMoneyDetail = new MpMoneyDetail();
+        mpMoneyDetail.setHpMember(hpMember);
+        mpMoneyDetail.setMoney(Double.parseDouble(total_fee));
+        mpMoneyDetail.setMoneyType(1);
+        mpMoneyDetail.setDepositType(1);
+        save(mpMoneyDetail);
+    }
 }