|
@@ -1,34 +1,10 @@
|
|
|
package com.iamberry.wechat.handles.pay;
|
|
|
|
|
|
-import java.io.BufferedOutputStream;
|
|
|
-import java.io.IOException;
|
|
|
-import java.io.StringReader;
|
|
|
-import java.net.URLDecoder;
|
|
|
-import java.text.MessageFormat;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Random;
|
|
|
-import java.util.UUID;
|
|
|
-
|
|
|
-import javax.servlet.http.HttpServletRequest;
|
|
|
-import javax.servlet.http.HttpServletResponse;
|
|
|
-
|
|
|
-import com.iamberry.wechat.service.ImberryConfig;
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.jdom.Document;
|
|
|
-import org.jdom.Element;
|
|
|
-import org.jdom.input.SAXBuilder;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.stereotype.Controller;
|
|
|
-import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
-import org.xml.sax.InputSource;
|
|
|
-
|
|
|
import com.iamberry.app.tool.log.RatFWLogger;
|
|
|
import com.iamberry.wechat.core.entity.AdminUtils;
|
|
|
+import com.iamberry.wechat.core.entity.OrderUtil;
|
|
|
import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
|
|
|
+import com.iamberry.wechat.core.entity.agentInfo.AgentOrder;
|
|
|
import com.iamberry.wechat.core.entity.coupon.CouponItem;
|
|
|
import com.iamberry.wechat.core.entity.giftCard.AgentInfo;
|
|
|
import com.iamberry.wechat.core.entity.giftCard.AgentMachine;
|
|
@@ -46,6 +22,7 @@ import com.iamberry.wechat.core.entity.qrcode.QrcodeResult;
|
|
|
import com.iamberry.wechat.core.entity.rent.RentApply;
|
|
|
import com.iamberry.wechat.core.entity.wx.WxPayResult;
|
|
|
import com.iamberry.wechat.face.admin.SystemService;
|
|
|
+import com.iamberry.wechat.face.agentInfo.AgentPurchaseOrderService;
|
|
|
import com.iamberry.wechat.face.cart.CartService;
|
|
|
import com.iamberry.wechat.face.coupon.CouponItemService;
|
|
|
import com.iamberry.wechat.face.giftCard.AgentMachineService;
|
|
@@ -61,12 +38,27 @@ import com.iamberry.wechat.face.order.CodeService;
|
|
|
import com.iamberry.wechat.face.order.ProbationShopOrderService;
|
|
|
import com.iamberry.wechat.face.qrcode.TemporaryQrcodeService;
|
|
|
import com.iamberry.wechat.handles.mq.MQServiceProxy;
|
|
|
-import com.iamberry.wechat.tools.DateTimeUtil;
|
|
|
-import com.iamberry.wechat.tools.NameUtils;
|
|
|
-import com.iamberry.wechat.tools.ResultInfo;
|
|
|
-import com.iamberry.wechat.tools.StaticInfo;
|
|
|
-import com.iamberry.wechat.tools.StrUtils;
|
|
|
+import com.iamberry.wechat.service.ImberryConfig;
|
|
|
+import com.iamberry.wechat.tools.*;
|
|
|
import com.iamberry.wechat.utils.SendMessageUtil;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.jdom.Document;
|
|
|
+import org.jdom.Element;
|
|
|
+import org.jdom.input.SAXBuilder;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Controller;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.xml.sax.InputSource;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.BufferedOutputStream;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.StringReader;
|
|
|
+import java.net.URLDecoder;
|
|
|
+import java.text.MessageFormat;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* @author 何秀刚
|
|
@@ -124,6 +116,8 @@ public class ResponseWechatPayHandler {
|
|
|
private SystemService systemService;
|
|
|
@Autowired
|
|
|
private EfastOrderService efastOrderService;
|
|
|
+ @Autowired
|
|
|
+ private AgentPurchaseOrderService agentPurchaseOrderService;
|
|
|
|
|
|
/**
|
|
|
* 销售订单支付回调方法
|
|
@@ -241,7 +235,7 @@ public class ResponseWechatPayHandler {
|
|
|
message.setServiceHandlerMethodName("addOrderInfoToEfast");
|
|
|
mQservice.insertMQMessage(message);
|
|
|
} catch (Exception e) {
|
|
|
-//System.out.println("===========pay 201 插入返利到百胜失败==============");
|
|
|
+//System.out.println("===========pay 201 插入返利到百胜失败==============");
|
|
|
}
|
|
|
//System.out.println("===========pay 201 插入返利到百胜完成==============");
|
|
|
try { //修改用户购买记录为已购买
|
|
@@ -796,7 +790,98 @@ public class ResponseWechatPayHandler {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 采购商品订单回调
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ */
|
|
|
+ @RequestMapping("/agentPurchaseOrderPayBack")
|
|
|
+ public synchronized void agentPurchaseOrderPayBack(HttpServletRequest request, HttpServletResponse response)throws IOException {
|
|
|
+ String inputLine;
|
|
|
+ String notityXml = "";
|
|
|
+ String resXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
|
|
|
+ try {
|
|
|
+ //获取XML参数
|
|
|
+ while ((inputLine = request.getReader().readLine()) != null) {
|
|
|
+ notityXml += inputLine;
|
|
|
+ }
|
|
|
+ request.getReader().close();
|
|
|
+ //解析XML格式的数据
|
|
|
+ Map<String, String> m = parseXmlToList2(notityXml);
|
|
|
+ WxPayResult wpr = new WxPayResult();
|
|
|
+ wpr=setWxPayResultObj(wpr,m);
|
|
|
+ //判断
|
|
|
+ if("SUCCESS".equalsIgnoreCase(wpr.getResultCode())){
|
|
|
+ //resXml:返回给微信服务器的数据
|
|
|
+ resXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
|
|
|
+ String orderIdMD5 = StaticInfo.orderIdMD5.decrypt(wpr.getAttach());
|
|
|
+//System.out.println("===========pay 117==============");
|
|
|
+
|
|
|
+ if (orderIdMD5.equals(wpr.getOutTradeNo())) {
|
|
|
+ Date nowDate = new Date();
|
|
|
+ // 组装数据
|
|
|
+ AgentOrder agentOrder = new AgentOrder();
|
|
|
+ agentOrder.setAgentStatus(OrderUtil.ORDERSTAUTS_PAID); // 已支付
|
|
|
+ agentOrder.setAgentOrderid(orderIdMD5); //订单id
|
|
|
+ agentOrder.setAgentTransactionId(wpr.getTransactionId()); // 微信支付ID
|
|
|
+ agentOrder.setAgentTransactionDate(new Date()); // 微信支付时间
|
|
|
+ //order.setSalesOpenid(wpr.getOpenid());
|
|
|
+
|
|
|
+ // 修改订单状态
|
|
|
+ int count = agentPurchaseOrderService.updateAgentPurchaseOrder(agentOrder);
|
|
|
+
|
|
|
+ if (count < 1) {
|
|
|
+ resXml = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[报文有误]]></return_msg></xml>";
|
|
|
+ }
|
|
|
+//System.out.println("===========pay 168 快速插入=============="+count);
|
|
|
+ // 给订单的回调修改状态
|
|
|
+ try {
|
|
|
+ MQMessage message = new MQMessage();
|
|
|
+ message.setServiceToMessage(orderIdMD5);
|
|
|
+ message.setServiceOtherMessage(wpr.getTransactionId());
|
|
|
+ message.setServiceIsSend(2); // 没有推送的信息
|
|
|
+ message.setServiceStatus(1); // 推送成功
|
|
|
+ message.setServiceHandlerObjectName("cartServiceImpl");
|
|
|
+ message.setServiceHandlerMethodName("supdateStateByOrderId");
|
|
|
+ message.setServiceType(1);
|
|
|
+ mQservice.insertMQMessage(message);
|
|
|
+ } catch (Exception e) {
|
|
|
+ // TODO: handle exception
|
|
|
+ }
|
|
|
+
|
|
|
+//System.out.println("===========pay 201 插入返利到百胜=============="+count);
|
|
|
+ // 给百胜推送信息
|
|
|
+ try {
|
|
|
+ MQMessage message = new MQMessage();
|
|
|
+ message.setServiceToMessage(orderIdMD5);
|
|
|
+ message.setServiceOtherMessage("efast.trade.new.add");
|
|
|
+ message.setServiceIsSend(2); // 没有推送的信息
|
|
|
+ message.setServiceStatus(1); // 推送成功
|
|
|
+ message.setServiceType(1); // 添加订单信息
|
|
|
+ message.setServiceHandlerObjectName("efastOrderServiceImpl");
|
|
|
+ message.setServiceHandlerMethodName("addAgentOrderToEfast");
|
|
|
+ mQservice.insertMQMessage(message);
|
|
|
+ } catch (Exception e) {
|
|
|
+//System.out.println("===========pay 201 插入返利到百胜失败==============");
|
|
|
+ }
|
|
|
+//System.out.println("===========pay 201 插入返利到百胜完成==============");
|
|
|
+ } else {
|
|
|
+ resXml = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[报文有误]]></return_msg></xml>";
|
|
|
+ ratFWLogger.error(this, "订单:" + orderIdMD5 + "支付成功,但是没有通过校验!");
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ resXml = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[报文为空]]></return_msg></xml>";
|
|
|
+ }
|
|
|
+ BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
|
|
|
+ out.write(resXml.getBytes());
|
|
|
+ out.flush();
|
|
|
+ out.close();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 随机生成一个密码
|
|
|
* @param len 密码总长度
|