配置Django应用接收Apple App Store退款通知(refundNotification)及测试方法
问题1:服务器ATS协议配置相关疑问
- ATS是苹果官方要求的网络传输安全规范,必须使用HTTPS协议,不接受HTTP格式的回调地址。
- 服务器配置按你用的服务类型选择对应方案即可,核心要求是TLS版本不低于1.2、使用受信任CA颁发的SSL证书、采用苹果认可的加密套件:
- Nginx配置:在对应站点的server配置块中添加以下内容
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; - Apache配置:在ssl.conf或对应虚拟主机的配置文件中添加以下内容
SSLProtocol TLSv1.2 TLSv1.3 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 SSLHonorCipherOrder off
- Nginx配置:在对应站点的server配置块中添加以下内容
- 不需要在Django settings的中间件中配置NSAppTransportSecurity参数,该参数是iOS客户端的Info.plist专属配置项,和服务端逻辑无关,你只需要确保Django接口可以正常处理POST请求、解析Apple返回的JWS格式通知即可。
问题2:无需上架版本验证退款通知接收的方法
- 方案1:使用沙箱环境触发真实退款通知。你可以用沙箱测试账号完成测试购买后提交沙箱退款申请,退款流程完成后苹果会直接向你在App Store Connect中配置的回调地址发送REFUND通知,不需要等待正式版本上架。
- 方案2:本地构造模拟请求验证接口逻辑。你可以使用苹果公开的沙箱测试JWS样例,构造POST请求发送到你的测试环境接口,验证解析、业务处理逻辑是否正常,参考请求如下:
curl -X POST https://你的测试接口地址 \ -H "Content-Type: application/json" \ -d '{"signedPayload":"替换为沙箱测试JWS字符串"}' - 方案3:调用App Store Server API的测试通知接口。你可以调用
Request a Test Notification接口,苹果会向你配置的回调地址发送测试通知,你可以通过返回的testNotificationToken查询发送状态,同时在Django服务日志中确认是否正常接收到请求即可。
内容的提问来源于stack exchange,提问作者Othman El-Kurdi
相关产品推荐
相关产品推荐

