阿里云支付

支付宝官方文档说明

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集成阿里云支付相关推荐

  1. SpringBoot集成阿里云短信服务

    SpringBoot集成阿里云短信服务 1.准备工作 2.项目集成 2.1 添加依赖 2.2 配置文件 2.3 业务逻辑实现 在实际项目中经常有发送短信的功能,今天进说一下对接阿里云短信服务实现短信发 ...

  2. springboot集成阿里云短信服务,实现发送短信功能

    springboot集成阿里云短信服务,实现发送短信功能 准备工作: 1.登陆阿里云->进入控制台->开通短信服务(进入后根据提示开通) 2.充值(借人家平台发短信你以为不要钱的?我充了3 ...

  3. SpringBoot集成阿里云存储OSS服务

    前言 该文章会先简单的介绍一下阿里云的OSS存储,然后演示如何在SpringBoot项目中集成OSS,每一步都有记录,保证初学者也能看懂. 文章目录 前言 1.阿里云存储OSS是什么? 2.Sprin ...

  4. springBoot集成阿里云企业邮箱

    前言 springboot项目,集成阿里云企业邮箱,进行邮件发送,附带文件 代码 public class AliyunMail {public static final String ALIDM_S ...

  5. springBOOT集成阿里云MQ-AMQP

    序: MQ的优势就不做介绍了可以自行百度,前篇写了springboot集成本地搭建的rabbitmq组建,但是项目最后部署打算还是直接使用阿里云的AMQP,阿里云AMQP是直接可以兼容rabbitmq ...

  6. springboot集成阿里云rocketMQ代码示例

    集成目标:完成生产者发送消息,消费者接收消息的整个流程 集成步骤: 1.引入jar包依赖 <!--rocketMq消息队列--><dependency><groupId& ...

  7. SpringBoot集成阿里云短信服务实现登录注册(超详细)

    本篇博客采用得技术为:springboot + redis + aliyun短信验证 redis我用来做短信校验,首先我们先刨除redis部分做一个发送功能 登录你得阿里云账号 1 -> 控制台 ...

  8. java SpringBoot 集成 阿里云视频直播 完成直播功能

    经历了几天的周折,近期才把项目完成,在这里与大家分享一下踩坑之路,也方便日后有类似项目,可以借阅一番 开发直播前先满足已下条件 1.开通视频直播功能 2.购买好了OSS存储 3.购买两个域名并且备案好 ...

  9. Java SpringBoot集成阿里云短信与邮件服务

    1.pom.xml导入jar包 <!--阿里云短信 --><dependency><groupId>com.aliyun</groupId><ar ...

最新文章

  1. 小米Redmi 5G旗舰 K30 Pro,最大亮点:怼华为荣耀
  2. UIButton标题和图片位置的确定法则
  3. PHP2002,php - 错误:SQLSTATE [HY000] [2002]没有这样的文件或目录 - SO中文参考 - www.soinside.com...
  4. OpenGL:如何从缓存中读取颜色、深度信息【转】
  5. [Hadoop]在Windows上安装Hadoop
  6. openstack pike版本安装笔记8(Orchestration Server:heat组件,模板服务)
  7. oracle密码过期处理方法
  8. 解决Unity TextMeshPro 不能显示中文问题
  9. 如何做好软件可靠性测试?
  10. 前端HTML(3)【带动图,便于理解】
  11. bug提单 java_bug提单规范
  12. 轨迹规划 trajectory planning
  13. java通过输入的方式给int数组赋值并输出数组
  14. 【操作系统】3.进程管理
  15. ChatGPT的各项超能力从哪儿来?万字拆解追溯技术路线图来了!
  16. Java中输出时区的缩写_Java中的时区转换小结
  17. 清扫机器人罗比与遗传算法,轮盘赌算法(算法)
  18. 【太极创客天气预报的库链接如下】
  19. 现实世界的Windows Azure:与HubOne主管经理Nick Beaugeard的访谈
  20. 职场英语--邮件自动回复模板

热门文章

  1. “红粬黄酒第一村”乡贤吴善远联合聚力创办北墘酒业
  2. 产品一:葡萄籽的美肌功效
  3. BTC World直播间冬季训练营空投福利!听课就送2000币
  4. ansys workbench汉化教程_FC魔法阵咕噜咕噜汉化版下载-街机魔法阵咕噜咕噜完美汉化版下载...
  5. 七星配资沪指低频震荡
  6. wp安装install.php,wordpress安装包怎么安装
  7. layout_weight 小白的理解之我的地盘听我的!(二)
  8. 06-初始OpenGL ES -用GLSL实现画板的功能
  9. wireshark安装s7comm-plus插件
  10. 读 Stephen Prata 之 C++ Primer Plus