Apple Receipt Verifier返回JsonException

时间:2013-08-29 08:39:34

标签: c# asp.net ios objective-c in-app-purchase

在我的购买验证流程中有三个缔约方

  1. iOS客户端
  2. ASP.NET服务器(用于验证的中介)
  3. Apple Server
  4. iOS客户端与通信方式之间的通信方式中的JSON-RCP ASP.NET服务器

    验证过程是;通过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>";
    }
    

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

    怎么做???

2 个答案:

答案 0 :(得分: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
}

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

答案 1 :(得分:1)

当Apple提供验证环境时,不确定您使用第三方库进行验证的原因。

在这里你可以直接发布JSON&amp;获得适当的错误代码响应。 Apple也很好地记录了In-App Purchase Programming Guide

中的每个错误

FYI使用https://sandbox.itunes.apple.com/verifyReceipt验证沙箱环境中的收据。

有关详细信息,请参阅StoreKIt verification error: 21002