springboot 支付宝支付(电脑网站)
springboot 支付宝支付(电脑支付)
应用:在电脑网页端使用支付宝支付
官方文档:https://opendocs.alipay.com/open/270
***************************
引入 jar 包
<dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.9.100.ALL</version>
</dependency>
***************************
示例
******************
配置文件
application.yml
alipay:appid: 2016092500591327gatewayUrl: https://openapi.alipaydev.com/gateway.doformat: JSONcharset: utf-8signType: RSA2notifyUrl: http://localhost:8080/notifyreturnUrl: http://localhost:8080/returnapp-private-key: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCcF+Oc3uJEFt59LXB30LkP/Ocn6cMtxTeeqiM99tzGi3nyMao33jPYjwKvQk+djDb7i4bgJNVjx5QtEuJruMsiOMUO34QzYqnSZLLdA8Oltbf5LG/+qJMnF+K1dw9DWvw5dF6rbXvvqMpzruBJ99ntbWBK5hE/ayYODPhmcQ8rLV0nedYCb4nIhQueF3l6pFDG5e/eRyTj3Vb6faSf30DTKhMk4Yvj3Mx3f8h4eGGjFvvbSKdO8oI8HQYkEQh8k8pqkkQs3FSawp5KNAH13CNzGEnLewsOaHiEEwT1qSTc7ppewp7oyP2KtXw9TQySlkNFyLorqUHjF71hgCFmDEIxAgMBAAECggEACT5c60hDq/aSvGT5eQ7yNqEqazGrrkU0kv/OUHgTAOr3kMEiLGbLOTLW3NwXbOQFyYWsug9UV7FU9ApfQDPUS7WC7euMn6JjHiN6eB4l8uU8/NOF2lXPSQxgD5D6ZWm48AoVJR+5rCqZupoLjDXSQP4uKqFPOis1OLXJ6/8b/9l7L0jf2eW70Ht6HrNxfXTAn07FoJAEHnjePCgyYHuor9oD/0bi/0KRJkeQtqMZHX3oYhhYmQzIMTXIi9hMd+U6lmaknDFV8AMOfemX0Dq6KNYPwWP86YWelZ230xHXgE3Jk493unFZetliGG6vVyq4Whd5OTcXmE64+8GRKxO5QQKBgQDOwRR4KhyqbA7LXjyNhYXr86pOEt4wpeZGFsbcryRsxf0HSZpVWwUMVsOFkHRBZ3InbkfRCdHMBcqiA5dDwYOyo4l0R7sWdc9rteXvLdw57tBDbkiLK2HW+iUP0mXXghiD7ynyaAyLdvu5upUdDj1G1OI40Ye1ThOK60WseXyC6QKBgQDBRb2dg4YDKh0HtTsl8e/A1rPzob7KyRSi7bY31WtEOETeY6FMsC9jMm6fxJtT+Xtp5XfrWhQptn0E1fLJ7c7TAM1hFs2YBzOLKzinVxo0nFfRGkMrBotoAQmh+SKME1BjyW8qGeVIC8DSSazvVDDpp3Z6+WjNESL7e8yAn3VoCQKBgDVxGwVkfTxf6gMPPL+n/9HZje/YWK5ic38ya/ynGNc05g54K/hcKpXh53AiwqoVPyCKFO4nh58g8BuoqfTNlGkcdG8mC2nm0dKZlfGY/Q/MdvC3FPFEKWoUBnhsff6SlhukOkd6NaPnAXIklF6KS7R/WmotXtKyd8K0xbGrRU/hAoGAX4diHp3oul2xdaLddnbsA0vcLFrRHBhhq9qFC3ngiBqr56QlEOuwsH438Z5TDCGvH3t9V4Xxm2CI0MATPj3d0at+2DNWMYO1tV8KpKPH3yM7wK4TbwvQEfsZUMb8jXHqdTgWSx/7lS3CA+7InI7nkkXkqQnoBBwpR1Y8kYK/nEkCgYBmVBBabnYfaUkooDBPOZu7xCQH1xf+yPV0jH8T8FMYFn6biCXVnHhjZ5Mm8h8Y7gctRpZtqnG30TD71HLsRohxfQkxRyp9NvhiJpingBL860lM89JA3C/pNDf8FV3hq4RFIPDkBA3v7QbytDTNl4bQ7oYiFegWndLVBboNIntNFg==alipay-public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1ynoaKrpzpipzhsivNwIRBrEPMeFYLWkWSMU9E3KAdBBpSGHN9x3OVWYe/F3yxRgLtbOdqN1DBYiKLUBvUu2NAqH1KV6nkt3Rx/gc7MKMwL+TWBmXKX5L1eK17TOPKMXoqVN5grFrCH0hx/U6lZnr2M/7A93yPlSKLgJwVYj560wzElBL+fvjR0V0OA+FWJryKluBtJYUKXBadFKuyVwNnyGqmHFxvtSHuErhOrg0YiYIfhV3f7zE5q1mIz7ecwH0W7nB7gtFjLt1k4WSpwyeEI8Xpl7SLMvHdwEXUwTU0h/V7TumYWgUe0ft70NTps+zPwJlmcEluHg0VSs7UrDVQIDAQAB
说明:app-private-key为应用私钥,alipay-public-key为支付宝公钥
******************
config 层
AlipayProperties
@Data
@Component
@ConfigurationProperties("alipay")
public class AlipayProperties {private String appId;private String gatewayUrl;private String format;private String charset;private String signType;private String appPrivateKey;private String alipayPublicKey;private String returnUrl;private String notifyUrl;
}
AlipayConfig:创建alipayClient客户端
@Configuration
public class AlipayConfig {@Resourceprivate AlipayProperties alipayProperties;@Beanpublic AlipayClient initAlipayClient(){return new DefaultAlipayClient(alipayProperties.getGatewayUrl(),alipayProperties.getAppId(),alipayProperties.getAppPrivateKey(),alipayProperties.getFormat(),alipayProperties.getCharset(),alipayProperties.getAlipayPublicKey(),alipayProperties.getSignType());}
}
******************
controller 层
AlipayController
@RestController
public class AlipayController {@Resourceprivate AlipayClient alipayClient;@Resourceprivate AlipayProperties alipayProperties;@RequestMapping("/pay")public String pagePay(){AlipayTradePagePayModel model=new AlipayTradePagePayModel();model.setOutTradeNo("3000"); //商户订单号model.setProductCode("FAST_INSTANT_TRADE_PAY"); //电脑网站支付销售产品码,不同的支付方式productCode不同model.setSubject("海贼王"); //订单标题model.setTotalAmount("100"); //订单总金额model.setTimeoutExpress("1h"); //支付超市时间,1h后关闭AlipayTradePagePayRequest request=new AlipayTradePagePayRequest();request.setBizModel(model);request.setReturnUrl(alipayProperties.getReturnUrl()); //支付成功后同步返回的url地址request.setNotifyUrl(alipayProperties.getNotifyUrl()); //trade_success、trade_closed触发AlipayTradePagePayResponse response= alipayClient.pageExecute(request);return response.getBody();}@RequestMapping("/query")public String query() throws Exception{AlipayTradeQueryModel model=new AlipayTradeQueryModel();model.setOutTradeNo("3000");AlipayTradeQueryRequest request=new AlipayTradeQueryRequest();request.setBizModel(model);return alipayClient.execute(request).getTradeStatus();}@RequestMapping("/close")public String close() throws Exception{AlipayTradeCloseModel model=new AlipayTradeCloseModel();model.setOutTradeNo("3000");AlipayTradeCloseRequest request=new AlipayTradeCloseRequest();request.setBizModel(model);return alipayClient.execute(request).getBody();}@RequestMapping("/refund")public String refund() throws Exception{AlipayTradeRefundModel model=new AlipayTradeRefundModel();model.setOutTradeNo("3000");model.setRefundAmount("20");model.setOutRequestNo("100"); //分批次退款时,对应的每一次退款请求号,同一订单该值不能相同AlipayTradeRefundRequest refundRequest=new AlipayTradeRefundRequest();refundRequest.setBizModel(model);AlipayTradeRefundResponse refundResponse=alipayClient.execute(refundRequest);return "退款总金额:"+refundResponse.getRefundFee();}@RequestMapping("/refundQuery")public String refundQuery() throws Exception{AlipayTradeFastpayRefundQueryModel model=new AlipayTradeFastpayRefundQueryModel();model.setOutTradeNo("3000"); //商户订单号model.setOutRequestNo("100"); //退款请求号AlipayTradeFastpayRefundQueryRequest refundQueryRequest=new AlipayTradeFastpayRefundQueryRequest();refundQueryRequest.setBizModel(model);AlipayTradeFastpayRefundQueryResponse refundQueryResponse=alipayClient.execute(refundQueryRequest);return "本次退款金额为:"+refundQueryResponse.getRefundAmount()+"\n订单总金额为:"+refundQueryResponse.getTotalAmount();}@RequestMapping("/queryDownload")public String downloadUrl() throws Exception{ //对账单下载地址AlipayDataDataserviceBillDownloadurlQueryModel model=new AlipayDataDataserviceBillDownloadurlQueryModel();model.setBillType("trade");model.setBillDate("2020-04-06");AlipayDataDataserviceBillDownloadurlQueryRequest request=new AlipayDataDataserviceBillDownloadurlQueryRequest();request.setBizModel(model);AlipayDataDataserviceBillDownloadurlQueryResponse response=alipayClient.execute(request);return response.getBillDownloadUrl();}@RequestMapping("/notify")public void notify(HttpServletRequest request) throws Exception{ //异步通知接口if (check(request.getParameterMap())){System.out.println("异步通知");}else {System.out.println("验签失败");}}@RequestMapping("/return")public String returnUrl(HttpServletRequest request) throws Exception{ //同步跳转接口if (check(request.getParameterMap())){return "success";}else {return "false";}}private boolean check(Map<String,String[]> requestParams) throws Exception{Map<String,String> params = new HashMap<>();for (String name : requestParams.keySet()) {String[] values = requestParams.get(name);String valueStr = "";for (int i = 0; i < values.length; i++) {valueStr = (i == values.length - 1) ? valueStr + values[i]: valueStr + values[i] + ",";}params.put(name, valueStr);}return AlipaySignature.rsaCheckV1(params, alipayProperties.getAlipayPublicKey(),alipayProperties.getCharset(), alipayProperties.getSignType()); //调用SDK验证签名}
}
说明:notify接口只在trade_success状态下调用,
notify调用:支付成功后、部分退款成功后,支付状态为trade_success
notify不调用:全部退款、多次部分退款将余额全退,支付状态变为trade_closed
springboot 支付宝支付(电脑网站)相关推荐
- 支付宝支付 - 电脑网站支付
目录 1. 支付宝支付 - 配置 2. 支付宝支付 - 电脑网站支付 一.引用dll 二.发起支付 /// <summary> /// 支付 /// </summary> // ...
- 支付宝支付-电脑网站支付
官方文档 支付接口(alipay.trade.page.pay): 商户系统请求支付宝接口alipay.trade.page.pay,支付宝对商户请求参数进行校验,而后重定向至用户登录页面. 用户确认 ...
- Java之支付宝支付(电脑网站支付)沙箱测试版
支付宝支付流程及注意事项(沙箱测试版) 一:支付宝支付接入准备工作: 首先,支付宝支付和微信支付意愿,都是只支持企业用户,个人用户是不能接入支付宝支付的,所以要想接入支付宝支付,首先需要有支付宝的企业 ...
- 支付宝支付-电脑网站支付开发
公司产品需要做一个订单系统,需要在线下单支付功能,由于时间紧,任务重,选择了阿里的电脑网站支付作为支付的手段接入.一定要区分阿里的扫码支付和电脑网站支付的区别,刚开始我就搞混了.网站支付的页面类似于下 ...
- SpringBoot整合支付宝之电脑网站支付
SpringBoot整合支付宝之电脑网站支付 一.支付宝介绍 1.2 过程分析 1.3 对接支付宝的准备工作 1.4 申请步骤: 2.支付功能实现 2.1 思路分析 2.2 编写支付宝支付接口 2.2 ...
- php支付宝系列之电脑网站支付,一个PHP文件搞定支付宝之电脑网站支付
本篇文章给大家分享的内容是关于用一个PHP文件搞定支付宝之电脑网站支付 ,有需要的朋友可以参考一下 网上的很多PHP支付宝支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文 ...
- springboot 支付宝支付(支付宝转账)
springboot 支付宝支付(支付宝转账) 应用:商户向其它支付宝账户转账,可用于商户间的贷款结算.商户个人间的资金划转等 官方文档:https://opendocs.alipay.com/ope ...
- springboot 支付宝支付( 花呗分期)
springboot 支付宝支付(花呗分期) 应用:用户账单金额实时支付给商家,用户分期偿还账单至花呗 官方文档:https://opendocs.alipay.com/open/277/105952 ...
- SpringBoot支付宝支付-PC电脑支付
支付宝支付 开发主要分为三个步骤:一.生成私钥公钥.二.建立应用.三.沙箱环境.四.接口开发 1.生成私钥公钥 1.1.下载支付宝开发者助手 下载密钥生成工具 1.2.生成普通密钥方式 1.根据开发语 ...
最新文章
- 第一篇博客,纪念一下,终于开通啦!
- Bootstrap中默认表单的创建
- 【机器学习】——纯Python建立BP模型
- 流畅的Python 5. 函数
- http长轮询短轮询
- web应用,HTTP协议以及Django初次认识与安装
- 值得推荐的13款可视化软件,快收藏!
- Java实现蓝桥杯 垒骰子---dp动态规划+矩阵快速幂
- 汽车租赁管理系统(java)--隔壁小河
- Mac 锁屏防止断网、睡眠、注销登录
- jQuery 实现 九九乘法表
- 云控系统都有那些功能?
- php定义一个矩形类rectangle,Python3面向对象—点和矩形类
- 1168: PIPI的方格
- python基础语法25_Python基础语法习题参考(0-9关)
- IDEA中jpg文件或png文件显示乱码处理方法
- C#连接Access数据库(详解)
- 巴菲特50年投资之道
- 【C++探索之旅】开宗明义+第一部分第一课:什么是C++?
- 鸡兔同笼。鸡兔一共有 50 只,脚一共有 160 只//,问鸡和兔各多少只?要求鸡兔至少一样一只
热门文章
- 解决MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk
- “智慧水利”发展综述:我国水利事业迈入新阶段
- h5页面怎么处理文件流_H5页面实现下载文件(apk、txt等)的三种方式
- Node.js初学笔记
- 南阳2021高考成绩查询,南阳市2021届高三一模考试成绩出炉:看看南阳高中哪家更亮眼...
- linux下如何看网卡是千兆还是百兆的
- 历史上最伟大的12位程序员,你还知道吗?
- 游戏服务器之Timer计时器(定时器)动态链接库【超联网】
- 茶山坳计算机专修学院,hqygxbhc
- lightgbm API参数解释