更新时间:2024-04-08 10:08:45收藏订阅更新我的文档设置返回文档简介蚂蚁集团向外推送官方消息。推送内容包括(蚂蚁集团交易、签约、商品等信息),基于该推送服务,应用获取蚂蚁集团数据不需再不停轮询 api,仅需在接收到蚂蚁集团推送的消息时调用 api 获取即可,大幅提高 api 调用效率。 使用流程开通服务入驻说明初次入驻支付宝开放平台请按照 平台入驻 说明操作。订阅消息订阅消息接口在应用页面点击左侧的 开发设置 进入消息服务的订阅管理页面,在 from 平台 标签页即可订阅所需监听的消息接口(以下以网页移动&应用为例进行说明)。接入实现目前开放平台消息凯发k8官方网娱乐官方的服务支持商家两种通讯协议来接收消息,分为长连接 sdk 以及 http(s),后续根据需要支付宝还可能会提供更丰富的支持,商家可以根据自己的需要自行选择接入方式。针对不同的消息接口开发者可以在订阅消息接口时选择接入方式,原有已经订阅过的消息接口默认使用 http 来投递消息,不会影响到现有业务。websocket 长连接如果开发者在订阅消息接口时,选择了 websocket 长连接接入,则可以忽略后续关于 http(s) 接入的相关说明,专注于实现接收消息后的业务处理逻辑即可。与 http(s) 相比,该方式接入性能更优,通道安全,减少成本,接入快速等优势,推荐使用 websocket 长连接 sdk 来接收 from 蚂蚁消息:●官方 sdk,处理消息无需关心验签,协议报文组装等业务逻辑,提升消费成功率,专注消息内容处理业务即可。●无需开启 httpserver,通过长连接可以提供更高效的通讯能力,特别是对于量大的场景效果更明显。●针对非 https 的商家提供安全的通讯渠道,减少申请 https 服务端证书的成本,也能具备一定的安全能力。●商家可以接收来自于蚂蚁的消息,后续还可以发送 to 蚂蚁消息,消息通讯协议统一,可以有效降低接入成本。公钥设置为了在接收消息时能正常的验签,开发者需要在开放平台门户的 开发信息 页面的 接口加签方式 中设置 应用公钥,如果该应用已经设置过则可以忽略该步骤。处理 from 蚂蚁消息长连接 sdk 的接入说明以及代码 demo 可查看 websocket长连接接入。http(s)接入网关设置登录开放平台控制台,在应用 凯发k8官方网娱乐官方首页/开发设置 下设置应用网关。应用网关地址默认情况下,支付宝主动以 post 方式发送通知消息给配置的应用网关地址。注意:产品地址优先。即:若具体对接的产品额外说明了消息投递的地址,则请优先使用产品指定的地址,例如 app支付 产品的 notify_url 参数。加签方式默认情况下,支付宝投递的消息会使用此签名方法对消息进行签名。注意:产品签名算法优先。即:若具体对接的产品额外说明了消息的加签方式,则请优先使用产品指定的加签方式,例如 app支付 产品的 sign_type 参数。处理 from 蚂蚁消息 验签●获取验签基本要素。●生成待验签字符串。 则待验签字符串为:●调用验签函数。使用各自语言对应的 sha256withrsa(对应 sign_type 为 rsa2)或 sha1withrsa(对应 sign_type 为 rsa)签名函数利用支付宝公钥对待验签字符串进行验签。 若使用开放平台服务端 sdk,可以使用以下方法处理com.alipay.api.internal.util.alipaysignature#rsacheck处理,对应不同的算法传递对应的签名算法和支付宝公钥即可。幂等处理由于消息存在重试机制(见投递重试策略),同一笔消息(相同 notify_id)可能多次发送(网络原因、商家服务器原因、或者商家接收处理成功但并未按要求返回 success 字符串等),消息接收方需要对同一个 notifyid 的多次消息投递实现幂等处理。若之前相同的 notify_id 已处理成功直接返回 success 字符串即可。业务处理●获取消息接口。 from 蚂蚁消息接口名用于表示一个或一类业务变更消息。由于历史原因,存在两个消息接口标识:msg_method 和 notify_type。优先从 msg_method 获取消息接口标识,若不存在则用 notify_type 作为接口标识。●获取业务参数。 标准的 from 蚂蚁消息接口的业务参数统一从 biz_content 中获取。历史原因一部分接口的业务报文的内容是平铺在一级参数(例如 app支付的异步通知),根据消息报文中的 msg_method,实际的业务处理,具体的业务报文以及处理逻辑请参考对应的 from 蚂蚁消息接口。●处理业务逻辑。 请依据对接的具体业务自行处理。消息正确处理后,http 同步响应报文需要返回 success 字符串,消息服务则认为开发者已经处理成功,停止投递,否则会按照重投策略多次投递。反馈消息接收结果消息正确处理后,http 同步响应报文需要返回 success 字符串,消息服务则认为开发者已经处理成功,停止投递,如果返回 fail 或其它值,表示消息获取失败,支付宝会根据 投递重试策略(见投递重试策略) 重新发送消息到应用网关地址。样例代码在 github 上有不同开发者为支付宝开放平台做了一些非官方的 sdk,其中处理 from 蚂蚁消息的 sdk 中处理逻辑比较规范的可查看 ,注意此项目为非官方的,相关代码仅供逻辑参考。faq什么是消息签名?支付宝投递给开发者应用的消息会对报文进行签名,更多签名相关的通用问题请移步 签名专区。为什么无法使用 rsa 签名算法?为了提供更强级别的安全通信能力,新增应用强制要求使用 rsa2 签名算法,详情可查看 。验签相关问题验签失败的可能情况主要包括以下几类,请按顺序依次排查。●支付宝公钥错误。详情可查看 生成并配置密钥。●字符集错误。使用报文中的 charset 参数作为验签字符集)。●签名原文错误。可查看 异步通知验签 的待签名字符串说明。●sign_type 是否参与签名。标准的 from 蚂蚁 消息在验签环节均需要把 sign 和 sign_type 两个参数去除(这种情况可以使用 开放平台服务端sdk 里的com.alipay.api.internal.util.alipaysignature#getsigncheckcontentv1方法拼接);有少部分历史消息接口验签时仅需要把 sign 移除(这部分消息接口会在产品文档中作特殊说明,这种情况可以使用 开放平台服务端sdk 里的com.alipay.api.internal.util.alipaysignature#getsigncheckcontentv2方法拼接)。具体方法如下:●暂无 sign_type 参与验签的 from 蚂蚁消息接口。如何提高 from 蚂蚁消息的消费能力?以下仅作为建议的做法,请开发者根据自己的技术架构和业务场景做决策。●。●阿里云推荐使用 。●异步化处理。即将消息可靠接收和业务处理做到异步,例如可以在做 业务处理 时将支付宝的消息投递到可靠的分布式消息队列,投递成功后即可以直接返回 success,然后再异步处理即可。是否支持加密?目前 from 蚂蚁消息的加密功能处于内测阶段。为什么收不到 from 蚂蚁消息?这种情况一般是开发者的配置的应用网关地址出现了问题,可能情况包括:●网关地址域名解析错误:可用dig ${host} short查看。●服务有效性校验:一般是服务宕机,可通过curl -vk https://${host}或者curl -vk http://${host}验证链接有效性。●被防火墙白名单拦截:请联系凯发app官方网站的技术支持获取蚂蚁集团的出口 ip 列表。●单 ip 多域名 情况下,sni 功能未开启:详情可查看 。●https 情况下证书不被信任:不支持自签名证书,请保证证书由权威机构签发并且证书未失效。●投递到了其它地址:前面提到过,默认情况下所有蚂蚁集团的消息会投递到应用配置的 应用网关 地址,但是由于有些支付宝开放平台的功能会提供 动态地址 功能(例如 ),这种类型的产品会要求在请求 openapi 的时候传递一个 notify_url 参数,在实际投递消息的时候会将消息投递到 notify_url 指定的地址。 注意:这种 动态地址 情况仅限于部分已有的开放平台产品(默认均不支持,支持的产品会在其产品文档中特殊说明),同时现有产品会继续支持此特性,后续新增的产品不会支持。一种简单的排查方式是:如果收到的消息接口标识为 msg_method 的情况是不支持 notify_url 这样的动态地址的,如果收到的消息接口标识为 notify_type 的情况则需要查看对应的产品文档。投递重试策略一般情况下,25 小时以内完成 8 次通知,除了第一次是实时投递外,后续的每次重试都会间隔一段时间,间隔频率一般是:2m、10m、10m、1h、2h、6h、15h(第二次消息投递是在第一次投递失败后的 2 分钟;第三次投递是在第二次投递失败后的 10 分钟,以此类推)。 特别注意:该策略仅供参考,重试策略仅适用于目前的大部分消息场景,蚂蚁集团会根据负载以及业务规则动态调整策略,请勿依赖此策略做任何业务强依赖。