/**
* by dingyl 国内支付宝
*
* @return
* @throws IOException
*/
@RequestMapping(value = "/payBase")
public String payBase(@RequestParam String out_trade_no, @RequestParam String total_fee) throws IOException {
// PrintWriter out = response.getWriter();
String result = "";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
// 失败之后跳转的页面
// String type=request.getParameter("type");
String ress = request.getHeader("referer");
session.setAttribute("url", ress);
// 支付类型
// 必填,不能修改
String payment_type = "1";
// 服务器异步通知页面路径
// 需http://格式的完整路径,不能加?id=123这类自定义参数
// String notify_url =
// "http://121.40.117.205:8090/yhyj/aliapi/async.htm";
// 页面跳转同步通知页面路径
// 需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
// String return_url =
// "http://121.40.117.205:8090/yhyj/aliapi/return_url.htm";
// 服务器异步通知页面路径
// 需http://格式的完整路径,不能加?id=123这类自定义参数
String notify_url = "http://www.muzhiyouxuan.com/yhyj/aliapi/async.htm";
// 页面跳转同步通知页面路径
// 需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
String return_url = "http://www.muzhiyouxuan.com/yhyj/aliapi/return_url.htm";
OrderBuy orderBuy = orderBuyService.getOrderBuyByOrderNumber(out_trade_no);
// 订单名称
// 必填
String subject = "";
if (orderBuy != null) {
if (orderBuy.getOrderItemList() != null && orderBuy.getOrderItemList().size() > 0) {
for (OrderItem item : orderBuy.getOrderItemList()) {
subject = item.getProductName() + " ";
}
}
}
// total_fee = "0.01";
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp.put("service", "create_direct_pay_by_user");// 接口服务----即时到账
sParaTemp.put("partner", AlipayConfig.partner);// 支付宝PID
sParaTemp.put("_input_charset", AlipayConfig.input_charset);// 统一编码
sParaTemp.put("payment_type", payment_type);// 支付类型
sParaTemp.put("notify_url", notify_url);// 异步通知页面
sParaTemp.put("return_url", return_url);// 页面跳转同步通知页面
sParaTemp.put("seller_email", AlipayConfig.seller_email);// 卖家支付宝账号
sParaTemp.put("out_trade_no", out_trade_no);// 商品订单编号
sParaTemp.put("subject", subject);// 商品名称
sParaTemp.put("total_fee", total_fee);// 价格
sParaTemp.put("trade_no", format.format(date));// 交易号
// sParaTemp.put("it_b_pay", "2h");
// 建立请求
try {
String sHtmlText = AlipaySubmit.buildRequest(sParaTemp, "post", "确认");
result = "{\"success\":true,\"msg\":\"跳转成功\"}";
StringUtil.writeToWeb(sHtmlText, "html", response);
return null;
} catch (Exception e) {
if (log.isErrorEnabled()) {
log.error("ddddddddddddddddddddd");
}
result = "{\"success\":false,\"msg\":\"跳转失败,请稍候再试!\"}";
StringUtil.writeToWeb(result, "html", response);
e.printStackTrace();
return null;
}
}
/**
* by dingyl 同步通知的页面的Controller
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/return_url")
public String Return_url(HttpServletRequest request, HttpServletResponse response) {
// return pay(request, response);
System.out.println("进入支付回滚");
Map<String, String> params = new HashMap<String, String>();
try {
Map requestParams = request.getParameterMap();
System.out.println("请求参数:" + requestParams.toString());
System.out.println("开始解析参数");
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
}
System.out.println(name.getBytes());
// params.put(name, new String(valueStr.getBytes("ISO-8859-1"), "UTF-8"));
params.put(name, valueStr);
}
System.out.println(params.toString());
System.out.println("结束解析参数");
String tradeNo = request.getParameter("out_trade_no");
System.out.println("支付宝流水号:" + tradeNo);
Member member = memberService.getMember(tradeNo);
session.setAttribute("member", member);
// OrderBuy orderBuy=orderBuyService.getOrderBuyByOrderNumber(tradeNo);
// if (orderBuy.getPayStatus()==0) {// 支付是否成功
return "web/paySuccess.jsp";
// } else {// 支付是否失败
// return "web/payFail.jsp";
//
// }
} catch (Exception e) {
e.printStackTrace();
return "web/payFail.jsp";
}
}
/**
* by dingyl 异步通知付款状态的Controller
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/async")
public void async(HttpServletRequest request, HttpServletResponse response) {
pay(request, response);
}
/**
* by dingyl 支付回调
*
* @param request
* @param response
* @return
*/
@SuppressWarnings("rawtypes")
private void pay(HttpServletRequest request, HttpServletResponse response) {
System.out.println("进入支付回滚");
Map<String, String> params = new HashMap<String, String>();
try {
Map requestParams = request.getParameterMap();
System.out.println("请求参数:" + requestParams.toString());
System.out.println("开始解析参数");
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
}
System.out.println(name.getBytes());
// params.put(name, new String(valueStr.getBytes("ISO-8859-1"), "UTF-8"));
params.put(name, valueStr);
}
System.out.println(params.toString());
System.out.println("结束解析参数");
String tradeNo = request.getParameter("out_trade_no");
System.out.println("支付宝流水号:" + tradeNo);
String payNumber=request.getParameter("trade_no");//支付宝交易流水号
System.out.println("支付宝交易流水号:"+tradeNo);
/*
* 根据订单号获取会员信息
*/
Member member = memberService.getMember(tradeNo);
session.setAttribute("member", member);
String freePrice = "0";//app端优惠金额 web端无优惠金额
System.out.println(freePrice);
String payType = "0";
String tradeStatus = request.getParameter("trade_status");
System.out.println("支付状态:" + tradeStatus);
String paymentSn = "";
String payment_type = request.getParameter("payment_type");
System.out.println("支付方式:" + payment_type);
if (AlipayNotify.verify(params)) {// 验证成功
System.out.println("status:" + 1);
if (tradeStatus.equals("TRADE_FINISHED") || tradeStatus.equals("TRADE_SUCCESS")) {
// 要写的逻辑。自己按自己的要求写
submitOrderService.changePaySuccess(paymentSn, tradeNo, payType, freePrice,payNumber);
log.error("ok.......");
System.out.println(">>>>>充值成功" + tradeNo);
response.getWriter().print("success");
}
} else {// 验证失败
System.out.println("status:" + 0);
}
} catch (Exception e) {
e.printStackTrace();
}
}
* by dingyl 国内支付宝
*
* @return
* @throws IOException
*/
@RequestMapping(value = "/payBase")
public String payBase(@RequestParam String out_trade_no, @RequestParam String total_fee) throws IOException {
// PrintWriter out = response.getWriter();
String result = "";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
// 失败之后跳转的页面
// String type=request.getParameter("type");
String ress = request.getHeader("referer");
session.setAttribute("url", ress);
// 支付类型
// 必填,不能修改
String payment_type = "1";
// 服务器异步通知页面路径
// 需http://格式的完整路径,不能加?id=123这类自定义参数
// String notify_url =
// "http://121.40.117.205:8090/yhyj/aliapi/async.htm";
// 页面跳转同步通知页面路径
// 需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
// String return_url =
// "http://121.40.117.205:8090/yhyj/aliapi/return_url.htm";
// 服务器异步通知页面路径
// 需http://格式的完整路径,不能加?id=123这类自定义参数
String notify_url = "http://www.muzhiyouxuan.com/yhyj/aliapi/async.htm";
// 页面跳转同步通知页面路径
// 需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
String return_url = "http://www.muzhiyouxuan.com/yhyj/aliapi/return_url.htm";
OrderBuy orderBuy = orderBuyService.getOrderBuyByOrderNumber(out_trade_no);
// 订单名称
// 必填
String subject = "";
if (orderBuy != null) {
if (orderBuy.getOrderItemList() != null && orderBuy.getOrderItemList().size() > 0) {
for (OrderItem item : orderBuy.getOrderItemList()) {
subject = item.getProductName() + " ";
}
}
}
// total_fee = "0.01";
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp.put("service", "create_direct_pay_by_user");// 接口服务----即时到账
sParaTemp.put("partner", AlipayConfig.partner);// 支付宝PID
sParaTemp.put("_input_charset", AlipayConfig.input_charset);// 统一编码
sParaTemp.put("payment_type", payment_type);// 支付类型
sParaTemp.put("notify_url", notify_url);// 异步通知页面
sParaTemp.put("return_url", return_url);// 页面跳转同步通知页面
sParaTemp.put("seller_email", AlipayConfig.seller_email);// 卖家支付宝账号
sParaTemp.put("out_trade_no", out_trade_no);// 商品订单编号
sParaTemp.put("subject", subject);// 商品名称
sParaTemp.put("total_fee", total_fee);// 价格
sParaTemp.put("trade_no", format.format(date));// 交易号
// sParaTemp.put("it_b_pay", "2h");
// 建立请求
try {
String sHtmlText = AlipaySubmit.buildRequest(sParaTemp, "post", "确认");
result = "{\"success\":true,\"msg\":\"跳转成功\"}";
StringUtil.writeToWeb(sHtmlText, "html", response);
return null;
} catch (Exception e) {
if (log.isErrorEnabled()) {
log.error("ddddddddddddddddddddd");
}
result = "{\"success\":false,\"msg\":\"跳转失败,请稍候再试!\"}";
StringUtil.writeToWeb(result, "html", response);
e.printStackTrace();
return null;
}
}
/**
* by dingyl 同步通知的页面的Controller
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/return_url")
public String Return_url(HttpServletRequest request, HttpServletResponse response) {
// return pay(request, response);
System.out.println("进入支付回滚");
Map<String, String> params = new HashMap<String, String>();
try {
Map requestParams = request.getParameterMap();
System.out.println("请求参数:" + requestParams.toString());
System.out.println("开始解析参数");
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
}
System.out.println(name.getBytes());
// params.put(name, new String(valueStr.getBytes("ISO-8859-1"), "UTF-8"));
params.put(name, valueStr);
}
System.out.println(params.toString());
System.out.println("结束解析参数");
String tradeNo = request.getParameter("out_trade_no");
System.out.println("支付宝流水号:" + tradeNo);
Member member = memberService.getMember(tradeNo);
session.setAttribute("member", member);
// OrderBuy orderBuy=orderBuyService.getOrderBuyByOrderNumber(tradeNo);
// if (orderBuy.getPayStatus()==0) {// 支付是否成功
return "web/paySuccess.jsp";
// } else {// 支付是否失败
// return "web/payFail.jsp";
//
// }
} catch (Exception e) {
e.printStackTrace();
return "web/payFail.jsp";
}
}
/**
* by dingyl 异步通知付款状态的Controller
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/async")
public void async(HttpServletRequest request, HttpServletResponse response) {
pay(request, response);
}
/**
* by dingyl 支付回调
*
* @param request
* @param response
* @return
*/
@SuppressWarnings("rawtypes")
private void pay(HttpServletRequest request, HttpServletResponse response) {
System.out.println("进入支付回滚");
Map<String, String> params = new HashMap<String, String>();
try {
Map requestParams = request.getParameterMap();
System.out.println("请求参数:" + requestParams.toString());
System.out.println("开始解析参数");
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
}
System.out.println(name.getBytes());
// params.put(name, new String(valueStr.getBytes("ISO-8859-1"), "UTF-8"));
params.put(name, valueStr);
}
System.out.println(params.toString());
System.out.println("结束解析参数");
String tradeNo = request.getParameter("out_trade_no");
System.out.println("支付宝流水号:" + tradeNo);
String payNumber=request.getParameter("trade_no");//支付宝交易流水号
System.out.println("支付宝交易流水号:"+tradeNo);
/*
* 根据订单号获取会员信息
*/
Member member = memberService.getMember(tradeNo);
session.setAttribute("member", member);
String freePrice = "0";//app端优惠金额 web端无优惠金额
System.out.println(freePrice);
String payType = "0";
String tradeStatus = request.getParameter("trade_status");
System.out.println("支付状态:" + tradeStatus);
String paymentSn = "";
String payment_type = request.getParameter("payment_type");
System.out.println("支付方式:" + payment_type);
if (AlipayNotify.verify(params)) {// 验证成功
System.out.println("status:" + 1);
if (tradeStatus.equals("TRADE_FINISHED") || tradeStatus.equals("TRADE_SUCCESS")) {
// 要写的逻辑。自己按自己的要求写
submitOrderService.changePaySuccess(paymentSn, tradeNo, payType, freePrice,payNumber);
log.error("ok.......");
System.out.println(">>>>>充值成功" + tradeNo);
response.getWriter().print("success");
}
} else {// 验证失败
System.out.println("status:" + 0);
}
} catch (Exception e) {
e.printStackTrace();
}
}