一、功能介绍

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

二、学习目标

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. 2020十大热门机器学习项目
  2. 利用Delphi的File Of Type创建并管理属于你自己的数据库
  3. 简单使用URLConnection、HttpURLConnection和HttpClient访问网络资源
  4. scale 和 transform-origin 实现线条从左侧进入,右侧离开效果
  5. 第16章:MongoDB-聚合操作--聚合管道--$project
  6. linux进程---exec族函数(execl, execlp, execv, execvp, )解释和配合fork的使用
  7. .NET Core开发实战(第34课:MediatR:轻松实现命令查询职责分离模式(CQRS))--学习笔记(下)...
  8. 算法的时间复杂度(python版容易理解)+常用的时间复杂度、python代码--数据结构
  9. fastdfs-01-了解
  10. linux配置路径PATH问题
  11. 信息抽取:SPO三元组知识
  12. C1083: 无法打开包括文件: “stdafx.h”: No such file or directory
  13. 事务及其传播行为的通俗易懂的讲解
  14. cmd长ping记录日志和时间_Ping记录时间的方法
  15. 第十二届蓝桥杯模拟赛Python组(第一期)
  16. Vue中select默认选中下拉选项第一条(举例iview AutoComplete组件)
  17. codesys 简单案例_CODESYS在智能生产线中的应用案例
  18. 美化你的Xfce桌面
  19. 开发常用的google插件
  20. access有效性规则不为空值_在设置access有效性规则中,大于0并且小于100怎么写?...

热门文章

  1. 微码汇教你如何应用微场景营销
  2. 关于新闻的上一篇,下一篇
  3. 什么是缓存?Mybaits一级缓存和二级缓存分别是什么,区别是什么?缓存和缓冲区的区别是什么?
  4. 激活函数以及损失函数
  5. 80386保护模式段式寻址
  6. 用键盘8个键演奏一首蒲公英的约定送给996的自己或者一首月亮代表我的心给七夕的她...
  7. 重入锁 ReentrantLock
  8. Linux 识别不到PCIE,FZ3 的 PCIe 插槽在 linux 用不了
  9. idea把mybatis的sql黄色背景去掉
  10. pandas中的to_excel方法解析