从零开始,到完全胜任alipay支付模块开发之知识点补充(第一篇)
一、功能介绍
支付宝对接 ---> 支付回调 ---> 查询支付状态
二、学习目标
1、熟悉支付宝对接核心文档,调通支付宝支付功能官方Demo
2、解析支付宝SDK对接源码
3、RSA1和RSA2验证签名及加解密
4、避免支付宝重复通知和数据校验
5、natapp外网穿透和tomcat remote debug
6、生成二维码,并持久化到图片服务器
1、支付宝回调
ps: 支付宝的回调会放到 Request 里面,我们从Request里面取出来放到Map上,然后再对这个Map进行处理
2、数据表设计
CREATE TABLE `pay_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL COMMENT '用户id',
`order_no` bigint(20) DEFAULT NULL COMMENT '订单号',
`pay_platform` int(10) DEFAULT NULL COMMENT '支付平台:1-支付宝,2-微信',
`platform_number` varchar(200) DEFAULT NULL COMMENT '支付宝支付流水号',
`platform_status` varchar(20) DEFAULT NULL COMMENT '支付宝支付状态',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
3、接口设计
支付接口设计 (ps: 支付一共有三个接口)
一、支付
request(入参是orderNo 就是订单号 )
orderNo
response(qrpath : 这是url地址可以是图片服务器地址 ,指向支付的二维码图片 )
success
{"status": 0,"data": {"orderNo": "1485158676346","qrPath": "http://img.happymmall.com/qr-1492329044075.png"}
}
fail
{"status": 1,"msg": "支付宝生成订单失败"
}
二、查询订单支付状态
request (入参是orderNo 就是订单号 )
orderNo
response
success
{"status": 0,"data": true
}
fail
{"status": 1,"msg": "该用户并没有该订单,查询无效"
}
三、支付宝回调
参考支付宝回调文档
https://support.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.mFogPC&treeId=193&articleId=103296&docType=1
request
HttpServletRequest
response
success
success
fail
failed
一、支付宝扫码支付功能对接
1、一些重要的官方文档
2、沙箱调试环境(买家账号测试、商家账号测试)
3、支付宝扫码支付主业务流程
4、支付宝扫码支付流程
5、支付宝扫码支付重要的字段
6、支付宝扫码支付重要的细节
7、支付宝扫码支付对接技巧
8、支付宝扫码支付官方Demo调试 (入手)
二、一些重要的官方文档
1、沙箱登录:
https://openhome.alipay.com/platform/appDaily.htm
2、沙箱环境使用说明:
https://docs.open.alipay.com/200/105311/
3、如何使用沙箱环境:
https://support.open.alipay.com/support/hotProblemDetail.htm?spm=a219a.7386797.0.0.318f4b70TMbvf4&source=search&id=251932
4、当面付产品介绍
https://docs.open.alipay.com/194/105072
5、扫码支付接入指引
https://docs.open.alipay.com/194/106078
6、当面付快速接入
https://docs.open.alipay.com/194/105170
7、当面付接入必读
https://docs.open.alipay.com/194/105322
8、当面付进阶功能
https://docs.open.alipay.com/194/105190
9、当面付异步通知-仅用于扫码支付
https://docs.open.alipay.com/194/103296
10、当面付SDK&Demo
https://docs.open.alipay.com/194/105201/
11、服务端SDK
https://docs.open.alipay.com/54/103419
12、生成RSA密钥
https://docs.open.alipay.com/291/105971
13、线上创建应用说明
https://docs.open.alipay.com/200/105310
一、沙箱调试环境
ps : (上图中的支付宝网关,沙箱环境是alipaydev.com,线上环境是alipay.com。后面会一步一步生成秘钥,配置秘钥)
ps : (这里说一点,如果想玩通这个沙箱环境,必须下载一个沙箱版钱包APP ,可惜目前只支持安卓版的)
二、支付宝扫码支付主业务流程
三、支付宝扫码支付流程
四、支付宝扫码支付重要的字段
五、支付宝扫码支付重要细节
1、主动轮询和回调的区别 (主动轮询简单来说就是,利用间隔时间,设置一定的频率,不断的去查询这个订单的状态,回调就是,支付宝付款成功,调用一下接口,获取到request里面的信息)
2、避免单边账 (意思是说,避免支付宝那边记账了,我们这边没记,反之亦然)
3、同步请求的加签和验证签名
4、回调的验证 (签名、金额、订单号、订单状态、交易状态、商户id)
5、过滤掉重复的通知
6、一定要验证并确保可接受的异步通知是支付宝发出的
7、回调请求的返回 (支付宝调我们 我们给支付宝一个返回,返回规则如下:)
六、支付宝扫码支付对接技巧
1、回调的调式方法
2、路由器设置开放本地到外网(不推荐)
3、外网远程debug(1、保持远端代码版本与本地代码一致,2、及时关闭开放的debug端口)
4、内网穿透(ngrok、natapp、花生壳)
七、外网远程debug
1、保持远端代码版本和本地代码版本一致
2、执行sudo vim ${tomcat}/bin/catalina.sh 进行编辑
3、添加如下配置、其中address为开放远程debug的端口号
CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server-y,suspend-n,address=5005"
4、开放远程debug的端口加到防火墙配置中,例如阿里云中配置5005端口
5、及时关闭开放的debug端口(不建议在公司服务器上这么做)
6、编辑sudo vim /etc/sysconfig/iptables
7、添加如下配置 -AINPUT -p tcp -m tcp --dport 5005 -j ACCEPT
8、:wq保存退出
9、重启防火墙sudo service iptables restart
八、内网穿透(natapp)
从零开始,到完全胜任alipay支付模块开发之知识点补充(第一篇)相关推荐
- <Android开发> Android vold - 第一篇 vold前言简介
本系列主要介绍 Android vold,分为以下篇章 <Android开发> Android vold - 第一篇 vold前言简介 <Android开发> Android ...
- unity怪物攻击玩家减血_像素地牢开发(unity) 第一篇(并不是第一天)
像素地牢开发(unity) 第一篇(并不是第一天) 大二的时候就特别想制作独立游戏,每次逛b站刷到独立游戏制作的视频就十分羡慕,然鹅我却一直鸽着(别问,问就是刷视频,打王者),但我还是利用了一些空闲时 ...
- 软件腐化的七个特征之僵化性和脆弱性(设计模式原则的反面) (《敏捷软件开发》读书总结第一篇)
文章目录 前言 僵化性(Rigidity) 原文 我的理解 脆弱性(Fragility) 原文 我的理解 前言 最近读Robert C. Martin(Bob大叔)的书<敏捷软件开发>,准 ...
- 全面介绍数砖开发 Delta Lake 的第一篇论文
今年八月,Delta Lake 的第一篇论文发布了,我当时写了个总体介绍:Delta Lake 第一篇论文发布了,感兴趣的朋友可以先看总体介绍,再来详细了解一下本篇论文.因为篇幅较长,全文超3万字,建 ...
- 追溯系统二次开发源代码免费分享---第一篇
第一篇:先说下它出生的背景 5年前自己写了个hcrain架构,本想在公司推广应用起来.基本完成时,换工作了. 一直没有机会,前两看有机会自己写个系统.果断用起来并完善它,我只能说,绝对是个:个人快速开 ...
- android入门实例!一线互联网移动架构师NDK模块开发!看这一篇就够了!
前言 Flutter 作为Google出品的一个新兴的跨平台移动客户端UI开发框架,正在被越来越多的开发者和组织使用,包括阿里的咸鱼.腾讯的微信等. 今天,我主要讲解Flutter中文本组件方面的Wi ...
- WIFI模块开发教程之W600网络篇6:Airkiss配网
前言 本文研究如何使用微信Airkiss协议对模块进行配网,所谓配网即是说通知模块需要连接的路由器ssid和password的一种机制. 一.理论基础 1.Airkiss原理 设备处于混杂模式监听无线 ...
- Linux开发速记教程之第一篇
一.Linux职业方向 ①.服务器运维:②.应用软件开发:③.设备驱动开发. 二.设备驱动开发 Linux 系统的一个重要设计哲学是一切皆文件.包括硬件设备,对于系统来说也是一个文件,所以系统向上层应 ...
- Python全栈开发之路 【第一篇】:Python 介绍
本节内容 一.Python介绍 python的创始人为荷兰人--吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...
最新文章
- 深度学习在自动驾驶感知领域的应用
- [C编码笔记] 空串与NULL是不一样的
- express模板引擎 html,Express使用html模板的代码分析
- Android 模拟器调试的缺点
- 2015年《大数据》高被引论文 Top10
- ExecuteNonQuery()的返回值
- [转载] Python中生成器和迭代器的区别
- Ubunt sudo免密码输入
- 关于串口助手(sscom)打开影响32程序跑飞问题。
- python实现神经网络梯度下降算法_python实现随机梯度下降(SGD)
- 定义数字品牌资产,苏泽兰特CEO胡烜峰讲透元宇宙的价值与未来
- linux 基础林海峰,word数学公式编辑器-官方版合集下载-多特
- plt 字体 times new roman Ubuntu添加windows启动项
- Android课程表显示
- 收藏!5款超级好用的小工具推荐,各个都是同类软件中的翘楚
- 用MATLAB画圣诞树的源代码
- 计算机操作及应用描述,计算机操作及应用教程
- 炎炎夏日,教大家正确选用净水器的8个要点!
- Java pitfalls图书
- 生日蛋糕图案C语言,儿童创意美术课题《生日蛋糕》,让孩子们尝试自己亲手制作!...
热门文章
- git push 失败的处理方式
- linux下查看vnc端口_记一次VNC远程连接Linux问题解决记录(5900端口测试、KDE桌面安装)...
- 怎样去除口臭?先要了解其形成原因
- android 环境配置 ubuntu 14.04 64位
- Git下载安装详细教程
- Python协程中生成器send方法的使用
- 教你怎么用59秒就能打动客户,想快速赚钱一定来
- vue制作导航栏html,vue实现nav导航栏的方法
- 互联网代驾行业的发展及市场前景
- geoserver部署在Apache+Tomcat,并实践WMS、WFS、WCS