前期准备:

蚂蚁金融开放平台 进行登录操作

进入我的开放平台

在上方找到沙箱,进入沙箱(网络编程虚拟执行环境)。

这里的RSA2密钥设置下,我已经设置好了,所以便有了支付宝公钥(公钥是对外公开的,私钥是自己保留的具体的不多做解释)

至于RSA2密钥的生成,可参考如下操作:

生成后在工具文件夹如下路径可以查看自己生成的公钥和私钥一对

私钥保留,公钥设置到开发者平台RSA2上便可以了。

官方DEMO 因为我们需要一些jar包和可参考类,所以拿个DEMO方便很多

所需要的jar包路径如下

实例编写:

工具我这里用的是eclipse,这个影响不大~

新建web项目

项目所需要的类如下

AlipayConfig.java

  1. package cn.taosir.demo;
  2.  
  3. public class AlipayConfig {
  4. // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数
  5. public static String return_url = "http://localhost:8080/success.jsp";
  6. // 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
  7. public static String notify_url = "http://localhost:8080/notify";
  8. // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
  9. public static String app_id = "";
  10. // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
  11. public static String alipay_public_key = "";
  12. // 商户私钥,您的PKCS8格式RSA2私钥
  13. public static String merchant_private_key = "";
  14. // 签名方式
  15. public static String sign_type = "RSA2";
  16. // 字符编码格式
  17. public static String charset = "utf-8";
  18. // 支付宝网关
  19. public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
  20. }

APPID(在查看支付宝公钥位置上方)、支付宝公钥、自己的私钥,记得配上

NoitfyServlet.java

  1. package cn.taosir.demo;
  2.  
  3. import java.io.IOException;
  4. import java.util.Map;
  5.  
  6. import javax.servlet.ServletException;
  7. import javax.servlet.annotation.WebServlet;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11.  
  12. @WebServlet("/notify")
  13. public class NotifyServlet extends HttpServlet{
  14. @Override
  15. protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  16. System.out.println("接收到支付宝的异步通知请求——");
  17. Map<String,String[]> parameterMap=request.getParameterMap();
  18. System.out.println(parameterMap);
  19. //成功处理后返回success
  20. response.getWriter().write("success");
  21. }
  22. }

OrderServlet.java

  1. package cn.taosir.demo;
  2. import java.io.IOException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Calendar;
  5.  
  6. import javax.servlet.ServletException;
  7. import javax.servlet.annotation.WebServlet;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11.  
  12. import com.alipay.api.AlipayApiException;
  13. import com.alipay.api.AlipayClient;
  14. import com.alipay.api.DefaultAlipayClient;
  15. import com.alipay.api.request.AlipayTradePagePayRequest;
  16. import com.alipay.api.response.AlipayTradePagePayResponse;
  17.  
  18. @WebServlet("/order/confirm")
  19. public class OrderServlet extends HttpServlet{
  20. @Override
  21. protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  22. System.out.println("开始处理OrderServlet的服务");
  23. String title = "涛先森";
  24. String total = "666666";
  25. String message = "如有什么建议欢迎留言评论";
  26. //生成订单号
  27. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
  28. String orderSn = simpleDateFormat.format(Calendar.getInstance().getTime());
  29. //向支付宝发送请求
  30. //获得初始化的AlipayClient
  31. AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id,
  32. AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key,
  33. AlipayConfig.sign_type);
  34. //设置请求参数
  35. AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
  36. alipayRequest.setReturnUrl(AlipayConfig.return_url);
  37. alipayRequest.setNotifyUrl(AlipayConfig.notify_url);
  38. //商户订单号,商户网站订单系统中唯一订单号,必填
  39. String out_trade_no = orderSn;
  40. //付款金额,必填
  41. String total_amount = total;
  42. //订单名称,必填
  43. String subject = title;
  44. //商品描述,可空
  45. String body = message;
  46. alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\"," + "\"total_amount\":\""
  47. + total_amount + "\"," + "\"subject\":\"" + subject + "\"," + "\"body\":\"" + body + "\","
  48. + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
  49. //若想给BizContent增加其他可选请求参数,以增加自定义超时时间参数timeout_express来举例说明
  50. //alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
  51. // + "\"total_amount\":\""+ total_amount +"\","
  52. // + "\"subject\":\""+ subject +"\","
  53. // + "\"body\":\""+ body +"\","
  54. // + "\"timeout_express\":\"10m\","
  55. // + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
  56. //请求参数可查阅【电脑网站支付的API文档-alipay.trade.page.pay-请求参数】章节
  57. AlipayTradePagePayResponse alipayResponse = null;
  58. try {
  59. alipayResponse=alipayClient.pageExecute(alipayRequest);
  60. System.out.println(alipayResponse.getBody());
  61. System.out.println(alipayResponse.getMsg());
  62. } catch (AlipayApiException e) {
  63. e.printStackTrace();
  64. }
  65. response.setContentType("text/html;charset=UTF-8");
  66. response.getWriter().write(alipayResponse.getBody());
  67. }
  68. }

至此,大功告成

下面开始测试

将项目部署到tomcat上run起来

http://localhost:8080/alipay-demo/order/confirm 可以看到页面通过该请求跳转到了支付宝的接口

下载沙箱环境的支付宝APP可以扫码测试喔

这里我们点击右边登录账户付款

账号和密码可在沙箱平台查看个人账号

之后登录就支付了,正常就跳转到了支付成功页面。

如有错误的地方或建议欢迎留言,谢谢!

java实现支付宝电脑支付(servlet版本)的更多相关文章

  1. 支付宝电脑支付沙箱配置(JAVA)

    支付宝电脑支付API地址:https://docs.open.alipay.com/270/105899/.支付宝提供了沙箱环境提供测试,具体配置步骤如下 1.先下载测试DEMO工程 下载地址:htt ...

  2. tp5实现支付宝电脑支付(详解)

    首先吐槽一下支付宝的官方文档,它只是简单介绍一下开发的流程和参数,而对于新人来说如果只看它的官方文档很多时候是看不懂的,我也是边看文档边网上查资料才把它弄懂.下面我详细介绍支付宝的电脑支付是如何实现 ...

  3. 支付宝APP支付(基于Java实现支付宝APP支付)

    贴一下支付核心代码,以供后续参考: 业务层 import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; ...

  4. 支付宝app支付java后台流程、原理分析(含nei wang chuan tou)

    java版支付宝app支付流程及原理分析 本实例是基于springmvc框架编写     一.流程步骤         1.执行流程           当手机端app(就是你公司开发的app)在支付 ...

  5. 手把手教你完成App支付JAVA后台-支付宝支付JAVA

    接着上一篇博客,我们暂时完成了手机端的部分支付代码,接下来,我们继续写后台的代码. 后台基本需要到以下几个参数,我都将他们写在了properties文件中: 支付宝参数 AliPay.payURL = ...

  6. ASP.NET Core Web 支付功能接入 支付宝-电脑网页支付篇

    这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入支付宝-电脑网页支付接口及同步跳转及异步通知功能. 开发环境:Win 10 x64.VS2017 15.6.4..NET ...

  7. 【转载】ASP.NET Core Web 支付功能接入 支付宝-电脑网页支付篇

    转自:http://www.cnblogs.com/essenroc/p/8627775.html 这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入支付宝-电脑网页支付 ...

  8. java 支付宝wap支付初识

    最近突然想弄下支付宝的支付,因为感觉很好玩.中间遇到很多问题,查查找找,总算是整了两天给整出来了,这里为自己记录下. 第一步:直接去安卓支付宝的官方文档去,写的很清楚了已经,这里有源码https:// ...

  9. 支付宝手机网站支付(基于Java实现支付宝手机网站支付)

    支付宝支付核心需要的参数是(APPID,PRIVATE_KEY,ALIPAY_PUBLIC_KEY) APPID:创建应用后就有的APPID. PRIVATE_KEY:应用私钥 ALIPAY_PUBL ...

随机推荐

  1. PHP面向对象(一)

    1 面向对象介绍 1.1 介绍 ​ 面向对象是一个编思想. 编程思想有面向过程和面向对象. ​ 面向过程: 编程思路集中的是过程上 ​ 面向对象: 编程思路集中在参与的对象 1.2 好处 多人合作方便 ...

  2. SQL-Oracle-创建Dblink

    create database link DBLINK_IMARK_RAC connect to imark identified by imarkDB12345 using '(DESCRIPTIO ...

  3. java-类生命周期(二)

    上文介绍了java-类生命周期(一),理论性比較强.认为太复杂的同学,瞟一下本文的样例加深理解. 先给道题目,看看答对没. /** * 类载入试验基类 * * @author peter_wang * ...

  4. 微软ASP.NET网站部署指南(3):使用Web.Config文件的Transformations

    1. 综述 大多数程序里都会在Web.config里设置參数,而且在部署的时候须要更改. 每次都手工更改这些配置非常乏味,也easy出错. 该章节将会告诉你假设通过自己主动化更新Web.config文 ...

  5. 浅析Context Class Loader

    浅析Context Class Loader 2010-05-11 16:58:49 分类: Java 转载自 薛笛的专栏http://blog.csdn.net/kabini/archive/200 ...

  6. unity3d Pathfinding插件使用

    Overview The central script of the A* Pathfinding Project is the script 'astarpath.cs', it acts as a ...

  7. Cocos Code IDE

    https://www.cnblogs.com/luorende/p/6464181.html http://www.cocoachina.com/bbs/read.php?tid-464164.ht ...

  8. 英语发音规则---F字母

    英语发音规则---F字母 一.总结 一句话总结: 1.F/FF发[f]音? fly [flaɪ] vi. 飞 fine [faɪn] adj. 好的 float [fləʊt] vt. 使漂浮 fra ...

  9. python matplot 绘图

    import numpy as np import matplotlib.pyplot as plt plt.figure(1) # 创建图表1 plt.figure(2) # 创建图表2 ax1 = ...

  10. 41.使用SAX读取XML

    main.cpp #include <QtGui> #include <iostream> #include "saxhandler.h" int main ...