下载手机网站支付SDK&Demo,下载地址:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.ggALEe&treeId=203&articleId=105910&docType=1,把稳下载JAVA版,该项目是参考项目demo,运行环境须要支持jdk1.5及以上。下载完成后解压并将项目导入eclipse中,即可。
须要公司注册支付宝,供应互助者身份ID和安全校验码KEY此为条件,否则就没有必要连续往下看了。
支付宝需利用的Jar包如下:
alipay-sdk-java20170307171631-source.jar
alipay-sdk-java20170307171631.jar
commons-logging-1.1.1-sources.jar
commons-logging-1.1.1.jar
如果存在logging相应jar包,就不用将其放入lib目录下。
alipay 的几个内核功能文件,详细如下:
AlipayConfig.java
package com.alipay.config;
public class AlipayConfig {
// 商户appid
public static String APPID = \"大众\"大众;
// 私钥 pkcs8格式的
public static String RSA_PRIVATE_KEY = \"大众\公众;
// 做事器异步关照页面路径 需http://或者https://格式的完全路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String notify_url = \"大众http://商户网关地址/alipay.trade.wap.pay-JAVA-UTF-8/notify_url.jsp\"大众;
// 页面跳转同步关照页面路径 需http://或者https://格式的完全路径,不能加?id=123这类自定义参数,
//必须外网可以正常访问 商户可以自定义同步跳转地址
public static String return_url = \公众http://商户网关地址/alipay.trade.wap.pay-JAVA-UTF-8/return_url.jsp\"大众;
// 要求网关地址
public static String URL = \公众https://openapi.alipay.com/gateway.do\"大众;
// 编码
public static String CHARSET = \公众UTF-8\公众;
// 返回格式
public static String FORMAT = \"大众json\公众;
// 支付宝公钥
public static String ALIPAY_PUBLIC_KEY = \公众MIIBIjANBgkqhkiG9w0BAQEFAA
OCAQ8AMIIBCgKCAQEAjrEVFMOSiNJXaRNKicQuQdsREraftDA9Tua3WNZwcpeXeh8Wrt+V9JilLqSa7N7sV
qwpvv8zWChgXhX/A96hEg97Oxe6GKUmzaZRNh0cZZ88vpkn5tlgL4mH/dhSr3Ip00kvM4rHq9PwuT4k7z1Dp
ZAf1eghK8Q5BgxL88d0X07m9X96Ijd0yMkXArzD7jg+noqfbztEKoH3kP
MRJC2w4ByVdweWUT2PwrlATpZZtYLmtDvUKG/sOkNAIKEMg3Rut1oKWpjyYanzDgS7Cg3awr1KPTl9rHCazk
15aNYowmYtVabKwbGVToCAGK+qQ1gT3ELhkGnf3+h53fukNqRH+wIDAQAB\"大众;
// 日志记录目录
public static String log_path = \"大众/log\"大众;
// RSA2
public static String SIGNTYPE = \公众RSA2\"大众;
}
notify_url.jsp
<%
//获取支付宝POST过来反馈信息
Map params = new HashMap();
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] + \"大众,\公众;
}
//乱码办理,这段代码在涌现乱码时利用。如果mysign和sign不相等也可以利用这段代码转化
//valueStr = new String(valueStr.getBytes(\"大众ISO-8859-1\公众), \"大众gbk\"大众);
params.put(name, valueStr);
}
//获取支付宝的关照返回参数,可参考技能文档中页面跳转同步关照参数列表(以下仅供参考)//
//商户订单号
String out_trade_no = new String(request.getParameter(\公众out_trade_no\"大众).getBytes(\"大众ISO-8859-1\公众),\"大众UTF-8\公众);
//支付宝交易号
String trade_no = new String(request.getParameter(\公众trade_no\公众).getBytes(\"大众ISO-8859-1\公众),\公众UTF-8\"大众);
//交易状态
String trade_status = new String(request.getParameter(\"大众trade_status\"大众).getBytes(\"大众ISO-8859-1\公众),\"大众UTF-8\"大众);
//获取支付宝的关照返回参数,可参考技能文档中页面跳转同步关照参数列表(以上仅供参考)//
//打算得出关照验证结果
//boolean AlipaySignature.rsaCheckV1(Map params, String publicKey, String charset, String sign_type)
boolean verify_result = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, \公众RSA2\"大众);
if(verify_result){//验证成功
//////////////////////////////////////////////////////////////////////////////////////////
//请在这里加上商户的业务逻辑程序代码
//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
if(trade_status.equals(\"大众TRADE_FINISHED\公众)){
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并实行商户的业务程序
//请务必判断要求时的total_fee、seller_id与关照时获取的total_fee、seller_id为同等的
//如果有做过处理,不实行商户的业务程序
//把稳:
//如果签约的是可退款协议,退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态关照
//如果没有签约可退款协议,那么付款完成后,支付宝系统发送该交易状态关照。
} else if (trade_status.equals(\"大众TRADE_SUCCESS\"大众)){
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并实行商户的业务程序
//请务必判断要求时的total_fee、seller_id与关照时获取的total_fee、seller_id为同等的
//如果有做过处理,不实行商户的业务程序
//把稳:
//如果签约的是可退款协议,那么付款完成后,支付宝系统发送该交易状态关照。
}
//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
out.clear();
out.println(\"大众success\公众);//请不要修正或删除
//////////////////////////////////////////////////////////////////////////////////////////
}else{//验证失落败
out.println(\"大众fail\公众);
}
%>
return_url.jsp
<%@page import=\公众com.alipay.api.internal.util.AlipaySignature\公众>
pay.jsp
支付宝手机网站支付接口 支付宝手机网站支付接口快速通道(接口名:alipay.trade.wap.pay) 商户订单号: 订单名称: 付款金额: 商品描述: 确 认 如果您点击“确认”按钮,即表示您赞许该次的实行操作。
支付宝版权所有 2015-2018 ALIPAY.COM
配置支付宝相应参数信息,详细如下:
// 商户appid
public static String APPID = \公众\公众;
// 私钥 pkcs8格式的
public static String RSA_PRIVATE_KEY = \公众\"大众;
// 做事器异步关照页面路径 需http://或者https://格式的完全路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String notify_url = \"大众http://商户网关地址/alipay.trade.wap.pay-JAVA-UTF-8/notify_url.jsp\"大众;
// 页面跳转同步关照页面路径 需http://或者https://格式的完全路径,不能加?id=123这类自定义参数,必须外网可以正常访问 商户可以自定义同步跳转地址
public static String return_url = \"大众http://商户网关地址/alipay.trade.wap.pay-JAVA-UTF-8/return_url.jsp\公众;
// 要求网关地址
public static String URL = \公众https://openapi.alipay.com/gateway.do\"大众;
// 编码
public static String CHARSET = \"大众UTF-8\"大众;
// 返回格式
public static String FORMAT = \公众json\公众;
// 支付宝公钥
public static String ALIPAY_PUBLIC_KEY = \"大众MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjrEVFMOSiNJXaRNKicQuQdsREraftDA9Tua3WNZwcpeXeh8Wrt+V9JilLqSa7N7sVqwpvv8zWChgXhX/A96hEg97Oxe6GKUmzaZRNh0cZZ88vpkn5tlgL4mH/dhSr3Ip00kvM4rHq9PwuT4k7z1DpZAf1eghK8Q5BgxL88d0X07m9X96Ijd0yMkXArzD7jg+noqfbztEKoH3kPMRJC2w4ByVdweWUT2PwrlATpZZtYLmtDvUKG/sOkNAIKEMg3Rut1oKWpjyYanzDgS7Cg3awr1KPTl9rHCazk15aNYowmYtVabKwbGVToCAGK+qQ1gT3ELhkGnf3+h53fukNqRH+wIDAQAB\"大众;
// 日志记录目录
public static String log_path = \公众/log\公众;
// RSA2
public static String SIGNTYPE = \"大众RSA2\"大众;
将商户appid、私钥、notify_url、return_url、支付宝公钥等配置信息填写精确。
配置完毕后启动项目,访问http://localhost:8081/alipay地址,选择手机网站2.0支付(接口名:alipay.trade.wap.pay)链接,详细如图:
即时到账
支付