App Store Server Notifications V2配置及退款通知接收咨询
App Store Server Notifications V2 配置解答
V2版本通知响应体
responseBodyV2包含由App Store通过JSON Web Signature(JWS)格式加密签名的signedPayload字段。JWS格式提升了传输安全性,支持服务端直接解码并校验签名合法性。通知内包含的交易、订阅续费信息均由App Store通过JWS格式签名,App Store Server API与StoreKit内购API的交易、订阅状态信息也使用同款JWS签名格式,JWS规范可参考IETF RFC 7515。
私钥与证书相关问题解答
- 仅做通知接收场景,不需要额外生成新的私钥提供给服务端开发人员。只有当你需要主动调用App Store服务端接口做交易查询、退款核验这类主动请求操作时,才需要在App Store Connect后台生成p8格式的API密钥,纯被动收通知不需要这一步。
- 需要提前下载存储Apple官方根证书存在服务端本地,用来校验苹果推送的JWS签名是否合法,避免收到伪造的通知请求。这个证书不需要每次收到通知都重新拉取,本地存储长期使用即可,仅在苹果官方公告更新根证书时同步替换新版本。
- 验签逻辑完全在本地完成:拆分
signedPayload对应的JWS结构为头、载荷、签名三个部分,用本地存储的苹果根证书完成签名校验,校验通过后再解析载荷内容做后续业务处理。
通知获取方式与数据结构解答
- 通知由苹果服务端主动通过POST请求推送到你在App Store Connect中配置的公网HTTPS回调地址,不需要你写逻辑主动轮询拉取。注意回调地址必须满足公网可访问、使用公信CA签发的HTTPS证书两个要求,不支持纯IP地址、自签证书,配置完成后可以直接在后台发送测试通知验证链路是否通畅。
- 你收到的POST请求体最外层就是标准JSON结构,V2版本核心字段为
signedPayload,不会再返回老版本的未签名字段,和你预期的结构一致。 - 收到推送后建议第一时间返回HTTP 200状态码,否则苹果会判定推送失败,在一段时间内重复重试推送。签名校验、payload解析、退款这类业务逻辑可以放到返回200之后异步处理,避免请求超时导致重复推送。
signedPayload验签通过后,对载荷部分做base64解码就能拿到具体的退款事件、订阅状态变更等业务数据,处理逻辑可以直接参考你找到的开源示例代码实现。
内容的提问来源于stack exchange,提问作者LimJee
相关产品推荐
相关产品推荐

