Java如何实现支付宝电脑支付基于servlet版本
这篇文章主要介绍了Java如何实现支付宝电脑支付基于servlet版本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
前期准备:
蚂蚁金融开放平台进行登录操作
这里的RSA2密钥设置下,我已经设置好了,所以便有了支付宝公钥(公钥是对外公开的,私钥是自己保留的具体的不多做解释)
至于RSA2密钥的生成,可参考如下操作:
生成后在工具文件夹如下路径可以查看自己生成的公钥和私钥一对
官方DEMO因为我们需要一些jar包和可参考类,所以拿个DEMO方便很多
实例编写:
工具我这里用的是eclipse,这个影响不大~
新建web项目
项目所需要的类如下
AlipayConfig.java
packagecn.taosir.demo;
publicclassAlipayConfig{
//页面跳转同步通知页面路径需http://格式的完整路径,不能加?id=123这类自定义参数
publicstaticStringreturn_url="http://localhost:8080/success.jsp";
//服务器异步通知页面路径需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
publicstaticStringnotify_url="http://localhost:8080/notify";
//应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
publicstaticStringapp_id="";
//支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm对应APPID下的支付宝公钥。
publicstaticStringalipay_public_key="";
//商户私钥,您的PKCS8格式RSA2私钥
publicstaticStringmerchant_private_key="";
//签名方式
publicstaticStringsign_type="RSA2";
//字符编码格式
publicstaticStringcharset="utf-8";
//支付宝网关
publicstaticStringgatewayUrl="https://openapi.alipaydev.com/gateway.do";
}
APPID(在查看支付宝公钥位置上方)、支付宝公钥、自己的私钥,记得配上
NoitfyServlet.java
packagecn.taosir.demo;
importjava.io.IOException;
importjava.util.Map;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
@WebServlet("/notify")
publicclassNotifyServletextendsHttpServlet{
@Override
protectedvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
System.out.println("接收到支付宝的异步通知请求——");
MapparameterMap=request.getParameterMap();
System.out.println(parameterMap);
//成功处理后返回success
response.getWriter().write("success");
}
}
OrderServlet.java
packagecn.taosir.demo;
importjava.io.IOException;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.alipay.api.AlipayApiException;
importcom.alipay.api.AlipayClient;
importcom.alipay.api.DefaultAlipayClient;
importcom.alipay.api.request.AlipayTradePagePayRequest;
importcom.alipay.api.response.AlipayTradePagePayResponse;
@WebServlet("/order/confirm")
publicclassOrderServletextendsHttpServlet{
@Override
protectedvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
System.out.println("开始处理OrderServlet的服务");
Stringtitle="涛先森";
Stringtotal="666666";
Stringmessage="如有什么建议欢迎留言评论";
//生成订单号
SimpleDateFormatsimpleDateFormat=newSimpleDateFormat("yyyyMMddHHmmss");
StringorderSn=simpleDateFormat.format(Calendar.getInstance().getTime());
//向支付宝发送请求
//获得初始化的AlipayClient
AlipayClientalipayClient=newDefaultAlipayClient(AlipayConfig.gatewayUrl,AlipayConfig.app_id,
AlipayConfig.merchant_private_key,"json",AlipayConfig.charset,AlipayConfig.alipay_public_key,
AlipayConfig.sign_type);
//设置请求参数
AlipayTradePagePayRequestalipayRequest=newAlipayTradePagePayRequest();
alipayRequest.setReturnUrl(AlipayConfig.return_url);
alipayRequest.setNotifyUrl(AlipayConfig.notify_url);
//商户订单号,商户网站订单系统中唯一订单号,必填
Stringout_trade_no=orderSn;
//付款金额,必填
Stringtotal_amount=total;
//订单名称,必填
Stringsubject=title;
//商品描述,可空
Stringbody=message;
alipayRequest.setBizContent("{\"out_trade_no\":\""+out_trade_no+"\","+"\"total_amount\":\""
+total_amount+"\","+"\"subject\":\""+subject+"\","+"\"body\":\""+body+"\","
+"\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
//若想给BizContent增加其他可选请求参数,以增加自定义超时时间参数timeout_express来举例说明
//alipayRequest.setBizContent("{\"out_trade_no\":\""+out_trade_no+"\","
//+"\"total_amount\":\""+total_amount+"\","
//+"\"subject\":\""+subject+"\","
//+"\"body\":\""+body+"\","
//+"\"timeout_express\":\"10m\","
//+"\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
//请求参数可查阅【电脑网站支付的API文档-alipay.trade.page.pay-请求参数】章节
AlipayTradePagePayResponsealipayResponse=null;
try{
alipayResponse=alipayClient.pageExecute(alipayRequest);
System.out.println(alipayResponse.getBody());
System.out.println(alipayResponse.getMsg());
}catch(AlipayApiExceptione){
e.printStackTrace();
}
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(alipayResponse.getBody());
}
}
至此,大功告成
下面开始测试
将项目部署到tomcat上run起来
http://localhost:8080/alipay-demo/order/confirm可以看到页面通过该请求跳转到了支付宝的接口
这里我们点击右边登录账户付款
账号和密码可在沙箱平台查看个人账号
之后登录就支付了,正常就跳转到了支付成功页面。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短