package com.java214.fenxiao.action; import com.java214.fenxiao.entities.Config; import com.java214.fenxiao.entities.Financial; import com.java214.fenxiao.entities.Orders; import com.java214.fenxiao.entities.Recharge; import com.java214.fenxiao.entities.User; import com.java214.fenxiao.pay.alipay.AlipayConfig; import com.java214.fenxiao.pay.alipay.AlipayNotify; import com.java214.fenxiao.pay.alipay.AlipaySubmit; import com.java214.fenxiao.service.IConfigService; import com.java214.fenxiao.service.IFinancialService; import com.java214.fenxiao.service.IOrdersService; import com.java214.fenxiao.service.IRechargeService; import com.java214.fenxiao.service.IUserService; import java.io.PrintWriter; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Random; import java.util.Set; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; @Controller("alipayAction") @Scope("prototype") public class AlipayAction extends BaseAction { private static final long serialVersionUID = 1L; @Resource(name = "ordersService") private IOrdersService<Orders> ordersService; @Resource(name = "userService") private IUserService<User> userService; private Orders orders; private String ftlFileName; @Resource(name = "configService") private IConfigService<Config> configService; @Resource(name = "financialService") private IFinancialService<Financial> financialService; @Resource(name = "rechargeService") private IRechargeService<Recharge> rechargeService; public String alipayApi() throws Exception { String payment_type = "1"; String notify_url = this.request.getScheme() + "://" + this.request.getServerName() + ":" + this.request.getServerPort() + this.request.getContextPath() + "/" + "notifyUrl"; String return_url = this.request.getScheme() + "://" + this.request.getServerName() + ":" + this.request.getServerPort() + this.request.getContextPath() + "/" + "returnUrl"; Random random = new Random(); int n = random.nextInt(9999); n += 10000; String out_trade_no = "" + System.currentTimeMillis() + n ; String subject = out_trade_no; String money = this.request.getParameter("money"); String body = out_trade_no; String show_url = this.request.getScheme() + "://" + this.request.getServerName() + ":" + this.request.getServerPort() + this.request.getContextPath() + "/"; String anti_phishing_key = ""; String exter_invoke_ip = ""; String enable_paymethod = this.request.getParameter("enable_paymethod"); Config findConfig = (Config) this.configService.findById(Config.class, 1); Map sParaTemp = new HashMap(); sParaTemp.put("service", "create_direct_pay_by_user"); sParaTemp.put("partner", findConfig.getAlipayPartner()); sParaTemp.put("optEmail", findConfig.getAlipaySellerEmail()); 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("out_trade_no", out_trade_no); sParaTemp.put("subject", subject); sParaTemp.put("total_fee", Double.parseDouble(money)); sParaTemp.put("body", body); sParaTemp.put("show_url", show_url); sParaTemp.put("anti_phishing_key", anti_phishing_key); sParaTemp.put("exter_invoke_ip", exter_invoke_ip); sParaTemp.put("enable_paymethod", "debitCardExpress"); String sHtmlText = AlipaySubmit.buildRequest(sParaTemp, "get", "确认", findConfig.getAlipayKey()); HttpSession session = this.request.getSession(); User loginUser = (User) session.getAttribute("loginUser"); Recharge recharge = new Recharge(); recharge.setNo(out_trade_no); recharge.setMoney(Double.valueOf(Double.parseDouble(money))); recharge.setUser(loginUser); recharge.setStatus(Integer.valueOf(0)); recharge.setCreateDate(new Date()); this.rechargeService.saveOrUpdate(recharge); PrintWriter out = this.response.getWriter(); out.println(sHtmlText); out.flush(); out.close(); return null; } public String notifyUrl() throws Exception { PrintWriter out = this.response.getWriter(); Map params = new HashMap(); Map requestParams = this.request.getParameterMap(); 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 = valueStr + values[i] + ","; } params.put(name, valueStr); } String out_trade_no = new String(this.request.getParameter("out_trade_no").getBytes("ISO-8859-1"), "UTF-8"); String trade_no = new String(this.request.getParameter("trade_no").getBytes("ISO-8859-1"), "UTF-8"); String trade_status = new String(this.request.getParameter("trade_status").getBytes("ISO-8859-1"), "UTF-8"); Config findConfig = (Config) this.configService.findById(Config.class, 1); if (AlipayNotify.verify(params, findConfig.getAlipayKey())) { if (trade_status.equals("TRADE_FINISHED")) { Recharge findRecharge = this.rechargeService.findByNo(out_trade_no); if (findRecharge.getStatus().intValue() == 0) { findRecharge.setStatus(Integer.valueOf(1)); this.rechargeService.saveOrUpdate(findRecharge); User findUser = (User) this.userService.findById(User.class, findRecharge.getUser().getId().intValue()); findUser.setBalance(Double.valueOf(findUser.getBalance().doubleValue() + findRecharge.getMoney().doubleValue())); this.userService.saveOrUpdate(findUser); } } else if (trade_status.equals("TRADE_SUCCESS")) { Recharge findRecharge = this.rechargeService.findByNo(out_trade_no); if (findRecharge.getStatus().intValue() == 0) { findRecharge.setStatus(Integer.valueOf(1)); this.rechargeService.saveOrUpdate(findRecharge); User findUser = (User) this.userService.findById(User.class, findRecharge.getUser().getId().intValue()); findUser.setBalance(Double.valueOf(findUser.getBalance().doubleValue() + findRecharge.getMoney().doubleValue())); this.userService.saveOrUpdate(findUser); } } out.println("success"); } else { out.println("fail"); } out.flush(); out.close(); return null; } public String returnUrl() throws Exception { PrintWriter out = this.response.getWriter(); Map params = new HashMap(); Map requestParams = this.request.getParameterMap(); 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 = valueStr + values[i] + ","; } valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8"); params.put(name, valueStr); } String out_trade_no = new String(this.request.getParameter("out_trade_no").getBytes("ISO-8859-1"), "UTF-8"); String trade_status = new String(this.request.getParameter("trade_status").getBytes("ISO-8859-1"), "UTF-8"); Config findConfig = (Config) this.configService.findById(Config.class, 1); boolean verify_result = AlipayNotify.verify(params, findConfig.getAlipayKey()); if (verify_result) { Recharge findRecharge = this.rechargeService.findByNo(out_trade_no); if ((trade_status.equals("TRADE_FINISHED")) || (trade_status.equals("TRADE_SUCCESS"))) { if (findRecharge.getStatus().intValue() == 0) { findRecharge.setStatus(Integer.valueOf(1)); this.rechargeService.saveOrUpdate(findRecharge); User findUser = (User) this.userService.findById(User.class, findRecharge.getUser().getId().intValue()); findUser.setBalance(Double.valueOf(findUser.getBalance().doubleValue() + findRecharge.getMoney().doubleValue())); this.userService.saveOrUpdate(findUser); } } out.println("<br>交易成功!<br>订单号:" + out_trade_no + "<br>支付金额:" + findRecharge.getMoney()); } else { out.println("验证失败"); } out.flush(); out.close(); return null; } public Orders getOrders() { return this.orders; } public void setOrders(Orders orders) { this.orders = orders; } public String getFtlFileName() { return this.ftlFileName; } public void setFtlFileName(String ftlFileName) { this.ftlFileName = ftlFileName; } } /* * Location: D:\360��ȫ���������\WeFenxiao_A5\WeFenxiao_V1.0.1\WEB-INF\classes\ * Qualified Name: com.java214.fenxiao.action.AlipayAction JD-Core Version: 0.6.0 */