第一个页面需要用来传递要充值的金额和用户的ID 因为要作为充值记录往本地的数据库里插入部分代码如下:
<%
String user_id2 = (String)session.getAttribute("uid");
String loginName2 = (String)session.getAttribute("loginName");
String total_fee = request.getParameter("total_fee");
String subject = null;
String alibody = null;
String trade_no = null;
if(user_id2==null){
response.sendRedirect("/user/login.jsp");
return;
}
else{
// 获取用户IP地址
String user_ip = request.getRemoteAddr();
// 订单号
trade_no = UtilDate.getOrderNum();
// 显示支付标题
subject = "在线充值订单("+trade_no+")";
// 显示支付备注
alibody = "在线充值(订单编号:"+trade_no+")";
// 插入数据库
PayMentDao dao = new PayMentDao();
dao.inserPayMent(trade_no,user_ip,user_id2,total_fee);
}
%>
<form action="onl_int_mk.jsp" method="post">
<TABLE width="703" height="104" align="center" cellspacing="1" bgcolor="#E6E6E6" style="margin-top:20px;" class="taba">
<TR>
<TD width="141" height="51" bgcolor="#F5F5F5" class=line_head>支付接口*:</TD>
<TD width="553" bgcolor="#FFFFFF" class=line_content>
<label for="select"></label>
<select name="select" id="select">
<option value="1">支付宝</option>
</select></TD>
</TR>
<TR>
<TD height="48" bgcolor="#F5F5F5" class=line_head>金额*:</TD>
<TD bgcolor="#FFFFFF" class=line_content> <span class="col2">
<input maxLength="6" size="6" name="total_fee" onfocus="if(Number(this.value)==0){this.value='';}"
value="0.01" /> <span>如:112.21</span>
</span></TD>
</TR>
</TABLE>
<div align="center" style="margin:0 auto; width:400px; height:80px; line-height:80px;">
<p>
<input type="submit" name="button" id="button" value="提 交" />
</p>
<p> </p>
</div>
</DIV></DIV>
</div>
</form>
到了第二个页面(onl_int_mk.jsp)这个页面是用来确认的,因为有可能用户不想买这个产品了 就想取消可以在这里取消代码如下:
<%
String user_id2 = (String)session.getAttribute("uid");
String loginName2 = (String)session.getAttribute("loginName");
String total_fee = request.getParameter("total_fee");
String subject = null;
String alibody = null;
String trade_no = null;
if(user_id2==null){
response.sendRedirect("/user/login.jsp");
return;
}
else{
// 获取用户IP地址
String user_ip = request.getRemoteAddr();
// 订单号
trade_no = UtilDate.getOrderNum();
// 显示支付标题
subject = "在线充值订单("+trade_no+")";
// 显示支付备注
alibody = "在线充值(订单编号:"+trade_no+")";
// 插入数据库
PayMentDao dao = new PayMentDao();
dao.inserPayMent(trade_no,user_ip,user_id2,total_fee);
}
%>
<form action="/alipay/alipayto.jsp" method="post">
<input type="hidden" name="subject" value="<%=subject%>" />
<input type="hidden" name="alibody" value="<%=alibody%>" />
<input type="hidden" name="total_fee" value="<%=total_fee%>"/>
<input type="hidden" name="trade_no" value="<%=trade_no%>"/>
<TABLE width="703" height="104" align="center" cellspacing="1" bgcolor="#E6E6E6" style="margin-top:20px;" class="taba">
<TR>
<TD width="141" height="51" bgcolor="#F5F5F5" class=line_head>支付接口*:</TD>
<TD width="553" bgcolor="#FFFFFF" class=line_content>
<label for="select"></label>
支付宝</option>
</TD>
</TR>
<TR>
<TD height="48" bgcolor="#F5F5F5" class=line_head>金额*:</TD>
<TD bgcolor="#FFFFFF" class=line_content> <span class="col2"> <%=total_fee %></span></TD>
</TR>
</TBODY></TABLE>
<div align="center" style="margin:0 auto; width:400px; height:80px; line-height:80px;">
<p>
<input type="submit" name="button" id="button" value="确认支付" />
</p>
<p> </p>
</div>
</DIV></DIV>
</div>
</form>
到了第三个页面(alipayto.jsp)这个页面是关键因为所有的操作包括请求支付宝的信息都在这个页面里包含 具体代码如下:
<%
/* *
*功能:即时到帐接口接入页
*版本:3.2
*日期:2011-03-17
*说明:
*以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
*************************注意*****************
*如果您在接口集成过程中遇到问题,可以按照下面的途径来解决
*1、商户服务中心(https://b.alipay.com/support/helperApply.htm?action=consultationApply),提交申请集成协助,我们会有专业的技术工程师主动联系您协助解决
*2、商户帮助中心(http://help.alipay.com/support/232511-16307/0-16307.htm?sh=Y&info_type=9)
*3、支付宝论坛(http://club.alipay.com/read-htm-tid-8681712.html)
*如果不想使用扩展功能请把扩展功能参数赋空值。
**********************************************
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="com.alipay.services.*"%>
<%@ page import="com.alipay.util.*"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>支付宝即时到帐接口</title>
</head>
<%
////////////////////////////////////请求参数//////////////////////////////////////
//必填参数//
//请与贵网站订单系统中的唯一订单号匹配
String out_trade_no = request.getParameter("trade_no");
//订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
String subject = new String(request.getParameter("subject").getBytes("utf-8"),"utf-8");
//订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
String body = new String(request.getParameter("alibody").getBytes("utf-8"),"utf-8");
//订单总金额,显示在支付宝收银台里的“应付总额”里
String total_fee = request.getParameter("total_fee");
//扩展功能参数——默认支付方式//
//默认支付方式,取值见“即时到帐接口”技术文档中的请求参数列表
String paymethod = "";
//默认网银代号,代号列表见“即时到帐接口”技术文档“附录”→“银行列表”
String defaultbank = "";
//扩展功能参数——防钓鱼//
//防钓鱼时间戳
String anti_phishing_key = "";
//获取客户端的IP地址,建议:编写获取客户端IP地址的程序
String exter_invoke_ip= "";
//注意:
//1.请慎重选择是否开启防钓鱼功能
//2.exter_invoke_ip、anti_phishing_key一旦被设置过,那么它们就会成为必填参数
//3.开启防钓鱼功能后,服务器、本机电脑必须支持远程XML解析,请配置好该环境。
//4.建议使用POST方式请求数据
//示例:
//anti_phishing_key = AlipayService.query_timestamp(); //获取防钓鱼时间戳函数
//exter_invoke_ip = "202.1.1.1";
//扩展功能参数——其他///
//自定义参数,可存放任何内容(除=、&等特殊字符外),不会显示在页面上
String extra_common_param = "";
//默认买家支付宝账号
String buyer_email = "";
//商品展示地址,要用http:// 格式的完整路径,不允许加?id=123这类自定义参数
String show_url = "";
//扩展功能参数——分润(若要使用,请按照注释要求的格式赋值)//
//提成类型,该值为固定值:10,不需要修改
String royalty_type = "";
//提成信息集
String royalty_parameters ="";
//注意:
//与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条
//各分润金额的总和须小于等于total_fee
//提成信息集格式为:收款方Email_1^金额1^备注1|收款方Email_2^金额2^备注2
//示例:
//royalty_type = "10"
//royalty_parameters = "[email protected]^0.01^分润备注一|[email protected]^0.01^分润备注二"
//////////////////////////////////////////////////////////////////////////////////
//把请求参数打包成数组
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp.put("payment_type", "1");
sParaTemp.put("out_trade_no", out_trade_no);
sParaTemp.put("subject", subject);
sParaTemp.put("body", body);
sParaTemp.put("total_fee", total_fee);
sParaTemp.put("show_url", show_url);
sParaTemp.put("paymethod", paymethod);
sParaTemp.put("defaultbank", defaultbank);
sParaTemp.put("anti_phishing_key", anti_phishing_key);
sParaTemp.put("exter_invoke_ip", exter_invoke_ip);
sParaTemp.put("extra_common_param", extra_common_param);
sParaTemp.put("buyer_email", buyer_email);
sParaTemp.put("royalty_type", royalty_type);
sParaTemp.put("royalty_parameters", royalty_parameters);
//构造函数,生成请求URL
String sHtmlText = AlipayService.create_direct_pay_by_user(sParaTemp);
System.out.println(sHtmlText);
out.println(sHtmlText);
%>
<body>
</body>
</html>
OK了 很简单