下单接口的开发对接第三方支付

简介: 下单接口的开发对接第三方支付

公众号merlinsea


支付的过程中需要注意的地方:


1、用户可能存在重复下单的问题,即多次点击提交订单

2、前端提交的订单后台需要查询数据库最新价格

3、用户前端传来的收货人信息还需要和用户的token校验,防止水平越权攻击

4、用户下单以后如果迟迟没有支付金额,应该定时关单的功能

5、用户下单以后,即到图中第5步时,后台应该锁定库存(比如优惠券B),比如用户在电脑端用了优惠券B,然后在手机端也下单也尝试用优惠券就应该拒绝。

640.jpg



提交订单的伪代码


@ApiOperation("提交订单")
@PostMapping("confirm")
public void confirmOrder(@ApiParam("订单对象") @RequestBody ConfirmOrderRequest orderRequest, HttpServletResponse response){
    JsonData jsonData = orderService.confirmOrder(orderRequest);
    if(jsonData.getCode() == 0){
        String client = orderRequest.getClientType();
        String payType = orderRequest.getPayType();
        //如果是支付宝网页支付,都是跳转网页,APP除外
        if(payType.equalsIgnoreCase(ProductOrderPayTypeEnum.ALIPAY.name())){
            log.info("创建支付宝订单成功:{}",orderRequest.toString());
            if(client.equalsIgnoreCase(ClientType.H5.name())){
                writeData(response,jsonData);
            }else if(client.equalsIgnoreCase(ClientType.APP.name())){
                //APP SDK支付  TODO
            }
        } else if(payType.equalsIgnoreCase(ProductOrderPayTypeEnum.WECHAT.name())){
            //微信支付 TODO
        }
    } else {
        log.error("创建订单失败{}",jsonData.toString());
    }
}
private void writeData(HttpServletResponse response, JsonData jsonData) {
    try {
        response.setContentType("text/html;charset=UTF8");
        response.getWriter().write(jsonData.getData().toString());
        response.getWriter().flush();
        response.getWriter().close();
    }catch (IOException e){
        log.error("写出Html异常:{}",e);
    }
}


相关文章
|
安全 Java 数据库连接
基于dataX实现多种数据源数据汇聚(二)
上一篇文章提到在数据中台项目实践过程中,基于dataX实现数据汇聚的一些使用心得,在众多项目中,发现一个趋势,国产数据库的发展趋势,越来越多的企业要求国产化保障核心资产的安全。本章节主要介绍国产数据的安装、连接、与归集的知识。涉及场景的国产数据库如下: 1、达梦 2、人大金仓(后续补充) 3、南大通用(后续补充)
3148 0
基于dataX实现多种数据源数据汇聚(二)
|
JavaScript 内存技术
Vue 安装vue-element-admin启动报错error:0308010C:digital envelope routines::unsupported
Vue 安装vue-element-admin启动报错error:0308010C:digital envelope routines::unsupported
332 0
|
JSON API 数据格式
淘宝 / 天猫官方商品 / 订单订单 API 接口丨商品上传接口对接步骤
要对接淘宝/天猫官方商品或订单API,需先注册淘宝开放平台账号,创建应用获取App Key和App Secret。之后,详细阅读API文档,了解接口功能及权限要求,编写认证、构建请求、发送请求和处理响应的代码。最后,在沙箱环境中测试与调试,确保API调用的正确性和稳定性。
1819 1
|
缓存 应用服务中间件 nginx
安装nginx-http-flv-module模块
本文介绍如何为Nginx安装`nginx-http-flv-module`模块。此模块基于`nginx-rtmp-module`二次开发,不仅具备原模块的所有功能,还支持HTTP-FLV播放、GOP缓存、虚拟主机等功能。安装步骤包括:确认Nginx版本、下载相应版本的Nginx与模块源码、重新编译Nginx并加入新模块、验证模块安装成功。特别注意,此模块已包含`nginx-rtmp-module`功能,无需重复编译安装。
1512 3
|
自然语言处理 Java UED
Spring Boot中的国际化配置
Spring Boot中的国际化配置
|
云安全 安全 Docker
Docker使用阿里云加速(20200613)
Docker使用阿里云加速(20200613)
1463 0
|
消息中间件 Java RocketMQ
RocketMQ搭建并测试(windows)
RocketMQ搭建并测试(windows)
2581 0
|
SQL Oracle 关系型数据库
Seata常见问题之2.0报错找不到类如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
620 0
|
Java Spring
SpringBoot - @Async异步任务与线程池
SpringBoot - @Async异步任务与线程池
1338 1