首页>代码>基于s2sh的微信三级分销商城>/fenxiao/src/com/java214/fenxiao/action/AlipayAction.java
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
 */
最近下载更多
sccs1984  LV15 2024年5月22日
顾北城  LV12 2024年3月24日
zhang4xin  LV15 2022年1月4日
一样的  LV2 2021年9月10日
912299793  LV21 2021年6月28日
aaa最代码  LV14 2021年3月4日
luodanqing  LV1 2021年1月26日
zhouzhiyi  LV5 2020年10月30日
xingxing1234  LV10 2020年7月31日
samdy2019  LV3 2020年7月24日
最近浏览更多
SZEPEZS  LV9 2月17日
lqzixi  LV4 2024年11月6日
火心人  LV2 2024年11月1日
ytiian_hm  LV6 2024年9月18日
tanghuo  LV2 2024年7月15日
zxcdfhtdhj  LV7 2024年6月6日
chutianyu  LV4 2024年6月6日
sccs1984  LV15 2024年5月22日
twilight0428  LV5 2024年4月29日
顾北城  LV12 2024年3月24日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友