支付宝订单支付和超时收单

下订单成功后,发送mq消息到死信队列,消息过期后根据死信的路由key重新路由到交换机,交换机根据消息的路由key把消息路由到普通队列上,消费者监听队列并消费。

问题,现在提交订单信息调用支付宝的支付页面,支付成功,支付宝异步回调给用户消息,此时处理支付宝支付成功后的回执信息,并产生流水单实体,再修改订单的状态,表示客户端收到支付宝支付成功的消息,并将订单状态修改为已支付,在处理这两个业务的时候必须确定支付宝回调的的数据是真实有效的没有被串改,这就用到了阿里的sdk的验证签名的api,将回调的参数进行公钥验证,通过再生成流水号单以及修改订单的状态。

上为了实现分布式事务,避免使用seat带来的高并发的新能问题,选择使用mq的延迟队列解决订单超时或远程扣库存存在的事务无法一致控制问题,解决方式是柔性+最终一致性保证,而不是实时一致性,如果要用就使用seat。在这里如果订单超时订单就会被取消,库存也会在一定的时间内释放,此时再去支付订单发现任然能支付成功。解决

设置支付宝在支付回调页支付期间超时等待,原因是在支付页面会点击发起支付宝的支付调用请求会分装当前订单的信息成请求客户端,构建请求设置请求的属性等并填写两个回调的url,把请求发送到支付宝网关,网关返回支付页面,当这个页面停留一定时间将取消支付,参考的时间是客户端建立并请求到支付页面的时间,在这个过程中超时都会触发支付失败信息。

支付宝收到那指的是当订单信息提交支付到支付页面时,在这个过程中超出客户端设置的时间就会触发支付失败回调。

理解支付宝的收单操作,当支付成功没有收到回调消息的时候可以在指定的时间点来对账,可以使用一个定时器来跑哪些已经超时的订单,看他们是否在支付宝中已经支付成功,如果成功设置订单状态已经支付,再把回滚的库库存扣减上,完成数据的最终一致性。(问题有很多需要理解这样的逻辑最好的方式是登陆京东淘宝店pc端理解实现过程,对比学过的内容理解,不然很难吃透,但在这些中没有后台管理系统可以参考)

  alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
                + "\"total_amount\":\""+ total_amount +"\","
                + "\"subject\":\""+ subject +"\","
                + "\"body\":\""+ body +"\","
                + "\"timeout_express\":\""+timeout+"\"," 
                + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");

timeout_express请求属性,约定第一次去支付订单时,由唯一的订单信息去请求获取支付页到支付的超时时间内没有完成支付,后续的时间支付失败,这是支付宝的收单功能,并且在下次在点击此订单到支付页也无法支付,支付宝对该提交的订单号返回的支付页始终会处在订单过期状态,自动收单的时间应该设置成可配置的,用一个变量接收默认30m(分钟)。

订单支付成功,在支付宝回调的时候正好订单过期,并把库存解锁,此时就会发生超时支付成功;解决在订单解锁的地方(用户没有支付前)就调用收单的关单操作那么在接下来时间在支付就无法成功(这是手动收单功能与上面自动收单功能选择任意一个,自动收单后订单交易就结束)。

可能支付了客户没有收到通知(网络),订单被释放,库存被解锁,解决某个时间点去核实释放的订单在支付宝服务当中是否已经支付,如果支付就状态改回来并扣减库存,操作方式拿订单号或者交易号在交易服务中查询订单的状态(晚上进行)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/693593.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI论文速读 | 2024[ICML]FlashST:简单通用的流量预测提示微调框架

题目: FlashST: A Simple and Universal Prompt-Tuning Framework for Traffic Prediction 作者:Zhonghang Li, Lianghao Xia(夏良昊), Yong Xu(徐勇), Chao Huang 机构:华南理工大学&#xf…

分享不用会员免费听歌的软件,可听付费,支持随听随下!

今天来点特别的,给你们带来几款全网免费听歌的神器,让你们的音乐之旅不再有障碍! 现在,找好听的歌越来越像寻宝一样,动不动就得掏腰包。不过别担心,阿星今天就来分享几款好用的免费听歌app,电脑…

SQL(一)基本语法

文章目录 一、Sql 语言基本特点二、数据查询(按执行顺序排列)1. From & Join2. Where3. Group by4. Having5. Select6. Distinct7. Order by8. Limit/ Offset 三、功能公式1. 字符处理2. 时间处理3. 统计计算 一、Sql 语言基本特点 不区分大小写分号…

数据库(29)——子查询

概念 SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。 SELECT * FROM t1 WHERE column1 (SELECT column1 FROM t2); 子查询外部语句可以是INSERT/UPDATE/DELETE/SELECT的任何一个。 标量子查询 子查询返回的结果是单个值(数字&#xff…

pdf压缩文件怎么压缩最小,软件工具压缩清晰

PDF格式的文件,当其体积过于庞大时,确实在上传的过程中显得尤为不便。今天给大家分享一个压缩pdf的简单的方法,让大家可以轻松的压缩pdf。 浏览器打开 "轻云处理pdf官网" ,上传pdf文件,文件上传完成后网站会…

ChatGPT Prompt技术全攻略-精通篇:Prompt工程技术的高级应用

系列篇章💥 No.文章1ChatGPT Prompt技术全攻略-入门篇:AI提示工程基础2ChatGPT Prompt技术全攻略-进阶篇:深入Prompt工程技术3ChatGPT Prompt技术全攻略-高级篇:掌握高级Prompt工程技术4ChatGPT Prompt技术全攻略-应用篇&#xf…

计算机网络到底是指什么?

计算机网络是信息技术领域中最为核心和复杂的一部分,它涵盖了众多的技术原理和应用。下面,我们将从技术层面深入探讨计算机网络的相关内容。 一、计算机网络的分层模型 计算机网络的分层模型是网络通信的基石,它将网络通信过程划分为不同的层…

万能嗅探:视频号下载神器

万能嗅探是一款比较好用资源嗅探软件,界面干净,可以抓取浏览器的网页,不过想必各位主要用来抓取视频号,下面是使用方法。 使用方法 打开万能嗅探客户端,然后打开浏览器,产生网络请求即可,看看…

【Linux高级IO】select、poll、epoll

【Linux高级IO】select、poll、epoll toc 作者:爱写代码的刚子 时间:2024.6.5 前言:本篇博客将会介绍面试重点考察的select、poll、epoll IO: input && Output read && write 应用层read&&write的时候&#xff0c…

PostgreSQL 17 Beta1 发布,酷克数据再次贡献核心力量

得益于全球的开发者贡献,PostgreSQL已成长为一款拥有众多全球用户和贡献者、成熟稳定的开源数据库。2024年5月23日,PostgreSQL全球开发组宣布,PostgreSQL 17的首个 Beta 版本现已开放下载。本次新版本带来了众多惊喜。值得一提的是&#xff0…

【云原生】基于windows环境搭建Docker

目录 一、Docker Desktop搭建 二、前置准备 2.1开启 Hyper-V 2.2 Hyper-V选项看不到问题解决 2.3 开启或升级wsl 三、安装过程 3.1 下载安装包 3.2 安装 Docker Desktop 3.2.1 Docker 图标一直处于starting状态问题解决 3.3 配置仓库与镜像 3.4 docker功能测试 四、…

NRF52833串口和BLE升级bootloader合并(SDK1710,S113协议栈)

打pca10100_s113_ble_debug工程,将生成的key __ALIGN(4) const uint8_t pk[64] = {0xa3, 0x9a, 0x37, 0xb3, 0x1e, 0x44, 0xb5, 0x77, 0xb3, 0xa4, 0xf3, 0x65, 0xb8, 0xe6, 0xff, 0xa4, 0x33, 0x19, 0x30, 0x0c, 0xd8, 0xaf, 0xc6, 0x5a, 0xdf, 0xd1, 0x8f, 0xf3, 0xf3, 0xd…

TCP/IP协议分析实验:通过一次下载任务抓包分析

TCP/IP协议分析 一、实验简介 本实验主要讲解TCP/IP协议的应用,通过一次下载任务,抓取TCP/IP数据报文,对TCP连接和断开的过程进行分析,查看TCP“三次握手”和“四次挥手”的数据报文,并对其进行简单的分析。 二、实…

手机怎么压缩图片?通过三种压缩操作

手机怎么压缩图片?在智能手机日益普及的今天,拍照分享已成为日常生活的一部分。然而,高质量的照片往往占用较大的存储空间,且在网络上传输时速度较慢。那么,如何在手机上压缩图片呢?本文将介绍三种实用的手…

开源与新质生产力

在这个信息技术迅猛发展的时代,全球范围内的产业都在经历着深刻的变革。在这样的背景下,“新质生产力”的概念引起了广泛的讨论。无论是已经成为或正努力转型成为新质生产力的企业,都在寻求新的增长动力和竞争优势。作为一名长期从事开源领域…

详解 Flink 的 ProcessFunction API

一、Flink 不同级别的 API Flink 拥有易于使用的不同级别分层 API 使得它是一个非常易于开发的框架最底层的 API 仅仅提供了有状态流处理,它将处理函数(Process Function )嵌入到了 DataStream API 中。底层处理函数(Process Func…

BERT+PET方式数据处理

基于BERTPET方式数据预处理介绍 BERTPET方式数据预处理🐾 本项目中对数据部分的预处理步骤如下: 查看项目数据集编写Config类项目文件配置代码编写数据处理相关代码 1 查看项目数据集🐾 数据存放位置:/Users/***/PycharmProjects/llm/prom…

如何有效管理低绩效人员:CARES 框架

本文主要介绍了如何通过CARES框架有效管理低绩效员工,帮助他们提升绩效和积极性。原文: How to Effectively Manage Low Performers: The CARES Framework 作为管理者,最具挑战性的任务之一就是帮助表现不佳的团队成员提高积极性和技能水平。必须认识到&…

Linux磁盘分区使用情况查询

一、磁盘分区使用情况查询 1. 查询磁盘整体使用情况使用 df -h进行查询 如图我们可以了解到磁盘的一些大致的使用情况,注意当已用部分有超过80%使用的分区就意味着你需要进行磁盘的清理了。 2.查询指定的磁盘使用情况 使用指令 du -h 当不指定目录时,默…

“深入探讨Java中的对象拷贝:浅拷贝与深拷贝的差异与应用“

前言:在Java编程中,深拷贝(Deep Copy)与浅拷贝(Shallow Copy)是两个非常重要的概念。它们涉及到对象在内存中的复制方式,对于理解对象的引用、内存管理以及数据安全都至关重要。 ✨✨✨这里是秋…