电商业务Alipay支付实战(当面付实现)
一、扫码支付业务说明
支付宝二维码当面付:
(1)获取二维码、扫码支付、等待回调(支付宝后台)、修改订单状态(可能由未支付变为已支付)、定期对账
(2)二维码中包含订单信息,以及怎么扣款等信息
二、支付宝当面付流程
预下单:将订单信息先交给支付宝后台进行处理。
三、支付宝sdk代码集成
1、添加依赖包
(1)SDK-maven依赖地址说明:https://docs.open.alipay.com/54/103419/2、Demo去了解怎么玩
当面付DEMO:https://docs.open.alipay.com/54/104506/ 将Demo Copy到项目中3、配置 zfbinfo.properties
(1)配置个人商户的公钥和私钥对 (依赖支付宝的)
公私钥原理:
商户向支付宝后台发信息时,会先通过私钥加密
私钥:加密订单号、产品的详细、打折等信息 传到支付宝后台,密文没有公钥是解密不了的。
支付宝后台会拿着在操作后台(在zfbinfo.properties里设置)设置的公钥去解密,解密没问题则会执行支付宝后台扣款的流程。支付是否成功等信息也需要加密传递给商户,那么支付宝会用其私钥对传递的报文信息进行加密,并会把私钥对应的公钥保存到客户端的zfbinfo.properties。
客户端就可以使用公钥来解密。
以防黑客篡改我们的信息。。。
四、业务具体的实现逻辑
(一)生成二维码
(1) 根据前台传递的一些必备的信息,预下支付宝订单(用户点击下单的连接,
进入Controller中的方法) ->支付宝后台根据相应结果(Success、failed等状态) response信息生成支付二维码(2) 支付二维码的是字符串形式,通过google.zxing生成。具体形式是
http://localhost:8088/static/qrcode/202020202021929.png 这是二维码图片的Http相应路径,(3) 其实二维码是保存在机器的本地磁盘中的,例如我将二维码存在了D:\temp\qr-code\alipay\路径下,所以
当访问 http://localhost:8088/static/qrcode/202020202021929.png地址的时候,需要到本地磁盘
中去找对应的文件,因此,需要资源的映射,才能在本地磁盘中找到具体的信息。(4) 具体做法:在一个配置类里,如果当前访问的路径是/static/qrcode,就需要去做映射,映射到本地的存储路径中
(二)在沙箱环境下扫码测试
需要在沙箱环境下测试,要不钱丢了都不知道...沙箱环境就是内部可以模拟你的钱包,然后支付即可。
传递商户订单号参数来查询当面付的状态,根据阿里的当面付API的设置,以及用户真实的操作流程,返回一个结果(支付成功、支付失败、系统异常、不支持此类交易等等),返回到controller
(三)支付后结果的回调,异步向商家后台通知结果
手动查询订单的状态或者前端轮询去查询订单的状态这肯定是不合适的,所以为避免手动查询或线程去轮询,
因此支付宝提供了支付成功后主动回调查询信息的方式。用户通过手机扫描二维码进行支付,
支付宝会将该笔订单的变更信息,沿着商户调用预下单请求时所传入的通知地址主动推送给商户。
支付结果的回调要求应用服务器和支付宝的服务器能在公网上能通讯。
但是我们在本地环境是在内网环境,公网访问不了内网。正常情况下我们的ip是不对外开放的,因此我们需要一个桥梁(内网穿透工具),使得外网能够穿透我们的内网,到我们的内部访问我们自己的电脑。桥梁:NetApp
具体做法
get一下蚂蚁金服发送过来的参数,并全部打印出来,通过request获取:`getRequest().getParameterNames();`
通过map保存,
通过支付宝提供的API将以下信息通过参数传递:// 参数一:这里把支付宝传递的参数Map传递进来//参数二:支付宝公钥//编码//配置的签名类型boolean result = AlipaySignature.rsaCheckV2(map,Configs.getAlipayPublicKey(),"utf-8",Configs.getSignType());
得到一个布尔类型的result,此处是用非对称加密去解密支付宝回调接口,查看是否是支付宝回调的。密文是否被人篡改过。
result为true表示没被篡改过,则通过相应流getResponse().getWriter()返回success,result为false则向支付宝后台响应unSuccess
(五)退款流程
退款也要涉及到全局的唯一订单号,也是copyAli的API,注全局唯一订单号:全局唯一可通过:雪花算法、redis全局序列号等实现
电商业务Alipay支付实战(当面付实现)相关推荐
- 大型电商项目3.0实战+支付宝、微信支付项目实战
须知:视频来源网络,侵权请联系删除! 大型电商项目3.0实战 获取方式 扫描下面二维码回复:A110 支付宝.微信支付项目实战 获取方式 扫描下面二维码回复:A106
- 电商软件性能测试,实战 | 电商业务的性能测试(一): 必备基础知识
原标题:实战 | 电商业务的性能测试(一): 必备基础知识 1. 测试步骤及模型分析 1.1 测试步骤总览 需求分析与测试设计(性能需求目标+业务模型拆解) 测试数据准备和构造(基于模型的数据准备) ...
- Java生鲜电商平台-订单架构实战
Java生鲜电商平台-订单架构实战 生鲜电商中订单中心是一个电商后台系统的枢纽,在这订单这一环节上需要读取多个模块的数据和信息进行加工处理,并流向下一环节:因此订单模块对一电商系统来说,重要性不言而喻 ...
- 大数据项目--电商业务数据仓库
文章目录 一.电商业务与数据结构简介 1.1 电商业务流程图 1.2 数据表结构 1.2.1 电商常识 (SKU,SPU) 1.2.2 订单表(order_info) 订单详情表 (order_det ...
- 电商系统对接支付渠道的解决方案
文章目录 1 问题背景 2 前言 3 信用卡支付的交互流程 3.1 收银台模式(非直连) 3.2 直连模式 3.3 两种模式的区别 4 业务解决方案 5 技术实现的细节 6 如何防止支付掉单 6.1 ...
- 全站课-阶段二(Java SpringBoot API打造高级电商业务后端)
项目目录 missyou ├─github │ └─wxpay │ └─sdk # 微信sdk └─lin└─missyou│ MissyouApplication.java # 启动类├─api│ ...
- 亿级流量电商详情页系统实战:缓存架构+高可用服务架构+微服务架构
<缓存架构+高可用服务架构+微服务架构>深入讲解了亿级流量电商详情页系统的完整大型架构.同时最重要的是,在完全真实的大型电商详情页系统架构下,全流程实战了整套微服务架构,包含了基于领域驱动 ...
- Java生鲜电商平台-缓存架构实战
Java生鲜电商平台-缓存架构实战 说明:在Java生鲜电商中,缓存起到了非常重要的作用,目前整个项目中才用的是redis做分布式缓存. 缓存集群 缓存集群存在的问题 1.热key 缓存集群中的某个k ...
- 【干货】借助用户画像解决电商业务问题.pdf(附下载链接)
今天给大家带来姚凯飞先生所做的分享<借助用户画像解决电商业务问题.pdf>.关注用户画像及电商的伙伴们别错过了! 另外,我们也搭建了电商行业交流社群,电商行业的伙伴们可以扫码进群交流: 本 ...
- 深度|人脸图像的技术原理及在电商业务中的应用
1.概述 时至今日,计算机视觉和深度学习的迅速发展,给很多技术领域带来了颠覆性的变化. 人脸图像处理(Face Image Processing)就是其中的典型例子:在互联网时代,该技术通过各种各样的 ...
最新文章
- 大盘点 | 2020年21篇医学影像算法最佳综述
- winform_界面美化设计_显示/隐藏侧边栏
- 深入理解分布式技术 - 缓存过期策略手写LRU
- 主曲率 matlab,基于Matlab的Hertz接触参数和主曲率差函数关系的拟合
- 用ARM DS-5进行android linux开发
- Matlab二维绘图
- jap和java有关系吗_hibernate与jpa有什么区别和联系?
- 日志-周报-月报(2019年2月)
- eclipse clean_Clean Sheet – Windows 10的人体工程学Eclipse主题
- bdd cucumber_如何使用BDD构建坚如磐石的Ruby on Rails应用
- mysql排序规则错误_MySQL中“非法混合排序规则”错误的疑难解答
- 吴孟达肝癌逝世:肝被透支的全过程曝光!
- 信息学奥赛一本通 1001:Hello,World | OpenJudge NOI 1.1 01:Hello, World
- 有哪些开源的 Python 模块让你相见恨晚?
- 使用内部类或者外部类
- 中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
- 毕业设计 - - -数码交流论坛项目功能分析(暂时
- JavaScript快速入门(一)——JavaScript概览
- 2021 Duilib最新入门教程(一)Duilib简介
- autoconfig