文档章节

Spring MVC 使用支付宝接口完成在线支付的示例代码

x
 xp半梦半醒
发布于 2017/09/01 14:57
字数 949
阅读 33
收藏 0
点赞 0
评论 0

本篇文章主要介绍了Spring MVC 使用支付宝接口完成在线支付的示例代码,具有一定的参考价值,有兴趣的可以了解一下

项目中要使用到在线支付功能 目前常用的在线支付手段主要是 支付宝 和微信。 

这里我使用的是支付宝支付,支付宝有个好处就是他有一个沙箱模式 即使没有申请渠道的资格也可以体验一把在线支付。

第一步:完善沙箱信息 

进入支付宝的开发者中心 就可以看到有个沙箱环境

使用支付宝提供的秘钥生成工具 生成对应的秘钥 一定要保存好。支付宝推荐使用RSA2(SHA256)秘钥 

把自己的公钥填上去就可以了。

http://files.jb51.net/file_images/article/201708/2017811151050673.png?201771115115

第二步 阅读在线支付开发文档

里面需要的配置信息 对应的使用沙箱环境的信息

第三步 环境搭建

下载服务端SDK 并添加到项目中

这里我使用的maven项目 导入本地jar包采用了下列方式

<dependency>

     <groupId>com.alipay</groupId>

     <artifactId>alipay</artifactId>

     <version>1.1.1</version>

     <scope>system</scope>

     <!--本地jar的路径,相对或者绝对都可以-->

     <systemPath>${project.basedir}/lib/alipay-sdk-java20170307171631.jar</systemPath>

   </dependency>

   <dependency>

     <groupId>com.alipay1</groupId>

     <artifactId>commons</artifactId>

     <version>1.1.1</version>

     <scope>system</scope>

     <!--本地jar的路径,相对或者绝对都可以-->

     <systemPath>${project.basedir}/lib/commons-logging-1.1.1.jar</systemPath>

   </dependency>

 

1、  调用接口 启动支付页面 具体参数说明 请查看文档

2、 //转到支付页面

3、     //初始化客户端 只需要实例化一次(线程安全)

4、     AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do"

5、         , "2016080300153333", GlobalConstant.APP_PRIVATE_KEY, "json", "UTF-8", GlobalConstant.ALIPAY_PUBLIC_KEY, "RSA2");

6、     AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//创建API对应的request

7、     //在公共参数中设置回跳和通知地址

8、     alipayRequest.setReturnUrl("回跳地址");

9、     //异步回调一定是要在外网 不然支付宝服务器无法访问

10、     alipayRequest.setNotifyUrl("异步回调地址");

11、     alipayRequest.setBizContent("{" +

12、         "  \"out_trade_no\":\"" + orderId + "\"," +

13、         "  \"total_amount\":\"" + fetchParcel.getMoney() + "\"," +

14、         "  \"subject\":\"代领快递\"," +

15、         "  \"seller_id\":\"2088102169684935\"," +

16、         "  \"product_code\":\"QUICK_WAP_PAY\"" +

17、         " }");//填充业务参数

18、     String form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单

19、     httpResponse.setContentType("text/html;charset=utf-8");

20、     httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面

21、     httpResponse.getWriter().flush();

 

1、接收同步回调展示 结果 此结果只是展示,具体状态必须依赖支付宝的异步通知

2、接收异步回调更改订单状态 支付宝的异步回调 是服务器之间的通讯并不会产生页面 并且 设置的回调地址 

一定是要在外网上的 不然支付宝的服务器是无法访问该地址的 

对回调得到的信息要使用支付宝的api进行校验

//将异步通知中收到的所有参数都存放到map中

  Map<String, String> paramsMap =new HashMap<>();

  paramsMap.put("tarde_no",trade_no);

  paramsMap.put("trade_status",trade_status);

  paramsMap.put("total_amount",total_amount);

  paramsMap.put("out_trade_no",out_trade_no);

  boolean signVerified = AlipaySignature.rsaCheckV1(paramsMap, GlobalConstant.ALIPAY_PUBLIC_KEY, "UTF-8", "RSA2");     //调用SDK验证签名

  if (signVerified) {

    //验签成功后,按照支付结果异步通知中的描述,对支付结果中的业务内容进行二次校验,校验成功后在response中返回success并继续商户自身业务处理,校验失败返回failure

    String out_trade_no1 = paramsMap.get("out_trade_no");

    String trade_status1 = paramsMap.get("trade_status");

    logger.info(out_trade_no1+":"+trade_status1);

    return "success";

  } else {

    //验签失败则记录异常日志,并在response中返回failure.

    return "failure";

  }

 

4 进行支付体验

http://files.jb51.net/file_images/article/201708/2017811151220306.png?2017711151232

这里选择支付宝账号登录 账号 密码 在沙箱环境中可以找到 (买家账号)建议下载支付宝沙箱钱包 可以模拟在线支付调用钱包客户端的效果

以上就是本文的全部内容,希望对大家的学习有所帮助

 

© 著作权归作者所有

共有 人打赏支持
x
粉丝 0
博文 3
码字总数 1893
作品 0
苏州
小柒2012/springMvc-dubbo-pay

springMvc-dubbo-pay 此版本为springMvc整合版,boot版本见spring-boot-pay 有时候开发者想要的不一定是一个大而全的项目,而是可以集成到适合我们项目中的Demo。 以下所有支付Demo,绝非唬人...

小柒2012 ⋅ 2017/08/09 ⋅ 0

轻量级支付整合轻松嵌入任何系统 - pay-java-parent

轻量级支付模块集成(微信支付,友店扫码,支付宝,富友,银联, payoneer皮卡 )支付整合,app,扫码,即时到帐刷卡付条码付、支持多种支付类型多支付账户,支付与业务完全剥离,简单几行代码即可实...

egzosn ⋅ 2017/02/17 ⋅ 8

小柒2012/spring-boot-pay

spring-boot-pay 支付服务:支付宝,微信,银联详细 代码案例 (除银联支付可以测试以外,支付宝和微信支付测试均需要企业认证,个人无法完成测试),项目启动前请仔细阅读 注意事项 。 API接口...

小柒2012 ⋅ 2017/08/02 ⋅ 0

IJPay 0.7 版本发布,此刻让红包满天飞

IJPay 0.7 版本发布-此刻让红包满天飞 版本更新 重构微信红包接口 银联支付添加二维码支付的支持 银联支付添加代收的支持(代付业务新版本已取消即新版本无法实现提现的功能) 更新支付宝SDK,...

Javen ⋅ 2017/10/30 ⋅ 11

IJPay 0.8 版本发布,兼容低版本 JDK

IJPay 0.8 版本已发布,更新如下内容: 1.兼容低版本的JDK,目前已兼容至1.6 2.统一支付宝接口命名名称 IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付常用的支付方式以及各种...

Javen ⋅ 2017/11/17 ⋅ 12

LeeCX - 开源后台管理系统简单介绍

我们在github上开源了一个后台管理系统,使用了前端css框架并且简单的封装了一下,技术的将会不间断更新,详细可以点击原文链接。具体介绍如下: LeeCX 开源后台管理系统,前端基于bootstrap...

风间影月 ⋅ 2017/09/20 ⋅ 0

IJPay 发布 0.6 版本,落地银联支付

IJPay 让支付触手可及,封装了微信支付、支付宝支付常用的支付方式以及各种常用的接口。不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。...

Javen ⋅ 2017/10/12 ⋅ 7

2017 码云最火开源项目 TOP 50,究竟谁能“吃鸡”?

2017 年度码云热门项目排行榜 TOP 50 出炉啦!我们根据所有开源项目在码云的用户关注度、活跃度、访问量等信息来对“热门”进行量化,从而筛选出了其中最“热门”的 50 个,它在一定程度上预...

oschina ⋅ 01/15 ⋅ 18

为电子商务网站添加在线支付功能

网页制作Webjx文章简介:为了方便买家们在网站购物时能够在线支付货款并有效提升网站档次,作为购物网站的站长有必要给网站增添在线支付功能,这也是商务网站发展的大势所趋。拥有在线支付功...

james_laughing ⋅ 2015/01/15 ⋅ 0

第三方支付过程中session失效问题

第三方支付过程中session失效问题 时间 2015-05-13 12:36:23 IT社区推荐资讯 原文 http://itindex.net/detail/53436-session-问题 主题 Java 问题产行于公司p2c交易平台的一个用户充值模块。...

thinkyoung ⋅ 2015/11/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何优雅的编程——C语言界面的一点小建议

我们鼓励在编程时应有清晰的哲学思维,而不是给予硬性规则。我并不希望你们能认可所有的东西,因为它们只是观点,观点会随着时间的变化而变化。可是,如果不是直到现在把它们写在纸上,长久以...

柳猫 ⋅ 34分钟前 ⋅ 0

从零手写 IOC容器

概述 IOC (Inversion of Control) 控制反转。熟悉Spring的应该都知道。那么具体是怎么实现的呢?下面我们通过一个例子说明。 1. Component注解定义 package cn.com.qunar.annotation;impo...

轨迹_ ⋅ 35分钟前 ⋅ 0

系统健康检查利器-Spring Boot-Actuator

前言 实例由于出现故障、部署或自动缩放的情况,会进行持续启动、重新启动或停止操作。它可能导致它们暂时或永久不可用。为避免问题,您的负载均衡器应该从路由中跳过不健康的实例,因为它们...

harries ⋅ 36分钟前 ⋅ 0

手把手教你搭建vue-cli脚手架-详细步骤图文解析[vue入门]

写在前面: 使用 vue-cli 可以快速创建 vue 项目,vue-cli很好用,但是在最初搭建环境安装vue-cli及相关内容的时候,对一些人来说是很头疼的一件事情,本人在搭建vue-cli的项目环境的时候也是...

韦姣敏 ⋅ 47分钟前 ⋅ 0

12c rman中输入sql命令

12c之前版本,要在rman中执行sql语句,必须使用sql "alter system switch logfile"; 而在12c版本中,可以支持大量的sql语句了: 比如: C:\Users\zhengquan>rman target / 恢复管理器: Release 1...

tututu_jiang ⋅ 今天 ⋅ 0

Nginx的https配置记录以及http强制跳转到https的方法梳理

Nginx的https配置记录以及http强制跳转到https的方法梳理 一、Nginx安装(略) 安装的时候需要注意加上 --with-httpsslmodule,因为httpsslmodule不属于Nginx的基本模块。 Nginx安装方法: ...

Yomut ⋅ 今天 ⋅ 0

SpringCloud Feign 传递复杂参数对象需要注意的地方

1.传递复杂参数对象需要用Post,另外需要注意,Feign不支持使用GetMapping 和PostMapping @RequestMapping(value="user/save",method=RequestMethod.POST) 2.在传递的过程中,复杂对象使用...

@林文龙 ⋅ 今天 ⋅ 0

如何显示 word 左侧目录大纲

打开word说明文档,如下图,我们发现左侧根本就没有目录,给我们带来很大的阅读障碍 2 在word文档的头部菜单栏中,切换到”视图“选项卡 3 然后勾选“导航窗格”选项 4 我们会惊奇的发现左侧...

二营长意大利炮 ⋅ 今天 ⋅ 0

智能合约编程语言Solidity之线上开发工具

工具地址:https://ethereum.github.io/browser-solidity/ 实例实验: 1.创建hello.sol文件 2.调试输出结果

硅谷课堂 ⋅ 今天 ⋅ 0

ffmpeg 视频格式转换

转 Mp4 格式 #> ffmpeg -i input.avi -c:v libx264 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 -s 1......

Contac ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部