旧版苹果退款通知
1、前言
今年 WWDC 2020 蘋果全球開發者大會,蘋果宣布所有的內購品項類型,當用戶退款成功時,開發者都能收到退款通知!!!退款通知!!!退款通知!!!
針對 App 內購買項目的退款通知現已可用
2020 年 06 月 24 日 App Store 服務器通知現在包含所有類型的 App 內購買項目的退款通知 (包括消耗型項目、非消耗型項目和非續期訂閱)。這些信息能幫助您采取相應的行動,并告知他們相關的優惠更改,以及如何重新訂閱。
針對 App 內購買項目的退款通知現已可用 - 新聞 - Apple Developer
2、處理退款
2.1 退款流程
在 2020 年 06 月 24 日之前,開發者完全不知道有用戶退款了!(只有每月賬單里看到退款的一個總數量 -。-):
2020 年 06 月 24 日開始,蘋果新增流程:
2.2 退款通知
在蘋果后臺可以配置一個退款通知的回調地址(一個App配置一條鏈接):
配置的回調鏈接必須滿足條件:
- 滿足應用傳輸安全要求(使用?https)
- URL 最長 255 字符
注意:這里的?https?是指蘋果的 App Transport Security (ATS),其中有協議的要求,比如使用 Transport Layer Security (TLS) protocol 1.2 版本,具體見蘋果文檔:?Preventing Insecure Network Connections | Apple Developer Documentation。
2.3 退款通知的類型
蘋果把回調的通知分為2種類型:
- 退款通知類型
- 取消通知類型
其中新增加的退款通知類型是針對:
- 消耗型
- 非消耗型
- 非續期訂閱
取消通知類型是針對:
- 自動續期訂閱
2.4 退款通知的內容
蘋果返回的通知內容為 JSON 對象數據,所有的退款訂單的通知是在?unified_receipt?里的?latest_receipt_info?數組中:
| environment | 收據生成的環境。values:?Sandbox,?PROD。自動續訂訂閱是可以沙盒環境測試取消訂閱。 |
| latest_receipt | Base64編碼的最新交易收據。 |
| latest_receipt_info | 收據的列表 |
| notification_type | 通知類型,退款的值應該是:REFUND, 可參考:notification_type |
| password | 驗證收據時的 password,App 專用共享密鑰是用于接收此 App 自動續訂訂閱收據的唯一代碼。如果您需要將此 App 轉讓給其他開發者,或者需要將主共享密鑰設置為專用,可能需要使用 App 專用共享密鑰。 |
| bid | App的 bundle id(包名) |
| bvrs | App的版本號 |
| unified_receipt | 退款的訂單信息在這里 |
在?unified_receipt?里的?latest_receipt_info?是一個數組,其中包含的最近的100次應用內購買交易:
數據中每個退款訂單的主要字段:
| original_transaction_id | 蘋果訂單的唯一標識 transaction_id |
| cancellation_data_ms | 退款的時間 |
| cancellation_reason | 用戶退款的原因。(0或1,含義未知) |
| bid | 應用包名 bundle id |
| product_id | 商品唯一標識 id |
詳細的返回字段見官方文檔:
- responseBody | Apple Developer Documentation
- unified_receipt | Apple Developer Documentation
- responseBody.Latest_receipt_info | Apple Developer Documentation
2.5 退款通知的響應
您的服務器應發送HTTP狀態代碼,以指示服務器到服務器的通知接收是否成功:
- 如果回調接收成功,則發送 HTTP?200。您的服務器不需要返回數據。
- 如果回調接收不成功,請發送 HTTP?50x?或?40x?讓 App Store 重試該通知。App Store在一段時間內嘗試重試該通知,但在連續失敗嘗試后最終停止(3次)。
注意事項:
- 當您使用包含退款交易的收據?transaction_data?向蘋果服務器校驗?verifyReceipt?時,JSON響應中不存在退款交易,自動續訂訂閱除外。
- 收到?REFUND?通知時,您有責任為每筆退款交易存儲,監控并采取適當的措施。(因為蘋果只通知一次,暫時無法在蘋果后臺查詢退款的訂單。也不能由開發者主動去蘋果服務器查詢。)
2.6 自動續訂訂閱通知
這個取消通知之前就一直有,所以這里不重復了,需要的自行搜索。
自動續訂訂閱的相關文檔:
- Handling Subscriptions Billing | Apple Developer Documentation
- In-App Purchases and Using Server-to-Server Notifications - WWDC 2019 - Videos - Apple Developer
- Subscription Offers Best Practices - WWDC 2019 - Videos - Apple Developer
總結
- 上一篇: 学习 Java 的历程和体会『写给新手看
- 下一篇: python 战舰_Python战舰:获