生产服务器无法接收App Store内购退款通知问题排查请求
排查生产环境App Store通知接收失败的步骤
1. 验证生产环境JWT配置
- 确认生产环境使用生产环境专用密钥,密钥ID、Issuer ID需与App Store Connect生产配置完全匹配,不可混用沙箱密钥
- 检查JWT签名算法必须为
ES256,App Store仅支持该算法 - 验证JWT有效期,建议设置在6个月以内,到期前及时重新生成
- 用本地JWT解码工具(如
jwt-cli)解析生产环境JWT,确认aud字段为appstoreconnect-v1,iss为你的Issuer ID,exp过期时间合理
2. 检查生产环境通知URL配置
- 确认生产环境URL为公网可访问地址,沙箱环境可用内网但生产环境必须具备公网访问能力
- 模拟App Store请求测试URL可用性:用curl发送POST请求,确保服务器返回
200 OK(App Store要求接收通知后必须返回200,否则会持续重试)curl -X POST https://your-production-url.com/apple-notifications \ -H "Content-Type: application/json" \ -d '{"notificationType":"REFUND","data":{"environment":"PRODUCTION"}}' - 确认URL无重定向逻辑,App Store不跟随重定向,需直接返回响应
3. 排查服务器网络与防火墙
- 检查服务器防火墙/安全组是否放行Apple生产环境通知的IP段
- 查看服务器日志,确认是否有来自Apple的请求被拦截,或请求到达后出现解析错误、权限异常等日志
- 排查WAF规则是否过于严格,导致Apple的请求被误拦截(比如请求头检查规则)
4. 退款通知专项排查
- 退款通知存在延迟性,Apple处理退款后可能需要数小时才会发送通知,确认等待时间充足
- 检查App Store Connect生产环境的通知类型开关,确保
REFUND类型已开启(沙箱与生产的通知开关相互独立) - 确认测试用的退款为生产环境真实订单,沙箱环境退款不会触发生产通知,必须使用上线后的真实购买订单
5. 完善通知接收日志
- 在服务器端添加详细日志,记录所有Apple通知请求的请求头、请求体、返回状态码,便于排查请求是否到达及处理环节是否出错
- 确认服务器正确处理
SignedPayload:需先验证签名再解析内容,生产环境签名验证需使用生产环境根证书
内容的提问来源于stack exchange,提问作者SYED M ABDUL REHMAN
相关产品推荐
相关产品推荐

