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

2025-05-29 0 89

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

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

第一步:完善沙箱信息

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

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

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

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

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

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

第三步 环境搭建

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

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16
<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、调用接口 启动支付页面 具体参数说明 请查看文档

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20
//转到支付页面

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

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

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

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

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

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

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

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

alipayRequest.setBizContent("{" +

" \\"out_trade_no\\":\\"" + orderId + "\\"," +

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

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

" \\"seller_id\\":\\"2088102169684935\\"," +

" \\"product_code\\":\\"QUICK_WAP_PAY\\"" +

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

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

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

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

httpResponse.getWriter().flush();

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

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

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

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
//将异步通知中收到的所有参数都存放到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步 进行支付体验

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:http://blog.csdn.net/mixi9760/article/details/66473368

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Spring MVC 使用支付宝接口完成在线支付的示例代码 https://www.kuaiidc.com/115224.html

相关文章

发表评论
暂无评论