SpringBoot集成阿里云支付
阿里云支付
支付宝官方文档说明
https://opendocs.alipay.com/open/203/107091
开发准备
1、登录支付宝开发平台(支付宝账号)
地址: https://open.alipay.com/platform/home.html
2、生成私钥公钥
参照官方文档即可,按照步骤来保存私钥与公钥:官方文档
Java集成支付宝支付
1、加入相关Jar
//官方网站:https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java//实例:
<dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.9.28.ALL</version>
</dependency>
2、新建支付宝的Config
package com.example.config;import org.springframework.context.annotation.Configuration;/*** @Description:支付宝接口*/
@Configuration
public class AliPayConfig {/*** netApp映射地址*/private static String neturl = "http://localhost:8080";/*** 应用的APPID*/public static String app_id = "你的APPID";/*** 商户私钥,您的PKCS8格式RSA2私钥 刚刚生成的私钥直接复制填写(填写自己利用第三方工具生成的私钥)*/public static String merchant_private_key = "你的商品私钥";/*** 支付宝公钥,对应APPID下的支付宝公钥(填写沙箱环境中的支付宝公钥)*/public static String alipay_public_key = "支付宝公钥,不是公钥";/*** 服务器异步通知页面路径 需http://格式的完整路径(支付宝完成后返回的页面)*/public static String notify_url = neturl+"/alipay/notify_url";/*** 页面跳转同步通知页面路径 需http://格式的完整路径(支付宝完成后返回的页面)*/public static String return_url = neturl+"/alipay/return_url";/*** 签名方式*/public static String sign_type = "RSA2";/*** 字符编码方式*/public static String charset = "utf-8";/*** 支付宝网关*/public static String url = "https://openapi.alipaydev.com/gateway.do";
}
3、创建Service业务逻辑处理
调用支付宝的支付接口即将一包数据通知支付SDK的一个接口发送给支付宝的服务器,然后会返回输入密码确认支付的页面
package com.example.service;import com.alipay.api.AlipayApiException;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradePagePayModel;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.example.config.AliPayConfig;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;/*** @Description:支付宝业务逻辑接口*/
@Service
public class AliPayService {/*** 支付服务(推荐传入订单号和金额,其余的从其他地方获取)*/public String aliPay(){try {//1、构建支付数据信息AlipayTradePagePayModel model = new AlipayTradePagePayModel();//订单标题model.setSubject("Test");//订单号model.setOutTradeNo("Ab125dasogggiDsd151515");//订单付款金额model.setTotalAmount("100");//订单付款时间model.setTimeoutExpress("");//销售产品码(必填)model.setProductCode("FAST_INSTANT_TRADE_PAY");//2、构建客户端DefaultAlipayClient defaultAlipayClient = new DefaultAlipayClient(AliPayConfig.url,AliPayConfig.app_id,AliPayConfig.merchant_private_key,"json",AliPayConfig.charset,AliPayConfig.alipay_public_key,AliPayConfig.sign_type);AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();//异步通知后回调request.setNotifyUrl(AliPayConfig.notify_url);//支付成功后回调request.setReturnUrl(AliPayConfig.return_url);request.setBizModel(model);String response = defaultAlipayClient.pageExecute(request).getBody();return response;}catch (AlipayApiException ex){ex.printStackTrace();return null;}}
}
4、Controller
@AutowiredAliPayService aliPayService;@ApiOperation("支付接口")@GetMapping("/alipay/toPay/pay/{productId}")public String alipay(@PathVariable(value = "productId")Integer productId){return aliPayService.aliPay();}@ApiOperation("支付宝异步通知接口")@GetMapping("/alipay/notify_url")public String notifyAlipay(){return "这是异步通知接口";}@ApiOperation("支付成功之后的回调")@GetMapping("/alipay/return_url")public String returnAlipay(){return "支付成功后的回调";}
注意:
1、标题Subject
支付宝的Subject(标题)如果不是Post提交方式的话,用中文好像会出问题
@ApiOperation("支付接口")@GetMapping(value="/alipay/toPay/pay/{productId}",produces="application/xml",consumes="application/x-www-form-urlencoded")public String alipay(@PathVariable(value = "productId")Integer productId){return aliPayService.aliPay();}
2、三种接口
2.1、网页支付(支持扫码)
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
AlipayTradePagePayModel model = new AlipayTradePagePayModel();model.setOutTradeNo("Ab125dasogggiDsd151515");model.setSubject("Test");model.setTotalAmount("100");model.setTimeoutExpress("");model.setProductCode("FAST_INSTANT_TRADE_PAY");request.setBizModel(model);String response = defaultAlipayClient.pageExecute(request).getBody();
2.2、移动H5支付(不支持扫码)
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
AlipayTradeWapPayModel model1 = new AlipayTradeWapPayModel();model.setOutTradeNo("Ab125dasogggiDsd151515");model.setSubject("Test");model.setTotalAmount("100");model.setTimeoutExpress(""); model.setProductCode("QUICK_WAP_PAY");request.setBizModel(model);String response = defaultAlipayClient.pageExecute(request).getBody();
2.3、APP支付
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
AlipayTradeAppPayModel model2 = new AlipayTradeAppPayModel();model.setOutTradeNo("Ab125dasogggiDsd151515");model.setSubject("Test");model.setTotalAmount("100");model.setTimeoutExpress(""); model.setProductCode("QUICK_WAP_PAY");request.setBizModel(model);String response = defaultAlipayClient.pageExecute(request).getBody();
SpringBoot集成阿里云支付相关推荐
- SpringBoot集成阿里云短信服务
SpringBoot集成阿里云短信服务 1.准备工作 2.项目集成 2.1 添加依赖 2.2 配置文件 2.3 业务逻辑实现 在实际项目中经常有发送短信的功能,今天进说一下对接阿里云短信服务实现短信发 ...
- springboot集成阿里云短信服务,实现发送短信功能
springboot集成阿里云短信服务,实现发送短信功能 准备工作: 1.登陆阿里云->进入控制台->开通短信服务(进入后根据提示开通) 2.充值(借人家平台发短信你以为不要钱的?我充了3 ...
- SpringBoot集成阿里云存储OSS服务
前言 该文章会先简单的介绍一下阿里云的OSS存储,然后演示如何在SpringBoot项目中集成OSS,每一步都有记录,保证初学者也能看懂. 文章目录 前言 1.阿里云存储OSS是什么? 2.Sprin ...
- springBoot集成阿里云企业邮箱
前言 springboot项目,集成阿里云企业邮箱,进行邮件发送,附带文件 代码 public class AliyunMail {public static final String ALIDM_S ...
- springBOOT集成阿里云MQ-AMQP
序: MQ的优势就不做介绍了可以自行百度,前篇写了springboot集成本地搭建的rabbitmq组建,但是项目最后部署打算还是直接使用阿里云的AMQP,阿里云AMQP是直接可以兼容rabbitmq ...
- springboot集成阿里云rocketMQ代码示例
集成目标:完成生产者发送消息,消费者接收消息的整个流程 集成步骤: 1.引入jar包依赖 <!--rocketMq消息队列--><dependency><groupId& ...
- SpringBoot集成阿里云短信服务实现登录注册(超详细)
本篇博客采用得技术为:springboot + redis + aliyun短信验证 redis我用来做短信校验,首先我们先刨除redis部分做一个发送功能 登录你得阿里云账号 1 -> 控制台 ...
- java SpringBoot 集成 阿里云视频直播 完成直播功能
经历了几天的周折,近期才把项目完成,在这里与大家分享一下踩坑之路,也方便日后有类似项目,可以借阅一番 开发直播前先满足已下条件 1.开通视频直播功能 2.购买好了OSS存储 3.购买两个域名并且备案好 ...
- Java SpringBoot集成阿里云短信与邮件服务
1.pom.xml导入jar包 <!--阿里云短信 --><dependency><groupId>com.aliyun</groupId><ar ...
最新文章
- 小米Redmi 5G旗舰 K30 Pro,最大亮点:怼华为荣耀
- UIButton标题和图片位置的确定法则
- PHP2002,php - 错误:SQLSTATE [HY000] [2002]没有这样的文件或目录 - SO中文参考 - www.soinside.com...
- OpenGL:如何从缓存中读取颜色、深度信息【转】
- [Hadoop]在Windows上安装Hadoop
- openstack pike版本安装笔记8(Orchestration Server:heat组件,模板服务)
- oracle密码过期处理方法
- 解决Unity TextMeshPro 不能显示中文问题
- 如何做好软件可靠性测试?
- 前端HTML(3)【带动图,便于理解】
- bug提单 java_bug提单规范
- 轨迹规划 trajectory planning
- java通过输入的方式给int数组赋值并输出数组
- 【操作系统】3.进程管理
- ChatGPT的各项超能力从哪儿来?万字拆解追溯技术路线图来了!
- Java中输出时区的缩写_Java中的时区转换小结
- 清扫机器人罗比与遗传算法,轮盘赌算法(算法)
- 【太极创客天气预报的库链接如下】
- 现实世界的Windows Azure:与HubOne主管经理Nick Beaugeard的访谈
- 职场英语--邮件自动回复模板
热门文章
- “红粬黄酒第一村”乡贤吴善远联合聚力创办北墘酒业
- 产品一:葡萄籽的美肌功效
- BTC World直播间冬季训练营空投福利!听课就送2000币
- ansys workbench汉化教程_FC魔法阵咕噜咕噜汉化版下载-街机魔法阵咕噜咕噜完美汉化版下载...
- 七星配资沪指低频震荡
- wp安装install.php,wordpress安装包怎么安装
- layout_weight 小白的理解之我的地盘听我的!(二)
- 06-初始OpenGL ES -用GLSL实现画板的功能
- wireshark安装s7comm-plus插件
- 读 Stephen Prata 之 C++ Primer Plus