导航

  • 一、支付宝文档解读和支付宝侧沟通
  • 二、对接框架基础搭建 springboot+支付宝SDK
  • 三、支付宝开放接口对接:老版SDK
  • 四、回调通知对接:websoket方式

    文章目录

    • 导航
    • 导读
    • gitee代码地址
    • 案例:新蓝海活动报名结果通知
      • 支付宝开放接口文档解读
        • 一、新蓝海活动报名结果通知文档地址
        • 二、蚂蚁金服消息文档
        • From 蚂蚁消息服务
      • 核心代码
        • 一、支付宝基础服务层
        • 二、服务启动后开启websoket长连接
    • 避坑指南
      • 一、接收不到通知-springboot项目
      • 二、接收不到通知-springcloud项目
    • 最后

导读

  • 经过前三篇的解读,对支付宝开放接口对接已经有了大体的了解,下面针对支付宝回调通知对接进行详细阐述,完成整体的支付宝接口对接闭环。开门见山。老规矩先上gitee代码。

gitee代码地址

  • https://gitee.com/zhaifengxi/zhai-docking-alipay-open

案例:新蓝海活动报名结果通知

支付宝开放接口文档解读
一、新蓝海活动报名结果通知文档地址
  • https://opendocs.alipay.com/apis/01ebii
二、蚂蚁金服消息文档
  • 地址:https://opendocs.alipay.com/open/10381/rkohsn
  • 消息的两种模式:1. From 蚂蚁消息服务 2.To 蚂蚁消息服务
  • From 蚂蚁消息服务:支付宝通知对接平台的消息服务,新蓝海活动报名结果通知 选用此模式来接收回调通知。
  • To蚂蚁消息服务:对接平台发送消息给支付宝平台。未使用,所以不展开说明。
From 蚂蚁消息服务
  • 两种对接方式:1.http(s)协议 2.websocket长连接
  • 官方原话:与 http(s) 相比,该方式接入性能更优,通道安全,减少成本,接入快速等优势,推荐使用 websocket 长连接 SDK 来接收 From 蚂蚁消息。所以选择使用此方式。
  • 消息通知间隔频率:2m、10m、10m、1h、2h、6h、15h
核心代码
一、支付宝基础服务层
@Slf4j
@Service
public class BaseAlipayApiNotifySerImpl implements BaseAlipayApiNotifySer {@AutowiredAlipayApiProperties alipayApiProp;@AutowiredBizLogSer bizLogSer;@SneakyThrows@Overridepublic String alipayMessage() {AlipayMsgClient alipayMsgClient = AlipayMsgClient.getInstance(alipayApiProp.getAppid());alipayMsgClient.setConnector(AlipayConstant.COMMON_MESSAGE_SERVER_URL);alipayMsgClient.setSecurityConfig(AlipayConstant.COMMON_SIGN_TYPE, alipayApiProp.getPrivateKey(), alipayApiProp.getPublicKey());alipayMsgClient.setMessageHandler(new MsgHandler() {/*** 客户端接收到消息后回调此方法* @param msgApi 接收到的消息的消息api名* @param msgId 接收到的消息的消息id* @param bizContent 接收到的消息的内容,json格式*/@Overridepublic void onMessage(String msgApi, String msgId, String bizContent) {/** 操作:记录业务日志 */BaseAlipayApiMessage message = new BaseAlipayApiMessage();message.setMsgApi(msgApi);message.setMsgId(msgId);message.setBizContent(bizContent);bizLogSer.save(new BizLogSave(new BizLogDataTemp(message, null), AlipayConstant.MESSAGE_LOG));}});/** 开启websoket长连接 */alipayMsgClient.connect();return JSONUtil.toStr(alipayMsgClient);}
}

BaseAlipayApiNotifySerImpl.java 详情:https://gitee.com/zhaifengxi/zhai-docking-alipay-open/blob/master/src/main/java/zhai/docking/alipay/service/base/alipay/api/notify/BaseAlipayApiNotifySerImpl.java

二、服务启动后开启websoket长连接
@Component
public class StartupRunner implements CommandLineRunner {@AutowiredBaseAlipayApiNotifySer baseAlipayApiNotifySer;@Overridepublic void run(String... args) throws Exception {/*** 保证每次服务启动时,调用蚂蚁金服connect方法*/String result = baseAlipayApiNotifySer.alipayMessage();}
}
  • 因为使用的websoket方式,每次项目重启都需要调用SDK中的connect方法,保持长连接。

StartupRunner.java 详情:https://gitee.com/zhaifengxi/zhai-docking-alipay-open/blob/master/src/main/java/zhai/docking/alipay/runner/StartupRunner.java

  • 以上核心代码就是完整的一套对接支付宝回调通知websoket方式的核心代码。

避坑指南

  • 上面的一整套代码已经躲避了支付宝开放接口的坑,下面讲解下这些坑。
一、接收不到通知-springboot项目
  • 原因:需要通过支付宝SDK的connect方法开启长连接,项目如果停止,启动之后仍然需要调用connect方法。
二、接收不到通知-springcloud项目
  • 原因:接口链路某个地方断掉了,需要通过调用connect方法,重新保持长连接。
  • 实际发生场景:gateway网关服务停后重启,业务微服务未停止,此时也接收不到通知,依然需要调用connect方法,重新保持长连接。
  • 可以提供一个手动触发connect的口,当链路中断的地方,常见网关服务,通过手动触发(如:restful接口)来进行启动长连接。

这个问题关键点在于分布式项目如何保持websocket通信,分布式项目会有很长的链路,至少两层,先是网关然后是具体微服务,中间任意环节中断websocket也会中断通信,导致接不到消息,所以需要针对分布式服务做好websocket的长连接的畅通。

最后

  • 本篇主要通过 “案例:新蓝海活动报名结果通知”,来完整串联如何开发对接支付宝回调通知,通过对具体文档、核心代码、避坑指南来进行详细分析,希望能给你一些参考。在这里发现自己的薄弱知识websoket和https,故下篇主要讲解http和websoket由浅入深,原创不易,希望大家多多支持。

支付宝接口对接指南(四、回调通知对接:websoket方式)【保姆级】相关推荐

  1. 玩转群晖NAS套件系列四:Audio Station安装使用保姆级教程!

    本章总结: 上一章节我们讲解<玩转群晖NAS套件系列三:Video Station安装使用保姆级教程!>,此教程堪称史上手把手的保姆教程,受到广大网友的一致好评. 很多人喜欢听音乐,但苦于 ...

  2. 项目对接支付宝支付,内网穿透实现监听支付宝的支付成功异步回调通知

    调试的话使用支付宝的沙箱环境来进行调试 调试的时候因为是本地调试,没有上线的域名,无法被支付宝的异步回调请求所打到,这种情况下可以使用内网穿透来进行解决 内网穿透步骤: 内网穿透的几个常用软件 1.n ...

  3. 高考准考证的照片要跟大学四年吗?快GET保姆级最美证件照全攻略!

    很多学弟学妹们都私信我,问高考准考证上的那张丑照真的要跟大学四年吗?的确,那个时候大家都熬夜苦读,哪有闲情逸致去打扮自己呢?就算拍照那天精心打扮了,得,死亡黑眼圈.死亡化妆技术.丑到爆的校服.还没来得 ...

  4. 免费物流快递单号查询接口快速对接指南

    [场景需求描述] 电商平台及ISV商家对物流api接口的需求有很多,今天我们主要分享的就是快递鸟快递单号查询接口的对接指南,快递单号查询接口对接的应用场景有很多,很多场景会遇到,最主要的就是电商网站用 ...

  5. 以证书方式对接支付宝接口

    在项目中也是第一次用到,测试的流程都好了,后来我问客户要相应的支付宝参数 结果给我的是证书文件,不是我之前测试用的公钥和私钥(一脸懵...) .......... 对接支付宝接口也可以用证书文件(不只 ...

  6. 支付宝对接源码php,thinkphp3.2.3 成功对接支付宝接口

    thinkphp3.2.3 成功对接支付宝接口,吾爱源码亲测!!! 一.首先下载支付宝官方接口,下载地址: https://b.alipay.com/order/productDetail.htm?p ...

  7. 主流常用100个快递物流单号查询接口对接指南

    快递单号查询接口指南的目的: 便于需要的用户理解快递单号查询接口作用并正确应用到实际场景. 快递单号查询接口作用: 快递物流轨迹类接口包含:即时查询接口和物流跟踪接口. 快递单号即时查询接口:实时查询 ...

  8. 支付宝接口 - 即时到账交易接口 对接 整理 1

    支付宝官方开放平台接口说明: https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.Gp6DiG&treeId=62&a ...

  9. Flutter对接支付宝接口

    " Flutter支付宝接口的对接教程" 对于一个App来说,支付功能是不可获取的一部分,今天,我就来分享一下在Flutter框架中支付宝的APP支付功能的接入过程.本文结构如下: ...

  10. 支付宝 当面付(扫描支付) 对接逻辑

    支付宝 当面付(扫描支付) 对接逻辑 这两天给网站 博客下方添加了 打赏功能 使用的是 支付宝的 当面付功能 特此记录一下,觉得不错的可以在下方打赏 嘿嘿 ,下面先来看一下效果图. 1.当面付产品介绍 ...

最新文章

  1. 2006鄂土整项目精神
  2. Android博客文章整理
  3. FileChannel应用实例——本地文件读数据
  4. Centos7使用yum源安装mysql5.7和redis
  5. 如何用distinct消除重复记录的同时又能选取多个字段值?
  6. HTML5基础一:常用布局标签
  7. 数据分析常用Python库:数值计算、可视化、机器学习等领域
  8. snmp 获得硬件信息_计算机网络基础课程—简单网络管理协议(SNMP)
  9. Access denied for user 'root'@'localhost' Could not obtain connection
  10. CLion开发,运行报错后问题排查
  11. LoadRunner压力测试:测试报告结果分析
  12. Spell of the rising moon
  13. iOS 修改app名称
  14. 二级域名使用https证书注意事项
  15. The content of element type “mapper“ must match “(cache-ref|cache|resultMap*|parameterMap*|sql*|inse
  16. 苦练基本功《如何阅读看懂一篇Datasheet》
  17. GitHub热榜:来膜拜这个流弊的AI框架!
  18. echarts环形柱状图
  19. QT5.14.1简单实现百度语音识别(附源码)
  20. 卷积神经网络和深度神经网络的区别是什么?

热门文章

  1. 计算机不显示验证码,验证码不显示_网页不显示验证码是怎么回事?
  2. 5.6 图层样式的缩放 [原创Ps教程]
  3. 王小九用计算机弹桥边姑娘,抖音最火歌曲是哪首?QQ音乐开放平台《桥边姑娘》让“野狼”靠边站...
  4. 生态 | 协同办公软件发展任重道远——基于数据库领域视角
  5. 双电阻差分电流采样_运放-输入偏置电流与输入失调电流
  6. 怎么把动态ip改成静态ip?
  7. 常用的不透明度的值,以黑色为例
  8. 如何删除双系统中的Linux系统
  9. hashcat简单使用
  10. Excel / WPS 下拉选择数据