从零开始,到完全胜任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)

猜你喜欢

转载自blog.csdn.net/xinbumi/article/details/82655932
今日推荐