首先要去支付宝开发者平台申请APP_ID,和秘钥。

然后准备工作做完以后,就开始写接口了。

创建订单接口    https://docs.open.alipay.com/api_1/alipay.trade.create

参数根据自己的业务需求,其中商户订单号是自己生成的,项目中我是使用公司抬头+系统当前时间+两位随机数

订单创建具体逻辑

==========================================================================================

1. 根据自己的业务需求生成数据库字段后,然后创建对应的实体类,再从中拆分出需要进行前后端传入的参数对象【实际业务中数据库中的所有字段不一定都要用到,所有要定义一个数据传入对象。也就是DTO】

DTO代码:

/*** 商品ID*/
@NotNull(message = "商品ID不能为空")
private Integer productId;/*** 地址ID*/
@NotNull(message = "地址ID不能为空")
private Integer addressId;/*** 用户ID*/
@NotNull(message = "用户ID不能为空")
private Integer uId;public String getSubject() {return subject;
}public void setSubject(String subject) {this.subject = subject;
}/*** 商品数量*/
@NotNull(message = "商品数量不能为空")
private Integer productNumber;/*** 订单总金额   =《商品单价*商品数量》*/
private Double totalSum;/*** 订单标题*/
private String subject;/*** 买家的支付宝唯一用户号(2088开头的16位纯数字)*/
@NotBlank(message = "支付宝唯一用户ID不能为空")
private String buyerId;

2 . 编写服务调用支付宝创建订单接口  https://docs.open.alipay.com/api_1/alipay.trade.create

首先要集成支付宝提供的SDK,我这里使用的是maven,毕竟是非常方便的,

https://search.maven.org/search?q=g:com.alipay.sdk%20AND%20a:alipay-sdk-java&core=gav

小伙伴们可以自己点击上面的链接,然后添加到自己的pom.xml文件中就可以了。

这里需要传入的参数 有:

out_trade_no :商户订单号 【必传】

total_amount  :订单总金额 【必传】

subject  :订单标题   【必传】

buyer_id  :买家支付宝唯一用户号 【不是必传的】

这里除了buyer_id 不是必须传的以外,其他四个参数 都是必须要传的 ,至于其他的参数根据自己的需求,也可以查看支付宝开发文档https://docs.open.alipay.com/api_1

3. 服务层业务逻辑处理

/*** 创建订单* @return* @throws Exception*/
@Override
@Transactional  //事务管理
public ReturnResult generateOrder(OrderDto orderDto) throws Exception {SimpleDateFormat format = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");// 1.补全实例对象// 1.1 生成订单号  订单号生成规则:《PPDZN+系统当前时间+两位随机数》String orderNo = GenerateOrderNoUtil.generateOrderNo();POrder pOrder = new POrder();pOrder.setOrderId(orderNo);pOrder.setOrderTime(format.format(new Date()));//获取商品ID,根据商品ID去查询商品的单价,然后乘以数量,计算订单总金额Integer productId = orderDto.getProductId();ProductExample example = new ProductExample();example.createCriteria().andIdEqualTo(productId);List<Product> products = productMapper.selectByExample(example);if (products.size() <= 0 || products == null) {//如果没有查询到则直接返回return ReturnResult.build(200, "success", ParamEnum.COMMODITY_SHELVES.getMsg());}//查询到对应商品并取出单价Product product = products.get(0);//取出零售价Double retailPrice = product.getRetailPrice();//计算总金额 = 商品单价 * 商品数量Double totalSum = retailPrice * orderDto.getProductNumber();pOrder.setTotalSum(totalSum);//使用BeanUtils,将dto中的属性拷贝到po中,序列化到DBBeanUtils.copyProperties(orderDto, pOrder);// 2.根据订单号调用支付宝创建订单接口// 2.2 实例化客户端AlipayClient alipayClient = new DefaultAlipayClient(url, appId, privateKey, "json", "GBK", alipayPublicKey, "RSA2");// 2.3 实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.create.AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();request.setBizContent("{" +"\"out_trade_no\":\"" + "\"," +"\"total_amount\":" + totalSum + "," +"\"buyer_id\":\"" + orderDto.getBuyerId() + "\"," +"\"subject\":\"" + orderDto.getSubject() + "\"}");AlipayTradeCreateResponse response = null;try {response = alipayClient.execute(request);} catch (AlipayApiException e) {log.error(e.getErrMsg());e.printStackTrace();}if (response.isSuccess()) {System.out.println("调用成功");System.out.println("商户订单号是:" + response.getOutTradeNo());System.out.println("支付宝交易号:" + response.getTradeNo());// 3.插入数据库try {orderMapper.insert(pOrder);} catch (Exception e) {log.error(e.getMessage());e.getStackTrace();return null;}// 4.返回订单号和支付宝交易单号return ReturnResult.build(200, "success", "商户订单号:" + response.getOutTradeNo() + "支付宝交易号:" + response.getTradeNo());} else {System.out.println("调用失败");return null;}

4.   controller层 提供接口

这里使用的是spring校验参数 ,有不了解的同学可以自己去查看资料学习一下。

支付宝小程序Java后台创建订单服务接口相关推荐

  1. 微信小程序+java后台实现openid获取

    写了好一阵子终于把微信小程序的登陆功能实现了,之前就因为返回openid耽误了好一段时间,所以今天就跟大家分享一下java后台的返回openid及解密用户信息. 微信小程序前端: js页面: wx.l ...

  2. 【第一弹】社区跑腿 校园跑腿 毕设 创业 微信小程序+java后台

    社区跑腿小程序 介绍 主要实现了社区内取快递,取外卖,取团购,帮买帮送等功能. 软件架构 PC管理端: 1.维护小区信息 2.审核配送员 3.修改相关协议 4.监控订单 5.管理用户地址 6.各小区自 ...

  3. 微信小程序+java后台实现支付(java操作)

    支付,在微信小程序上面称为当一个用户使用该小程序,当进入到支付环节,我们需要调用微信支付接口过程,进行一系列的操作,并记录下来. 微信小程序与java接口实现支付操作,大致思路如下: 1.微信小程序调 ...

  4. 基于微信小程序的菜谱管理系统(小程序+Java后台实现)

    目 录 1绪论 1 1.1选题背景及意义 1 1.2国内外发展动态 2 1.3研究主要内容 2 2系统技术 3 2.1 Java语言 3 2.2 SSM框架 4 2.3 Vue.js框架 5 2.4 ...

  5. 【第二弹】社区跑腿 校园跑腿升级版 毕设 创业 微信小程序+java后台

    小家快送跑腿小程序 介绍 距离上个版本开源到现在已经四月有余,在这段时间,我们将程序不断打磨,优化,确定了升级方向,本次2.0升级版主要优化了用户体验,不管是从小区管理员,配送员,还是用户较之前版本有 ...

  6. wx小程序学习Day9 创建订单、准备预支付、发起微信支付、查询订单

    学习内容 1. 支付页-数据展示 2. 支付页-支付流程 3. 支付页-创建订单 3. 支付页-准备预支付和发起微信支付 4. 支付页-查询订单 5. 支付页-错误处理 6. 支付页-移除购物车已支付 ...

  7. 微信小程序+java后台实现登录(java操作)

    登录,在微信小程序上面称为当一个用户使用该小程序,进入到小程序中,我们拿到该用户的信息,进行一系列的操作,并记录下来. 微信小程序与java接口实现登录操作,大致思路如下: 1.微信小程序端通过调用对 ...

  8. 手机微信小程序服务器出错,处理微信服务接口返回的错误信息《 微信小程序:微信绑定 #6 》...

    回到接口 .. 再去制造点错误 .. 修改一下 APP_ID 的值,让它等于一个空白的字符 .. 回到小程序 .. 刷新一下页面 .. 然后确定 .. data 里的东西就是微信服务端返回的数据 .. ...

  9. 微信小程序+java后台+云服务器开发学习记录

    仅作为个人学习记录

最新文章

  1. 树莓派 raspberry安全关机命令重启命令
  2. ssh项目实战----Spring计时器任务 Spring整合JavaMail(邮件发送)
  3. Oracle里default什么意思,ORACLE中默认值default的使用方法.doc
  4. SVM推导过程及SMO详细求解过程(转载+自己笔记)
  5. 中国金融出版社出版的2016版《个人贷款》
  6. 自定义 View 循环滚动刻度控件
  7. R7-9 红色警报 (25 分)
  8. STM32F103:一.(3)IO方向
  9. 互联网思维心得体会1500字_读懂《天道》丁元英的3个“高人”思维,你少走10年职场弯路...
  10. SpringBoot使用@Scheduled创建定时任务
  11. 只在用户登陆时运行_linux 系统的7个运行级别
  12. nginx的安装及配置文件详解
  13. 刘莹等:干旱对灌溉和雨养农田生态系统生产力的影响对比分析 【关于底图的考虑】
  14. artDialog | 经典的网页对话框组件
  15. Android笔记:多开/分身检测
  16. 友盟用户反馈自定义UI-Android
  17. 关于子函数的调用和终止
  18. Linux怎么进入根目录查看文件
  19. win10 linux分区大小调整大小,如何在windows系统中调整分区大小(包括windows10/8/7)...
  20. Cobalt编译流程分析

热门文章

  1. PS教程:大神教你用PS制作《大鱼海棠》海报
  2. python抢购爬虫_python爬虫,抢小米抢购,
  3. 物理引擎学习03-GJK碰撞检测算法基础
  4. Azure IoT 中级(1)-Device Provisioning Service(DPS)概览
  5. Java 日期工具类(今天、昨天、本周、上周、本月、上月、本年及特定时间的开始时间和结束时间)
  6. 11月不良与垃圾信息:垃圾邮件11667件次 涨8.3%
  7. springboot 银联支付(企业网银支付)
  8. 计算机无法弹出支付,笔记本Win7系统电脑网上银行支付页面打不开的解决方法...
  9. day40-存储基本概念与SAN存储
  10. 塑胶模具设计公式参数计算工具