|
@@ -4,11 +4,19 @@ import java.io.IOException;
|
|
|
import java.net.URLDecoder;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
import javax.servlet.ServletException;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
+import com.iamberry.wechat.core.entity.agentInfo.AgentOrder;
|
|
|
+import com.iamberry.wechat.core.entity.agentInfo.AgentOrderItem;
|
|
|
+import com.iamberry.wechat.core.entity.agentInfo.AgentTooth;
|
|
|
+import com.iamberry.wechat.face.agentInfo.AgentInfoService;
|
|
|
+import com.iamberry.wechat.face.agentInfo.AgentPurchaseOrderService;
|
|
|
+import com.iamberry.wechat.tools.*;
|
|
|
+import net.sf.json.JSONArray;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Controller;
|
|
@@ -41,10 +49,6 @@ import com.iamberry.wechat.face.giftCard.GiftCardService;
|
|
|
import com.iamberry.wechat.face.member.MemberService;
|
|
|
import com.iamberry.wechat.face.mq.EfastOrderService;
|
|
|
import com.iamberry.wechat.face.pay.PayService;
|
|
|
-import com.iamberry.wechat.tools.DateTimeUtil;
|
|
|
-import com.iamberry.wechat.tools.NameUtils;
|
|
|
-import com.iamberry.wechat.tools.ResultInfo;
|
|
|
-import com.iamberry.wechat.tools.StrUtils;
|
|
|
import com.iamberry.wechat.utils.SendMessageUtil;
|
|
|
|
|
|
|
|
@@ -77,6 +81,10 @@ public class RequestWechatPayHandler {
|
|
|
@Autowired
|
|
|
private SystemService systemService;
|
|
|
@Autowired
|
|
|
+ private AgentPurchaseOrderService agentPurchaseOrderService;
|
|
|
+ @Autowired
|
|
|
+ private AgentInfoService agentInfoService;
|
|
|
+ @Autowired
|
|
|
private SendMessageUtil sendMessageUtil;
|
|
|
@Autowired
|
|
|
private RatFWLogger logger;
|
|
@@ -414,4 +422,204 @@ public class RequestWechatPayHandler {
|
|
|
// rm.setStatus(true);
|
|
|
// return rm;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 去支付,调用方法,代理商采购页面
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @ResponseBody
|
|
|
+ @RequestMapping(value = "/payBefore", method = RequestMethod.POST)
|
|
|
+ public ResultMsg payBefore(HttpServletRequest request, AgentOrder agentOrder) throws Exception {
|
|
|
+ ResultMsg msg = new ResultMsg();
|
|
|
+ msg.setResultCode(ResultInfo.ERRORCODE);
|
|
|
+ msg.setStatus(false);
|
|
|
+
|
|
|
+ //获取代理商信息
|
|
|
+ Member member = WechatUtils.getUserBySession(request);
|
|
|
+ /** 数据格式校验 */
|
|
|
+ if (member == null || member.getUserOpenid() == null) {// 校验当前用户信息是否丢失
|
|
|
+ msg.setMessage(ResultInfo.loginOutError);
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ String openId = member.getUserOpenid();
|
|
|
+ Integer codeId = member.getUserId();
|
|
|
+
|
|
|
+ AgentTooth agentTooth = new AgentTooth();
|
|
|
+ agentTooth.setAgentOpenid(openId);
|
|
|
+ agentTooth = agentInfoService.getAgentTooth(agentTooth);
|
|
|
+ if (agentTooth == null) {
|
|
|
+ msg.setMessage("未找到该用户!");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ //验证前台传过来的数据是否规范
|
|
|
+ if (!isValiAgentOrder(agentOrder)) {
|
|
|
+ msg.setMessage("订单格式内容出错!");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ //---------------生成订单 --- start ---------------------
|
|
|
+ JSONArray jsonArray = JSONArray.fromObject(agentOrder.getAgentOrderItemJson());
|
|
|
+ List<AgentOrderItem> agentOrderItemList = (List) JSONArray.toCollection(jsonArray, AgentOrderItem.class);
|
|
|
+ if (agentOrderItemList == null || agentOrderItemList.size() < 1) {
|
|
|
+ msg.setMessage("未选择产品!");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ agentOrder.setAgentOrderid(OrderNOUtil.createOrderCode(codeId));
|
|
|
+ agentOrder.setAgentId(agentTooth.getAgentId());
|
|
|
+ Map<String, Object> map = agentPurchaseOrderService.addAgentOrder(agentOrder, agentOrderItemList);
|
|
|
+ if (map.get("status") == null || map.get("status") == 400) {
|
|
|
+ msg.setMessage(map.get("msg").toString());
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ //---------------生成订单 --- end -----------------------
|
|
|
+
|
|
|
+ //支付
|
|
|
+ List<AgentOrder> agentOrderList = agentPurchaseOrderService.listAgentOrder(agentOrder);
|
|
|
+ AgentOrder ao = agentOrderList.get(0);
|
|
|
+ ResultMsg resultMsg = this.pay(ao, openId);
|
|
|
+
|
|
|
+ if (resultMsg.getResultCode() == ResultInfo.SUCCESSCODE) {
|
|
|
+ msg.setResultCode(ResultInfo.SUCCESSCODE);
|
|
|
+ msg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
|
|
|
+ msg.setStatus(true);
|
|
|
+ } else {
|
|
|
+ msg.setResultCode(ResultInfo.ERRORCODE);
|
|
|
+ msg.setMessage(NameUtils.getConfig("ERRORINFO"));
|
|
|
+ msg.setStatus(true);
|
|
|
+ }
|
|
|
+ msg.setData(resultMsg.getData());
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 代理商订单支付调用
|
|
|
+ *
|
|
|
+ * @param agentOrder 订单
|
|
|
+ * @param openId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private ResultMsg pay(AgentOrder agentOrder, String openId) {
|
|
|
+ boolean flag = false;
|
|
|
+ ResultMsg msg = new ResultMsg();
|
|
|
+
|
|
|
+ SendPayDto dto = new SendPayDto();
|
|
|
+ dto.setSuccess(false);
|
|
|
+ //查询订单项
|
|
|
+ List<AgentOrderItem> agentOrderList = agentOrder.getItemList();
|
|
|
+ if (agentOrderList == null || agentOrderList.size() < 1) {
|
|
|
+ msg.setResultCode(ResultInfo.ERRORCODE);
|
|
|
+ msg.setMessage("查询订单报错");
|
|
|
+ msg.setStatus(false);
|
|
|
+ msg.setData(dto);
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (agentOrder.getAgentYetAmount() > 0) {
|
|
|
+ // 发起支付
|
|
|
+ PayResult result = payService.requestPay(openId, agentOrder.getAgentOrderid(), agentOrder.getAgentYetAmount(), agentOrderList.get(0).getItemProductName() + "...", NameUtils.getConfig("WECHAT_AGENT_PURCHASE_ORDER_BACK"));
|
|
|
+ if (result.isPaySuccess()) {
|
|
|
+ dto.setInfo(result.getPayData());
|
|
|
+ dto.setSuccess(true);
|
|
|
+ dto.setOrderId(agentOrder.getAgentOrderid());
|
|
|
+ flag = true;
|
|
|
+ } else {
|
|
|
+ dto.setSuccess(false);
|
|
|
+ dto.setInfo(result.getPayData());
|
|
|
+ dto.setOrderId(agentOrder.getAgentOrderid());
|
|
|
+ flag = false;
|
|
|
+ }
|
|
|
+ } else if (agentOrder.getAgentYetAmount() == 0) {
|
|
|
+ dto.setInfo("isOK");
|
|
|
+ dto.setSuccess(true);
|
|
|
+ dto.setOrderId(agentOrder.getAgentOrderid());
|
|
|
+ flag = true;
|
|
|
+ } else {
|
|
|
+ msg.setResultCode(ResultInfo.ERRORCODE);
|
|
|
+ msg.setMessage(ResultInfo.paramFormatError);
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (flag) {
|
|
|
+ msg.setResultCode(ResultInfo.SUCCESSCODE);
|
|
|
+ msg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
|
|
|
+ msg.setData(dto);
|
|
|
+ msg.setStatus(true);
|
|
|
+ } else {
|
|
|
+ msg.setResultCode(ResultInfo.ERRORCODE);
|
|
|
+ msg.setMessage(NameUtils.getConfig("ERRORINFO"));
|
|
|
+ msg.setData(dto);
|
|
|
+ msg.setStatus(false);
|
|
|
+ }
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 支付前的验证
|
|
|
+ *
|
|
|
+ * @param agentOrder
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean isValiAgentOrder(AgentOrder agentOrder) {
|
|
|
+ if (agentOrder.getAgentAddressInfo() == null || agentOrder.getAgentAddressInfo() == "") {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (agentOrder.getAgentAddressName() == null || agentOrder.getAgentAddressName() == "") {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (agentOrder.getAgentAddressPostnum() == null || agentOrder.getAgentAddressPostnum() == "") {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (agentOrder.getAgentAddressTel() == null) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (agentOrder.getAgentOrderItemJson() == null || agentOrder.getAgentOrderItemJson() == "") {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单列表,支付方法
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @ResponseBody
|
|
|
+ @RequestMapping(value = "/orderToPay")
|
|
|
+ public ResultMsg orderToPay(HttpServletRequest request, String orderId) throws Exception {
|
|
|
+ ResultMsg msg = new ResultMsg();
|
|
|
+
|
|
|
+ //获取代理商信息
|
|
|
+ Member member = WechatUtils.getUserBySession(request);
|
|
|
+ /** 数据格式校验 */
|
|
|
+ if (member == null || member.getUserOpenid() == null) {// 校验当前用户信息是否丢失
|
|
|
+ msg.setMessage(ResultInfo.loginOutError);
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ String openId = member.getUserOpenid();
|
|
|
+
|
|
|
+ AgentOrder agentOrder = new AgentOrder();
|
|
|
+ agentOrder.setAgentOrderid(orderId);
|
|
|
+ List<AgentOrder> agentOrderList = agentPurchaseOrderService.listAgentOrder(agentOrder);
|
|
|
+ AgentOrder ao = agentOrderList.get(0);
|
|
|
+ ResultMsg resultMsg = this.pay(ao, openId);
|
|
|
+
|
|
|
+ if (resultMsg.getResultCode() == ResultInfo.SUCCESSCODE) {
|
|
|
+ msg.setResultCode(ResultInfo.SUCCESSCODE);
|
|
|
+ msg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
|
|
|
+ msg.setStatus(true);
|
|
|
+ } else {
|
|
|
+ msg.setResultCode(ResultInfo.ERRORCODE);
|
|
|
+ msg.setMessage(NameUtils.getConfig("ERRORINFO"));
|
|
|
+ msg.setStatus(true);
|
|
|
+ }
|
|
|
+ msg.setData(resultMsg.getData());
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
}
|