//支付类型 必填 不必修改
//服务器异步通知页面路径
//需http://格式的完整路径,不能加?id=123这类自定义参数
String notify_url
= "http://localhost:8080/alipay/async";
//页面跳转同步通知页面路径
//需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
String return_url
= "http://192.168.0.222:8080/alipay/return_url";
//订单名称
//必填
// String subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"),"UTF-8");
String subject
= new String("测试商品".
getBytes("ISO-8859-1"),
"UTF-8");
//付款金额
//必填
// String total_fee = new String(request.getParameter("WIDtotal_fee").getBytes("ISO-8859-1"),"UTF-8");
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", Constants.SELLER_EMAIL);//卖家支付宝账号
sParaTemp.put("out_trade_no", date.getTime()+payment_type);//商品订单编号
sParaTemp.put("subject", subject);//商品名称
sParaTemp.put("total_fee", total_fee);//价格
//建立请求
String sHtmlText
= AlipaySubmit.
buildRequest(sParaTemp,
"get",
"立即付款");
request.setAttribute("sHtmlText", sHtmlText);
return null;
Map
<String , String
> params
= new HashMap
<String, String
>();
Map requestParams
= request.
getParameterMap();
for (Iterator iter
= requestParams.
keySet().
iterator(); iter.
hasNext();) {
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")){
System.
out.
println("ok!>>>>>>>>" + tradeNo
);
}
return "success";
}else{
return "fail";
}
}
/**
* 支付宝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 {
// PrintWriter out = response.getWriter();
// 支付类型
// 必填,不能修改
// 服务器异步通知页面路径
// 需http://格式的完整路径,不能加?id=123这类自定义参数
String notify_url
= "http://192.168.0.222:8080/live/aliapi/async";
// 页面跳转同步通知页面路径
// 需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
String return_url
= "http://192.168.0.222:8080/live/aliapi/return_url";
// 商户订单号.
// 商户网站订单系统中唯一订单号,必填
//String out_trade_no = date.getTime() + "";
// 订单名称
// 必填
// 防钓鱼时间戳
// 若要使用请调用类文件submit中的query_timestamp函数
String anti_phishing_key
= "";
// 客户端的IP地址
// 非局域网的外网IP地址,如:221.0.0.1
String total_fee
= ServletRequestUtils.
getStringParameter(request,
"amount",
"");
String body
= ServletRequestUtils.
getStringParameter(request,
"body",
"test");
//商品展示地址
String show_url
= ServletRequestUtils.
getStringParameter(request,
"show_url",
"http://www.elve.cn");
//需以http://开头的完整路径,例如:http://www.xxx.com/myorder.html
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", 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;
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 requestParams
= request.
getParameterMap();
for (Iterator iter
= requestParams.
keySet().
iterator(); iter.
hasNext();) {
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");
//String notifyId = request.getParameter("notify_id");
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";
}
}
}
<%@ page contentType="text/html;charset=UTF-8" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<%@ include file="/common/webMeta.jsp"%>
<title>www.elve.cn</title>
<meta content="www.elve.cn" name="keywords" />
<meta content="www.elve.cn" name="description" />
</head>
<script type="text/javascript">
$(function(){
$("#amount").focus();
$("#doSubmit").click(function(){
form1.submit();
});
});
</script>
<body>
<form id="form1" action= "${ctx }/aliapi/deposit" method="post" target="_blank">
<table cellpadding="10">
<tr>
<td>充值测试</td>
<td class="balance" id="userBalance"></td>
</tr>
<tr>
<td><i class="zfb"></i></td>
<td style="padding-bottom: 0px;">亲爱的<span
class="suppliment_user" id="suppliment_user"></span>,您可以使用支付宝充值积善分,请填写以下信息
</td>
</tr>
<tr>
<td></td>
<td>
金额<input type="text" name="amount" id="amount">
</td>
</tr>
<tr>
<td></td>
<td><a href="javascript:void(0);" id="doSubmit" class="blank_btn">确认</a></td>
</tr>
</table>
</form>
</body>
</html>