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. 支付宝支付 - 电脑网站支付

    目录 1. 支付宝支付 - 配置 2. 支付宝支付 - 电脑网站支付 一.引用dll 二.发起支付 /// <summary> /// 支付 /// </summary> // ...

  2. 支付宝支付-电脑网站支付

    官方文档 支付接口(alipay.trade.page.pay): 商户系统请求支付宝接口alipay.trade.page.pay,支付宝对商户请求参数进行校验,而后重定向至用户登录页面. 用户确认 ...

  3. Java之支付宝支付(电脑网站支付)沙箱测试版

    支付宝支付流程及注意事项(沙箱测试版) 一:支付宝支付接入准备工作: 首先,支付宝支付和微信支付意愿,都是只支持企业用户,个人用户是不能接入支付宝支付的,所以要想接入支付宝支付,首先需要有支付宝的企业 ...

  4. 支付宝支付-电脑网站支付开发

    公司产品需要做一个订单系统,需要在线下单支付功能,由于时间紧,任务重,选择了阿里的电脑网站支付作为支付的手段接入.一定要区分阿里的扫码支付和电脑网站支付的区别,刚开始我就搞混了.网站支付的页面类似于下 ...

  5. SpringBoot整合支付宝之电脑网站支付

    SpringBoot整合支付宝之电脑网站支付 一.支付宝介绍 1.2 过程分析 1.3 对接支付宝的准备工作 1.4 申请步骤: 2.支付功能实现 2.1 思路分析 2.2 编写支付宝支付接口 2.2 ...

  6. php支付宝系列之电脑网站支付,一个PHP文件搞定支付宝之电脑网站支付

    本篇文章给大家分享的内容是关于用一个PHP文件搞定支付宝之电脑网站支付 ,有需要的朋友可以参考一下 网上的很多PHP支付宝支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文 ...

  7. springboot 支付宝支付(支付宝转账)

    springboot 支付宝支付(支付宝转账) 应用:商户向其它支付宝账户转账,可用于商户间的贷款结算.商户个人间的资金划转等 官方文档:https://opendocs.alipay.com/ope ...

  8. springboot 支付宝支付( 花呗分期)

    springboot 支付宝支付(花呗分期) 应用:用户账单金额实时支付给商家,用户分期偿还账单至花呗 官方文档:https://opendocs.alipay.com/open/277/105952 ...

  9. SpringBoot支付宝支付-PC电脑支付

    支付宝支付 开发主要分为三个步骤:一.生成私钥公钥.二.建立应用.三.沙箱环境.四.接口开发 1.生成私钥公钥 1.1.下载支付宝开发者助手 下载密钥生成工具 1.2.生成普通密钥方式 1.根据开发语 ...

最新文章

  1. 第一篇博客,纪念一下,终于开通啦!
  2. Bootstrap中默认表单的创建
  3. 【机器学习】——纯Python建立BP模型
  4. 流畅的Python 5. 函数
  5. http长轮询短轮询
  6. web应用,HTTP协议以及Django初次认识与安装
  7. 值得推荐的13款可视化软件,快收藏!
  8. Java实现蓝桥杯 垒骰子---dp动态规划+矩阵快速幂
  9. 汽车租赁管理系统(java)--隔壁小河
  10. Mac 锁屏防止断网、睡眠、注销登录
  11. jQuery 实现 九九乘法表
  12. 云控系统都有那些功能?
  13. php定义一个矩形类rectangle,Python3面向对象—点和矩形类
  14. 1168: PIPI的方格
  15. python基础语法25_Python基础语法习题参考(0-9关)
  16. IDEA中jpg文件或png文件显示乱码处理方法
  17. C#连接Access数据库(详解)
  18. 巴菲特50年投资之道
  19. 【C++探索之旅】开宗明义+第一部分第一课:什么是C++?
  20. 鸡兔同笼。鸡兔一共有 50 只,脚一共有 160 只//,问鸡和兔各多少只?要求鸡兔至少一样一只

热门文章

  1. 解决MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk
  2. “智慧水利”发展综述:我国水利事业迈入新阶段
  3. h5页面怎么处理文件流_H5页面实现下载文件(apk、txt等)的三种方式
  4. Node.js初学笔记
  5. 南阳2021高考成绩查询,南阳市2021届高三一模考试成绩出炉:看看南阳高中哪家更亮眼...
  6. linux下如何看网卡是千兆还是百兆的
  7. 历史上最伟大的12位程序员,你还知道吗?
  8. 游戏服务器之Timer计时器(定时器)动态链接库【超联网】
  9. 茶山坳计算机专修学院,hqygxbhc
  10. lightgbm API参数解释