package com.common.common.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import javax.annotation.Resource;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import com.cloudpark.dao.ParEntryRecordDao;
import com.common.common.service.ISmsVerificationService;
import com.common.pay.wechatpay.config.WechatPayConfig;
import com.common.pay.wechatpay.entity.WechatPayJsonResult;
import com.common.pay.wechatpay.entity.WechatPayResponseData;
import com.common.pay.wechatpay.util.WeChartPayUtil2;
import com.common.pay.wechatpay.util.WeChatPayPaymentStatusUtils;
import com.common.pay.wechatpay.util.WechatPayCollectionUtil;
import com.common.pay.wechatpay.util.WechatPayFileUtil;
import com.common.pay.wechatpay.util.WechatPayHttpKit;
import com.common.pay.wechatpay.util.WechatPayHttpUtils;
import com.common.pay.wechatpay.util.WechatPaySHA1;
import com.common.pay.wechatpay.util.WechatPaySerializerFeatureUtil;
import com.common.pay.wechatpay.util.WechatPaySessionUtil;
import com.common.pay.wechatpay.util.WechatPayStringUtil;
import com.common.pay.wechatpay.util.WechatPayToolUtils;
import com.common.pay.wechatpay.util.WechatPayUtil;
import com.common.pay.wechatpay.util.WechatPayWebUtil;
import com.common.pay.wechatpay.util.WechatPayXmlUtil;
import com.common.uitls.DateUtils;
import com.common.uitls.JSONMessage;
import com.common.uitls.MD5Util;
import com.common.uitls.SecurityCodeUtil;
import com.common.uitls.SecurityDateUtil;
import com.shop.dao.SettlementCategoryDao;
import com.shop.util.HttpUtil;
import com.shop.util.MyMd5Util;
import com.smart.webService.XcloudwebsMain;
import com.village.entity.HomeBillcost;
import com.village.entity.HomePaymentRecords;
import com.village.service.IHomeBillcostService;
import com.village.service.IHomePaymentRecordsService;
/**
* 微信支付控制层
*/
@Controller
@RequestMapping(value = "/WxPay")
public class WechatPayController {
// 日志输出类
private static Logger logger = LoggerFactory.getLogger(WechatPayController.class);
private static final String WXPAY_PAY = "http://api.mch.weixin.qq.com/pay/unifiedorder"; // 统一下单
// private static final String WXPAY_PAY_QUERY =
// "http://api.mch.weixin.qq.com/pay/WxPayquery"; // 支付订单查询
private static final String WXPAY_REFUND = "http://api.mch.weixin.qq.com/secapi/pay/refund"; // 申请退款
private static final String WXPAY_REFUND_QUERY = "http://api.mch.weixin.qq.com/pay/refundquery"; // 申请退款
// 备注,以下两种方法针对不同场景,都可以实现
/**
* ------------------------------------微信扫码支付 start
* 方法一--------------------------------------------
**/
/**
* 扫码支付
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/CloudParking/Pay", method = RequestMethod.GET)
public ModelAndView CloudCode(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mav = new ModelAndView();
String parking = request.getParameter("parking");
String box = request.getParameter("box");
String codeUrl = "http://resource.wlsq.tv/WlsqResourceApi/WxPay/CloudParking/weixin?parking=" + parking
+ "&box=" + box;
StringBuffer sbt = new StringBuffer(codeUrl);
mav.addObject("codeUrl", sbt.toString());
logger.info("云停车扫描支付==" + sbt.toString());
mav.setViewName("wechatpay_qrcode/QrCode");// 跳转jsp页面生成二维码
return mav;
}
/**
* 支付页面跳转
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/CloudParking/weixin", method = RequestMethod.GET)
public ModelAndView weixinJum(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mav = new ModelAndView();
try {
String userAgent = request.getHeader("user-agent");
logger.info("请求头信息======" + userAgent);
if (userAgent.indexOf("MicroMessenger") != -1) {
logger.info("微信支付");
String state = request.getParameter("state");
logger.info("state :" + state);
String openId = "";
String reqcode = request.getParameter("code");
openId = WechatPaySHA1.getOpenId(reqcode);
logger.info("============openId:" + openId);
Map maps = new HashMap();
maps.put("parking_id", state.split(",")[0]);
maps.put("stand_id", state.split(",")[1]);
maps.put("pre_state", 2);
List
jsp页面
<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%
long t = System.currentTimeMillis();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";%><
meta http-equiv="Content-Type"content="text/html; charset=UTF-8">微信公众号支付二维码生成如下
<
div id="qrCode">
<
script type="text/javascript"src="<%=basePath %>wechatpay_qrcode/js/jquery.min.js?t=<%=t%>"><
script type="text/javascript"src="<%=basePath %>wechatpay_qrcode/js/jquery.qrcode.min.js?t=<%=t%>"><
script type="text/javascript">
$('#qrCode').qrcode("${codeUrl}");
<%
@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
long t = System.currentTimeMillis();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";%><
meta http-equiv="Content-Type"content="text/html; charset=UTF-8">