4

在我的购买验证过程中,三方

  1. iOS 客户端
  2. ASP.NET 服务器(验证中介)
  3. 苹果服务器

iOS Client & ASP.NET Server 通信方式中的 JSON-RCP

验证过程是;通过 Web 服务将付款收据发送到 ASP.NET 服务器(服务器使用AppleReceiptVerifier验证收据)

我有 5 个用于付款的产品标识符,其中 2 个运行良好并返回预期的响应,但其他三个像这样返回 JsonException

{
    error =     {
        errors =         (
                        {
                message = "Found String where Object was expected.";
                name = JsonException;
            }
        );
        message = "Found String where Object was expected.";
        name = JSONRPCError;
    };
    id = "<null>";
}

和这个

{
    error =     {
        errors =         (
                        {
                message = "Missing value.";
                name = JsonException;
            }
        );
        message = "Missing value.";
        name = JSONRPCError;
    };
    id = "<null>";
}

所有产品标识符都是同一类型,只是价格不同,我不知道为什么会出现这个问题???

该怎么办 ???

4

2 回答 2

2

在阅读了json-rpc的规范后,似乎 params 是一个数组,试试这个:

{
  "method":"sendReceipt",
  "params" :[
    {
      "ReceiptData":"ewoJInNpZ25hdHVyZSIgPSAiQXJ....‌.",
      "PersonID":"sam@am.com"
    }
  ],
  "id":"1"
}

或这个:

{
  "method":"sendReceipt",
  "params" :[
    "ewoJInNpZ25hdHVyZSIgPSAiQXJ....‌.",
    "sam@am.com"
  ],
  "id":"1"
}

jsonrpc 2.0 版:

{
    "jsonrpc": "2.0", 
    "method": "sendReceipt", 
    "params": 
     {
      "ReceiptData":"ewoJInNpZ25hdHVyZSIgPSAiQXJ....‌.",
      "PersonID":"sam@am.com"
     }, 
     "id": 1
}

它们都应该根据您的需要工作。

于 2013-09-04T06:15:40.430 回答
1

当Apple提供验证环境时,不确定您为什么要使用第三方库进行验证。

在这里,您可以直接发布 JSON 并使用正确的错误代码获取响应。Apple 还在其In-App Purchase Programming Guide中详细记录了每个错误

仅供参考,使用https://sandbox.itunes.apple.com/verifyReceipt在沙盒环境中验证收据。

有关详细信息,请参阅StoreKIt 验证错误:21002

于 2013-09-06T13:10:09.043 回答