/**
* 支付宝Controller
* @author 宗潇帅
* @修改日期 2014-9-25下午1:29:53
*/
@Controller
@RequestMapping(value="/aliapi")
public class AlipayApiController {
private static Log log = LogFactory.getLog(AlipayApiController.class);
@RequestMapping(value="/index")
public String index(HttpServletRequest request,
HttpServletResponse response){
return "web/pay/fund";
}
@RequestMapping(value = "/deposit", method = RequestMethod.POST,produces = "application/json")
public String deposit(HttpServletRequest request,HttpServletResponse response,Model model) throws Exception {
String result = "";
Date date = new Date();
String payment_type = "1";
String notify_url = ";
String return_url = ";
String subject = "充值测试";
String anti_phishing_key = "";
String exter_invoke_ip = "";
String total_fee = ServletRequestUtils.getStringParameter(request, "amount","");
String body = ServletRequestUtils.getStringParameter(request, "body","test");
String show_url = ServletRequestUtils.getStringParameter(request, "show_url","");
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp.put("service", "create_direct_pay_by_user");
sParaTemp.put("partner", AlipayConfig.partner);
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", Constants.SELLER_EMAIL);
sParaTemp.put("out_trade_no", date.getTime()+payment_type);
sParaTemp.put("subject", subject);
sParaTemp.put("total_fee", total_fee);
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);
try {
String sHtmlText = AlipaySubmit.buildRequest(sParaTemp,"post","确认");
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
String s = gson.toJson(sHtmlText);
model.addAttribute("sHtmlText", s);
request.setAttribute("sHtmlText", s);
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);
return null;
}
}
/**
* 同步通知的页面的Controller
* @param request
* @param response
* @return
* @author 宗潇帅
*/
@RequestMapping(value="/return_url")
public String Return_url(HttpServletRequest request,HttpServletResponse response){
return "web/pay/success";
}
/**
* 异步通知付款状态的Controller
* @param request
* @param response
* @return
* @author 宗潇帅
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value="/async",method = RequestMethod.GET)
public String async(HttpServletRequest request,
HttpServletResponse response){
Map<String,String> params = new HashMap<String,String>();
Map requestParams = 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 = (i == values.length - 1) ? valueStr + values[i]: valueStr + values[i] + ",";
}
params.put(name, valueStr);
}
String tradeNo = request.getParameter("out_trade_no");
String tradeStatus = request.getParameter("trade_status");
if(AlipayNotify.verify(params)){
if(tradeStatus.equals("TRADE_FINISHED") || tradeStatus.equals("TRADE_SUCCESS")) {
log.error("ok.......");
System.out.println(">>>>>充值成功" + tradeNo);
}
return "web/pay/success";
}else{
return "web/pay/fail";
}
}
}