首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

订单支付

目录 前言 支付系统的作用 核心流程 架构图 代码流程 线程池中处理发送消息到MQ、持久化的数据库 支付成功后,消息分发流程图 ​订单作为消费者消费消息 测试 ---- ---- 前言 文章中的图片和在摘录不是来自一篇文章...订单支付: 用户支付订单后,需要获取订单支付信息,包括支付流水号、支付时间等。...支付订单接着就是等商家发货,但在发货过程中,根据平台业务模式的不同,可能会涉及到订单的拆分。...并不是所有的支付请求都要先经过第三方支付平台,比如支付宝;而对于微信,则还需要凭支付参数申请一个prepay_id,再经由客户端发起支付; Response,没什么好说的,第三方渠道返回的支付必要参数;...代码流程 创建支付 线程池中处理发送消息到MQ、持久化的数据库 支付成功后,消息分发流程图 订单作为消费者消费消息 测试 在测试程序中调用sendMessage 因为发送消息是在线程池中,当测试程序

1.3K40
您找到你想要的搜索结果了吗?
是的
没有找到

订单支付功能测试

支付金额 1.小于最小值,如:小于0.01 2.大于最大值/金额上限 3.无实际意义金额,如0元 4.格式错误(负数、非数字) 5.余额小于实际需要支付的金额 6.超过第三方支付接口当日消费/单笔消费金额...支付接口 第三方接口,微信/支付宝/网银系统/post机终端服务 → 可以参照小鱼的这篇文章:《支付支付接口测试》 支付操作 1.指纹支付 2.免密支付 3.账号+密码支付 4.动态获取支付验证码支付...5.银行卡密支付 6.信用卡支付码 异常处理 1.退款处理 2.支付数据交换时中断(断电、断网、弱网),重新启动能否再支付 3.支付失败后如何处理 4.支付金额不足时,充值后可否继续支付 5.持续点击...6.多次扣款如何处理退款 7.取消支付/取消支付后再次支付 8.第三方支付未登录时支付 兼容性 PC/笔记本/平板/手机端支付 后台处理订单 1.成功订单财务处理 2.失败订单财务处理 3.退款订单财务处理

93110

订单视角看支付

虚拟货币支付不少公司会有自己的虚拟币,这些虚币也可以作为一种支付方式。一般会有一些金额、品类的限制,如虚拟支付不得超过每笔订单结算金额的 50%。...支付接口以业内某支付产品为例,其提供了多种集成支付能力的方式,其中「手机网页支付」适用于商户无独立 App,通过移动端 H5 网站进行传播的方式。我们以一次手机网页支付为例,了解支付的核心接口。...四、订单支付得物订单支付交互由于监管 KYC 的要求,一笔支付单不仅需要支付相关信息的如支付方式支付金额、支付有效时间等,也需要订单的买家信息、卖家信息、商品信息等等。...这些信息客户端无法全部给到,且基于安全的角度,也不能由客户端通过公网传参的方式传递,需要订单域与支付域进行交互传递相关信息。...之前有订单域通过注册定时回调任务,伪装成一个收银台支付回调的方式来实现 0 元单回调,实践下来会踩坑(与实际业务流程不符,伪装的回调需要不停适配支付回调的改动)。

23420

订单支付相关问题总结

由于支付宝没有对订单金额进行校验,就会导致用户能唤起支付,能支付成功,能触发服务端的回调,然后你人就离职了 #_# 所以服务端在创建订单的时候,一定要在订单表记录一下用户需要支付的金额,并在回调的时候进行金额校验...因为notify_url是异步通知的,所以就会必然存在一个问题,用户收到了支付宝同步返回的支付结果,提示支付成功了,但是这时候,服务端还没有收到异步回调,相应的订单状态还没有进行修改,用户查看订单时显示的可能还是未支付状态...针对问题三,这个是无法避免的,所以在异步通知的接口中订单处理逻辑一定要做幂等。 针对问题二,起定时任务,对待支付订单主动查询支付状态进行补偿。...并且,为了防止因服务器处理异常产生的订单没有支付成功的现象,同时启动定时任务,定时轮询待支付订单,查看支付到底有没有成功,进行补偿(会发生与客户端回调并发处理的问题,所以要加锁控制)。...所以,为了权衡,使用异步回调 + 定时任务的方式下,发生问题的概率就已经比较小了(会牺牲一下用户体验,就是用户支付成功了,可能要过个十分钟,订单状态才会变为已支付)。

56810

微信支付分 - 完结支付订单API

: "20191202102926" }, "total_amount": 1 } 常见请求错误返回: 错误一: { "code": "PARAM_ERROR", "message": "创建订单未填写服务结束时间...,则结束时间必填" } 解决方式: 1.创建支付订单时如果填写end_time,完结时为了省事,可以不填; 2.创建支付订单时,如果未填写end_time,完结时需要填写,而且填写的end_time...必须 > start_tim,且不能晚于调接口时间; 3.个人建议:创建支付订单时,填写start_time(OnAccept),不填写end_time; 在完结订单的时候,不填写start_time...错误二: { "code": "PARAM_ERROR", "message": "完结订单状态不合法" } 解决方式: 1.一般这种情况,可能是该订单已经完结了,无法再次完结,建议先查询支付订单状态..." } 解决方式: 1.创建订单start_time写OnAccept,end_time不填写;完结订单时start_time不写,end_time写new Date()记得格式化。

15130

解决支付订单,重复提交问题!

来自:cnblogs.com/cjsblog/p/14516909.html 概述 如图是一个简化的下单流程,首先是提交订单,然后是支付。...支付的话,一般是走支付网关(支付中心),然后支付中心与第三方支付渠道(微信、支付宝、银联)交互,支付成功以后,异步通知支付中心,支付中心更新自身支付订单状态,再通知业务应用,各业务再更新各自订单状态。...由于③⑤造成的掉单称之为外部掉单,由④⑥造成的掉单我们称之为内部掉单 为了防止掉单,这里可以这样处理: 1、支付订单增加一个中间状态“支付中”,当同一个订单支付的时候,先检查有没有状态为“支付中”的支付流水...,消息只处理一次,其余的忽略 5、业务应用也应做超时主动查询支付结果 对于上面说的超时主动查询可以在发起支付的时候将这些支付订单放到一张表中,用定时任务去扫 为了防止订单重复提交,可以这样处理: 1、创建订单的时候...,用订单信息计算一个哈希值,判断redis中是否有key,有则不允许重复提交,没有则生成一个新key,放到redis中设置个过期时间,然后创建订单

1.9K30

Thinkphp5实现支付支付、余额提现、订单查询、取消关闭订单

包含:【pc扫码支付】、【查询订单】、【余额提现】、【取消订单】、【关闭订单】 效果说明 SHARE THE BODY 1、pc扫码支付 2、手机支付成功截图 3、支付宝商家后台账单截图 开发前提...SHARE THE BODY 开发支付宝必须用注册一个企业账号,现在支付宝比较人性化了,如果你没有企业的信息也是可以只用的,因为支付宝有一个沙箱的测试功能,个人也是可以开发支付支付的功能。...notify_url' => 'http://www.jobya.cc/pay/index/notify', 'ali_public_key' => 'xxxxxx', // 加密方式...直接访问当前的方法就是在数据库生成一条没有付款的订单; 模拟支付代码如下 public function index() { $order = [ 'out_trade_no'...,如下 订单查询 //查询订单 out_trade_no 订单号 public function find($out_trade_no) { $order = [ 'out_trade_no

1.8K20

服务端防止订单重复支付

服务端防止订单重复支付 上图是一个简化的下单流程,首先是提交订单,然后是支付。...支付的话,一般是走支付网关(支付中心),然后支付中心与第三方支付渠道(微信、支付宝、银联)交互,支付成功以后,异步通知支付中心,支付中心更新自身支付订单状态,再通知业务应用,各业务再更新各自订单状态。...由③⑤造成的掉单称之为外部掉单,由④⑥造成的掉单我们称之为内部掉单 如何防止掉单 添加中间状态 支付订单增加一个中间状态“支付中”,当同一个订单支付的时候,先检查有没有状态为“支付中”的支付流水,当然支付...其实就是在一段时间内不可重复相同的操作 参考资料 服务端如何防止订单重复支付!...废物大师兄 分享计划 博客内容将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/ 许可协议 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 许可协议,

59010

订单超时未支付自动取消--实现简述

很多交易场景下的订单都会设置一个支付时间,超过该时间则会自动取消该订单(或者叫已过期),本文将会简述我是如何去实现这一功能的。...02 — 被动取消 被动取消的方式很简单:只有当用户查询订单信息时,我们再判断该订单是否超时,如果超时再进行超时逻辑的处理。...但是这种方式依赖于用户的查询操作触发,这也就是说如果用户不进行查询订单的操作,该订单就永远不会被取消。...03 — 主动取消 为了避免轮询并且在服务端主动取消订单,可以使用类似于消息队列的方式,比如 redis 的 pub/sub 服务。 ?...如上图所示,应用服务在成功提交订单(未支付)后,延时(时长就是支付的最大时间间隔)发布该订单到 redis 的自定义 channel ,而订单取消服务则订阅同一个 channel,一旦接收到消息则进行订单取消的逻辑处理

3.1K31
领券