將收據數據發送到App Store:
提交此JSON對象作爲HTTP POST請求的有效負載。
中文文檔:https://help.apple.com/app-store-connect/#/dev7e89e149d
在測試環境中,https://sandbox.itunes.apple.com/verifyReceipt
用作URL。
在生產中,https://buy.itunes.apple.com/verifyReceipt
用作URL。
key | value |
The base64 encoded receipt data. base64編碼的收據數據。 |
|
password |
Only used for receipts that contain auto-renewable subscriptions. Your app’s shared secret (a hexadecimal string). 僅用於包含自動續訂的收據。應用程序的共享機密(十六進制字符串)。 |
exclude-old-transactions |
Only used for iOS7 style app receipts that contain auto-renewable or non-renewing subscriptions. If value is true, response includes only the latest renewal transaction for any subscriptions. 僅用於包含自動續訂或非續訂訂閱的iOS7樣式的應用收據。如果值爲true,則響應僅包括任何訂閱的最新續訂交易 |
key | meaning |
status | 相應狀態碼 |
receipt | 發送用於驗證的收據的JSON表示形式。有關在收據中找到的密鑰的信息 |
latest_receipt | 僅針對包含自動續訂的收據返回。對於iOS 6樣式的交易收據,這是最新續訂的以64爲基數編碼的收據。對於iOS 7風格的應用收據,這是最新的base-64編碼的應用收據。 |
latest_receipt_info | 僅針對包含自動續訂的收據返回。對於iOS 6樣式的交易收據,這是最新續簽的收據的JSON表示形式。對於iOS 7風格的應用收據,此鍵的值是一個包含所有應用內購買交易的數組。這不包括已被您的應用標記爲已完成的消耗品交易 |
latest_expired_receipt_info |
僅針對iOS 6樣式的交易收據返回,用於自動續訂。過期訂閱的收據的JSON表示形式 |
pending_renewal_info | 僅針對包含自動續訂的iOS 7樣式的應用收據返回。在JSON文件中,此鍵的值是一個數組,其中每個元素都包含由標識的每個自動可續訂訂閱的待處理續訂信息Product Identifier。待定的續訂可能是指將來計劃的續訂,或者是由於某種原因在過去失敗的續訂。 |
is-retryable |
重試對此收據進行驗證。僅適用於狀態碼21100-21199 |
key | meaning |
bundle_id |
捆綁包標識符 |
application_version | 應用程式版本 |
original_application_version | 最初購買的應用程序的版本。 |
receive_creation_date | 應用收據的創建日期。 |
expiration_date | 應用收據到期的日期。 |
product_id | 購買的商品的產品標識符。 |
transaction_id | 購買物品的交易標識符。 |
original_transaction_id | 對於恢復先前交易的交易,原始交易的交易標識符 |
purchase_date | 購買該商品的日期和時間 |
expires_date | 訂閱的到期日期,表示爲格林尼治標準時間1970年1月1日00:00:00以來的毫秒數 |
expiration_intent | 對於過期的訂閱,訂閱到期的原因 |
is_in_billing_retry_period | 對於過期的訂閱,Apple是否仍在嘗試自動續訂 |
is_trial_period | 對於訂閱,無論是否在免費試用期內。 |
is_in_intro_offer_period | 對於自動續訂的訂閱,無論它是否處於促銷價格期間 |
cancel_date | 對於Apple客戶支持取消的交易,取消的時間和日期 |
cancellation_reason | 對於已取消的交易,取消的原因 |
app_item_id | App Store用於唯一標識創建事務的應用程序的字符串 |
version_external_identifier | 唯一標識應用程序修訂版的任意數字。 |
web_order_line_item_id | 標識訂閱購買的主鍵。 |
auto_renew_status | 自動續訂訂閱的當前續訂狀態。
“ 1”-訂閱將在當前訂閱期結束時續訂。 “ 0”-客戶已關閉其訂閱的自動續訂。 |
auto_renew_product_id | 自動續訂訂閱的當前續訂首選項。 |
price_consent_status | 訂閱價格上漲的當前價格同意狀態。 |
狀態碼 | 描述 |
21000 | App Store無法讀取您提供的JSON對象。 |
21002 | receipt-data 屬性中的數據格式錯誤或丟失。 |
21003 | 收據無法認證。 |
21004 | 您提供的共享密碼與您帳戶的文件共享密碼不匹配。 |
21005 | 收據服務器當前不可用。 |
21006 |
該收據有效,但訂閱已過期。當此狀態代碼返回到您的服務器時,收據數據也會被解碼並作爲響應的一部分返回。 僅針對自動續訂的iOS 6樣式交易收據返回。 |
21007 | 該收據來自測試環境,但已發送到生產環境以進行驗證。而是將其發送到測試環境。 |
21008 | 該收據來自生產環境,但是已發送到測試環境以進行驗證。而是將其發送到生產環境。 |
21010 | 此收據無法授權。就像從未進行過購買一樣對待。 |
21100-21199 | 內部數據訪問錯誤。 |
注意:同一個apple 蘋果賬號如果購買過內購訂閱的商品,那麼請求的驗單參數裏必須傳password共享祕鑰,否則會報錯21004;同理沒有訂閱過的蘋果賬號驗單時可不傳password參數,傳了也可以正常驗單,結論:如果開通內購訂閱並創建共享祕鑰那麼默認都傳此參數(沙盒環境下,正式環境暫未測試)
分享幾個文章:https://www.processon.com/special/template/5d283676e4b07917e2dfb447
返回驗單數據結構:https://blog.csdn.net/qq_24909089/article/details/103258594