一、功能介绍

支付宝对接  --->   支付回调   --->   查询支付状态

二、学习目标

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支付模块开发之知识点补充(第一篇)相关推荐

  1. <Android开发> Android vold - 第一篇 vold前言简介

    本系列主要介绍 Android vold,分为以下篇章 <Android开发> Android vold - 第一篇 vold前言简介 <Android开发> Android ...

  2. unity怪物攻击玩家减血_像素地牢开发(unity) 第一篇(并不是第一天)

    像素地牢开发(unity) 第一篇(并不是第一天) 大二的时候就特别想制作独立游戏,每次逛b站刷到独立游戏制作的视频就十分羡慕,然鹅我却一直鸽着(别问,问就是刷视频,打王者),但我还是利用了一些空闲时 ...

  3. 软件腐化的七个特征之僵化性和脆弱性(设计模式原则的反面) (《敏捷软件开发》读书总结第一篇)

    文章目录 前言 僵化性(Rigidity) 原文 我的理解 脆弱性(Fragility) 原文 我的理解 前言 最近读Robert C. Martin(Bob大叔)的书<敏捷软件开发>,准 ...

  4. 全面介绍数砖开发 Delta Lake 的第一篇论文

    今年八月,Delta Lake 的第一篇论文发布了,我当时写了个总体介绍:Delta Lake 第一篇论文发布了,感兴趣的朋友可以先看总体介绍,再来详细了解一下本篇论文.因为篇幅较长,全文超3万字,建 ...

  5. 追溯系统二次开发源代码免费分享---第一篇

    第一篇:先说下它出生的背景 5年前自己写了个hcrain架构,本想在公司推广应用起来.基本完成时,换工作了. 一直没有机会,前两看有机会自己写个系统.果断用起来并完善它,我只能说,绝对是个:个人快速开 ...

  6. android入门实例!一线互联网移动架构师NDK模块开发!看这一篇就够了!

    前言 Flutter 作为Google出品的一个新兴的跨平台移动客户端UI开发框架,正在被越来越多的开发者和组织使用,包括阿里的咸鱼.腾讯的微信等. 今天,我主要讲解Flutter中文本组件方面的Wi ...

  7. WIFI模块开发教程之W600网络篇6:Airkiss配网

    前言 本文研究如何使用微信Airkiss协议对模块进行配网,所谓配网即是说通知模块需要连接的路由器ssid和password的一种机制. 一.理论基础 1.Airkiss原理 设备处于混杂模式监听无线 ...

  8. Linux开发速记教程之第一篇

    一.Linux职业方向 ①.服务器运维:②.应用软件开发:③.设备驱动开发. 二.设备驱动开发 Linux 系统的一个重要设计哲学是一切皆文件.包括硬件设备,对于系统来说也是一个文件,所以系统向上层应 ...

  9. Python全栈开发之路 【第一篇】:Python 介绍

    本节内容 一.Python介绍 python的创始人为荷兰人--吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...

最新文章

  1. 深度学习在自动驾驶感知领域的应用
  2. [C编码笔记] 空串与NULL是不一样的
  3. express模板引擎 html,Express使用html模板的代码分析
  4. Android 模拟器调试的缺点
  5. 2015年《大数据》高被引论文 Top10
  6. ExecuteNonQuery()的返回值
  7. [转载] Python中生成器和迭代器的区别
  8. Ubunt sudo免密码输入
  9. 关于串口助手(sscom)打开影响32程序跑飞问题。
  10. python实现神经网络梯度下降算法_python实现随机梯度下降(SGD)
  11. 定义数字品牌资产,苏泽兰特CEO胡烜峰讲透元宇宙的价值与未来
  12. linux 基础林海峰,word数学公式编辑器-官方版合集下载-多特
  13. plt 字体 times new roman Ubuntu添加windows启动项
  14. Android课程表显示
  15. 收藏!5款超级好用的小工具推荐,各个都是同类软件中的翘楚
  16. 用MATLAB画圣诞树的源代码
  17. 计算机操作及应用描述,计算机操作及应用教程
  18. 炎炎夏日,教大家正确选用净水器的8个要点!
  19. Java pitfalls图书
  20. 生日蛋糕图案C语言,儿童创意美术课题《生日蛋糕》,让孩子们尝试自己亲手制作!...

热门文章

  1. git push 失败的处理方式
  2. linux下查看vnc端口_记一次VNC远程连接Linux问题解决记录(5900端口测试、KDE桌面安装)...
  3. 怎样去除口臭?先要了解其形成原因
  4. android 环境配置 ubuntu 14.04 64位
  5. Git下载安装详细教程
  6. Python协程中生成器send方法的使用
  7. 教你怎么用59秒就能打动客户,想快速赚钱一定来
  8. vue制作导航栏html,vue实现nav导航栏的方法
  9. 互联网代驾行业的发展及市场前景
  10. geoserver部署在Apache+Tomcat,并实践WMS、WFS、WCS