几年前,刚做电商的时候,我开始做支付模块,负责去集成第三方支付接口,集成的接口有:微信(分两种,一种扫码,一种直接支付),支付宝(现在也分两种),易宝(据说快黄了),快钱(相对支付宝微信费率低,但提现周期长),北京农商银行网上银行等。
支付流程基本一致,这里拿快钱支付流程为例:
流程详解:
1、消费者选择商品,商品参数传递给send页面。
2、Send页面将请求提交到快钱。
3、Send提交后,跳转到快钱银行列表页面,快钱测试环境的银行是模拟的银行,支付不需要用真实银行卡做测试。
4、支付完毕后,快钱会将支付结果反馈给receive页面,该功能在send页面中的bgUrl参数设置的,该地址要求是外网能访问到的地址,不能是localhost地址,商户技术可以参考send页面所给的例子。
5、receive页面接收到快钱支付结果后,商户先做业务逻辑处理,比如更新数据库。之后再通知快钱已经接收到支付结果。通知快钱接收到支付结果的功能由<result>标签实现,该标签的值一定要为1,表示商户接收到通知。如果该值不为1,快钱会不停的向该receive页面发送支付结果,所以要求商户只要接收到快钱的支付结果,不管交易结果是成功还是失败, <result>的值都要返回1。 6、receive页面接收到快钱支付结果后,会自动将参数传递给show页面并跳转到show页面,该功能是由receive页面中的<redirecturl>标签实现,该标签中的值便是show页面的地址。代码中的<redirecturl>标签已经赋值,商户需要根据自己的实际情况做修改。同样,show页面不能是localhost的本地地址。
刚开始做的时候只为实现,并未考虑高并发、响应速度等因素。所以在第一版网站上线不久出现以下问题:
1.用户支付成功,但订单还处于未支付状态。
2.由于用户第一次支付成功,但订单处于未支付,导致用户以为未支付成功,又支付了一次。
3.做了秒杀和团购功能后,导致第三方支付接口回调网站接口io阻塞。
仔细分析问题主要出在调用receive页面发送支付结果(调用网站接口,通知网站此订单已支付。)
同一时间,我个人在京东618买书的时候,发现我的订单我已支付成功,但订单状态仍然为未支付状态,过了大概半小时左右,支付状态变为已支付并显示开始打包。相对而言,我们的网站和京东比都存在1中的问题,而我们只做到了给第三方提供接口而未考虑到大并发情况下程序的响应问题,拿微信支付举例子,微信在支付成功后,回对网站的支付回调接口回调三次,如果三次都未响应则微信不去再次回调,所以导致上面的问题出现。京东之所以过了半小时左右还能把状态改回来,并不是因为他们的服务器牛B、带宽牛B,而是他们加入了电商必备的一件利器----消息中间件,后来我查了一下他们的消息中间件用的是activemq。
补救措施:
1.加入消息中间件activemq。(现在有好多优秀的消息中间件,apache的activemq,阿里的rocketmq等)
2.加入定时任务–负责调用第三方支付查询接口,验证未支付的订单是否支付成功,将已支付成功但未及时更改为已支付的订单更改为已支付(补刀)
措施1可以有效解决1、2、3的问题,当第三方支付回调网站接口,网站接口收到消息直接插入消息中间件同时返回给第三方支付接口结果。第三方支付回调一次就得到响应,就不会去回调第二次,也侧面减轻多次回调代理来的访问量过多问题。
措施2,主要为了做订单验证和平帐作用,最开始用的spring+quartz,可以设定执行时间,开始为1小时执行一次,后期稳定后,改为每天后半夜2点执行。
3.增加调用及接收第三方支付的消息日志功能(主要为了出问题时候的分析排查),因为有时候也有可能第三方支付服务器挂掉了就真的没回调咱的接口(易宝支付多次出现此情况,对此我表示很呵呵)
相关推荐
【尚硅谷电商项目--gmall-0529】是一个典型的电商系统开发案例,它涵盖了电商领域的多个核心功能模块,是学习和实践Java Web技术、Spring Boot、MyBatis等框架的理想项目。该项目的主要目标是提供一个完整的电商解决...
这个模板为开发者提供了一个快速搭建电商平台的基础架构,包含了必要的页面、组件和功能,旨在简化开发流程,提高开发效率。 【描述】"uniapp 电商项目模版--mix-mall" 描述了模板的主要功能和应用场景,即用于创建...
【小米电商实战项目--YiGou.zip】是一个面向IT专业人士的电商系统实践项目,旨在帮助开发者提升在电商领域的技术应用能力。项目的核心是构建一个类似小米商城的在线购物平台,涵盖用户管理、商品展示、购物车、订单...
综上所述,EMall-mp项目是一个综合性的电商解决方案,涵盖了组件化开发、MVVM架构、Flutter技术、状态管理、网络请求、支付集成等多个关键领域,为开发者提供了构建高效、可扩展的电商应用的蓝图。通过学习和利用...
2. **后端架构**:电商项目通常需要强大的后端支持,Mix-Mall可能使用了Spring Boot、Django、Node.js等后端技术栈,为API接口提供服务,处理用户请求、数据存储与处理、订单管理等业务逻辑。 3. **数据库设计**:...
在"flutter_shop"项目中,你将学习到如何利用Flutter搭建一个完整的电商应用架构。这包括用户登录注册模块、商品浏览模块、购物车功能、订单管理、支付流程等核心功能。在用户登录注册部分,你将接触到网络请求的...
本文将深入探讨基于Java开发的跨境电商平台ECO,揭示其背后的技术架构、核心功能以及源码实现细节。 【描述】:“基于Java开发的跨境电商平台ECO-源码”是一个开源项目,旨在为开发者提供一个学习和参考的实例,以...
【Java电商商城项目-Mall】是一个综合性的电子商务平台开发项目,它主要基于Java技术栈,为用户提供了一套完整的在线购物解决方案。该项目的核心目标是实现一个功能完善的网上商城系统,包括商品浏览、用户注册与...
4. 支付模块:与第三方支付平台的对接,如支付宝、微信支付。 5. 物流模块:物流信息同步,配送状态更新。 6. 客服模块:在线咨询、投诉处理等。 系统还可能采用了缓存技术(如Redis)来提高数据访问速度,减轻...
2. 订单模块:处理用户下单、支付、退款等流程,涉及到复杂的业务逻辑和状态管理。这部分源码会展示如何实现订单状态的转换,以及与支付平台的对接。 3. 用户模块:包括用户注册、登录、个人信息管理等。Android...
- 支付模块:集成第三方支付接口,如支付宝、微信支付,实现安全的在线支付。 - 评价模块:用户对商品和服务的评价,促进商品质量提升和口碑传播。 4. **数据处理与优化** - 数据库设计:遵循正常化原则,合理...
5. **功能模块**:如支付系统、内容管理系统、用户管理系统、推荐算法等的详细描述。 6. **优先级和迭代计划**:明确哪些功能是首要实现的,以及后续版本的规划。 7. **技术需求**:涉及到的编程语言、框架、数据库...
1. **电商系统架构**:项目可能涉及到用户界面、商品管理、订单处理、库存控制、支付集成等多个组件,每个都可能有独立的服务或微服务实现。 2. **Gmail集成**:项目可能包含与Gmail API的集成,允许用户通过Gmail...
本文将深入探讨一个基于Spring Cloud构建的电商购物平台——cloud-shop,以揭示其背后的架构设计、核心技术以及实现细节。 一、Spring Cloud基础 Spring Cloud是基于Spring Boot进行快速搭建分布式系统的一系列...
4. **E-Commerce 功能模块**:项目可能包含用户管理、商品展示、购物车、订单处理、支付、库存管理、物流跟踪等模块,每个模块都可以作为一个单独的微服务。 5. **RESTful API 设计**:为了实现微服务间的通信,...
8. 技术平台使用经验:实际操作平台时,实习生可能需要熟悉各种电商技术平台。这些包括购物车系统、内容管理系统(CMS)、客户关系管理系统(CRM)等。熟悉这些平台的使用能够帮助实习生在将来快速适应不同的工作...
在本Java电商项目实战中,我们将探讨如何实现20个关键的前端功能,聚焦于前端模块的设计与实现,以提升用户体验并提供流畅的电子商务流程。首先,让我们深入了解项目的代码结构。 第20章的核心是代码结构的介绍。在...
**电商应用架构**:该电商系统可能包含以下主要模块:用户模块(用户注册、登录、个人信息管理)、商品模块(商品分类、搜索、详情展示)、购物车模块(添加、删除、修改购物车商品数量)、订单模块(订单创建、支付...
【标题】"聚美优品电商项目-jmyp-parent.zip" ...通过对"jmyp-parent-master"这个文件的解压和分析,我们可以深入了解聚美优品电商项目的技术选型、模块划分、具体实现细节,进一步学习和研究电商平台的开发与运维。
### 电商微服务架构搭建全过程教程 在当前互联网技术飞速发展的背景下,电商系统作为连接商家与消费者的桥梁,其稳定性、扩展性和性能表现至关重要。为了满足高并发、大数据量处理的需求,越来越多的企业选择采用...