首页>代码>基于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
 */
最近下载更多
顾北城  LV12 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日
天爙搞劫火  LV3 2020年7月4日
最近浏览更多
顾北城  LV12 3月24日
要保持微笑  LV4 1月5日
ljt289917726  LV3 2023年11月15日
Sean_admin  LV7 2023年8月28日
limin123  LV6 2023年6月25日
zenghang188  LV12 2023年3月3日
adminadminsqwqe  LV7 2023年2月13日
263648  LV7 2022年12月26日
gch666  LV6 2022年12月22日
abcdljw  LV20 2022年12月7日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友