订单推送设计思路-基于支付ID而不是订单号来推送

方案:不是基于订单号来核销和分账的,抖音是基于每一笔抖音支付来做订单推送,核销和分账
现象:这样会在抖音的订单中心中会出现很多条订单推送的记录。

抖音App订单列表状态如下:待支付,已取消,已支付,已核销

抖音文档地址
订单同步
https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/server/ecpay/order/order-sync

1.发送订单支付成功事件,根据MQ消息中定义的type来区分不同的支付项目

2.定时任务的关键参数,商家订单号,支付金额,支付时间,在使用公用模块,公用方法中,需要替换成当前定时任务JOB的当前对象的关键参数:商家订单号,支付金额,支付时间
定时任务的outOrderNo payTime payAmt 不取公共方法中,而是取的定时任务的当前记录的outOrderNo payTime payAmt

3.BeanUtils.copyProperties 对象属性覆盖方法慎用,避免将无关的属性被覆盖了。Integer与String属性类型不对,这个需要注意。

4.定时任务处理推送的时候,需要过滤已经推送的记录。无需重复推送

5.加上日志 “抖音推送” 等关键字,便于日志检索,类似RequestId功能,同时在try-catch 异常捕获中也需要加上该关键字。

6.循环思路
* 构建终止退出机制
* 构建新的记录循环机制
* 构建记录之间不相互,循环中某一条异常了,对其他的循环对象不影响中断。
初始化下一次的记录,及备份当前成功的记录(逻辑删除,转移到备份表,新增下一次定时任务分账的记录)

7.兜底,闭环思路
订单开始时间,到订单结束时间,考虑将订单结束时间收尾。将不同的业务规则最终归一到一套规则来。

订单推送设计思路-基于支付ID而不是订单号来推送的更多相关文章

  1. XiaomiPushDemo【小米推送集成,基于V3.6.12版本】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个Demo只是记录小米推送的集成,不能运行. 使用步骤 一.项目组织结构图 注意事项: 1.  导入类文件后需要change包名以 ...

  2. 分享一个CQRS/ES架构中基于写文件的EventStore的设计思路

    最近打算用C#实现一个基于文件的EventStore. 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event Sourcing这种架构,我博客 ...

  3. 数据权限设计——基于EntityFramework的数据权限设计方案:一种设计思路

    前言:“我们有一个订单列表,希望能够根据当前登陆的不同用户看到不同类型的订单数据”.“我们希望不同的用户能看到不同时间段的扫描报表数据”.“我们系统需要不同用户查看不同的生产报表列”.诸如此类,最近经 ...

  4. ThinkPHP 提供Auth 权限管理、支付宝、微信支付、阿里oss、友盟推送、融云即时通讯、云通讯短信、Email、Excel、PDF 等等

    多功能 THinkPHP 开源框架 项目简介:使用 THinkPHP 开发项目的过程中把一些常用的功能或者第三方 sdk 整合好,开源供亲们参考,如 Auth 权限管理.支付宝.微信支付.阿里oss. ...

  5. TYPESDK手游聚合SDK服务端设计思路与架构之四:流程优化之信息安全与订单校验

    有了前文几个步骤的分析和设计,TYPESDK的信息交互流程已经可以正常工作了,但是,这个流程还没有考虑到支付这样的过程中,至关重要的信息安全问题. 在整个交互过程中,游戏服务端,SDK服务端,渠道服务 ...

  6. TYPESDK手游聚合SDK服务端设计思路与架构之三:流程优化之订单保存与通知

    经过前两篇文字的分析与设计,我们已经可以搭建出一个能够支持多游戏多渠道的聚合SDK服务端,但这只是理想化状态下的一个简化模型.如果接入渠道的逻辑都是按照理想化的简化过程来构建,那么对于支付的请求,我们 ...

  7. JPushDemo【极光推送集成,基于v3.1.8版本】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个Demo只是记录极光推送的集成,不能运行. 使用步骤 一.项目组织结构图 注意事项: 1.  导入类文件后需要change包名以 ...

  8. 基于Docker一键部署大规模Hadoop集群及设计思路

    一.背景: 随着互联网的发展.互联网用户的增加,互联网中的数据也急剧膨胀.每天产生的数据量数以万计,本地文件系统和单机CPU已无法满足存储和计算要求.Hadoop分布式文件系统(HDFS)是海量数据存 ...

  9. HTTP 协议的历史演变和设计思路

    HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点. 本文介绍 HTTP 协议的历史演变和设计思路. 一.HTTP/0.9 HTTP 是基于 TCP ...

  10. EventStore的设计思路

    EventStore的设计思路 最近打算用C#实现一个基于文件的EventStore. 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event ...

随机推荐

  1. 代码安全无忧—云效Codeup代码加密技术发展之路

    简介: 从代码服务及代码安全角度出发,看看云效代码加密技术如何解决这一问题 代码数据存在云端,如何保障它的安全? 部分企业管理者对于云端代码托管存在一丝担心:我的代码存在云端服务器,会不会被泄露? 接 ...

  2. 双11特刊 | 一文揭秘云数据库RDS如何顺滑应对流量洪峰

    ​简介:从绿色低碳到硬核科技,看RDS如何用绿色科技助力2021"双11"? 双十一回顾 从平台到商家,再从物流到客户手中,云数据库RDS支撑着双11集团电商的在线业务.RDS首次 ...

  3. [FAQ] panic: listen tcp :xxxx: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

    在 Go 中运行服务之前的绑定端口这一步,如果端口号被占用了,那么会提示它只能使用一次. 换个端口号或者检查端口号的占用程序. Link:https://www.cnblogs.com/farwish ...

  4. [Caddy2] cloudflare, acme: cleaning up failed: no memory of presenting a DNS record

    使用 cloudflare 做为 DNS 之后,使用 Caddy 申请 Lets Encrypt 证书. 有时在日志里会发现一系列的提示信息: acme: use dns-01 solver acme ...

  5. 指定Task任务顺序执行

    经常听到说线程池这个东西,凭印象写了个这么简单的例子. CusTRun方法要不要await,取决于要不要作为后台任务.任务可指定数量,线程参数可共享全,顺序可控,可继续改进. using System ...

  6. python生成随机汉字

    python 随机生成汉字 第一种方法:Unicode码 在unicode码中,汉字的范围是(0x4E00, 9FBF) 这个方法比较简单,但是有个小问题,unicode码中收录了2万多个汉字,包含很 ...

  7. ruby 定时器 rufus-scheduler

    安装 gem install rufus-scheduler ruby #!/usr/bin/env ruby require 'rubygems' require 'rufus-scheduler' ...

  8. Linux-0.11操作系统源码调试

    学习操作系统有比较好的两种方式,第一种是跟着别人写一个操作系统出来,<操作系统真相还原>.<Orange's:一个操作系统的实现>等书就是教学这个的:另一种方式就是调试操作系统 ...

  9. linux用户与用户组管理

    linux用户与用户组管理 目录 linux用户与用户组管理 1.linux用户管理 1.1 用户基础 1.2 /etc/passwd:用户信息文件 1.3 /etc/shadow:用户密码信息文件 ...

  10. 网络流量分析 | AnaTraf 网络故障排除万用表教程更新: 如何抓取两个 MAC / IP 地址之间的流量?

    AnaTraf 致力于提供国产化网络流量分析.网络可视化.网络故障排除解决方案. AnaTraf 网络万用表是一款实时的网络测量.流量分析工具,用于网络流量监控.识别网络性能瓶颈.快速排查网络问题. ...