3

    在iOS6,当我们购买产品时,我们可以从交易中获得收据。然后我们将此收据发送到应用商店并进行验证。如果验证结果为valid(status=0),则返回一个base64-encoded名为的字符串latest_receipt。然后我们可以存储并使用这个新的编码收据下次进行验证。

    一切都很好,直到更改为iOS7. 交易中的收据已被弃用,相反,我们需要使用[[NSBundle MainBundle] appStoreReceiptURL]. 同样,我对这个收据数据进行编码并将其发送到应用商店进行验证。当然,latest_receipt是退回的。然后我尝试再次将其发送latest_receipt到应用商店进行验证,我得到了一个非常奇怪的结果,没有latest_receipt_infoand latest_receipt。最奇怪的是状态为0。

{
"status": 0, 
"environment": "Sandbox", 
"receipt": {
    "receipt_type": "ProductionSandbox", 
    "adam_id": 0, 
    "bundle_id": "com.abcde.myapp", 
    "application_version": "1.0", 
    "download_id": 0, 
    "request_date": "2013-10-02 02:51:45 Etc/GMT", 
    "request_date_ms": "1380682305478", 
    "request_date_pst": "2013-10-01 19:51:45 America/Los_Angeles", 
    "in_app": [ ]
}

相反,如果我总是从应用商店获得收据appStoreReceiptURL并将其发送到应用商店,我可以获得正常的结果。但是当订阅过期时,21006不会返回状态码。这是另一件奇怪的事情。我需要检查所有收据以确认用户的有效性吗?

有人可以知道发生了什么吗?谢谢。

4

0 回答 0