继续在Apple的VerifyReceipt上得到21002'java.lang.NullPointerException'

当我尝试在沙箱中testing我的应用程序内购买时,我一直在从Apple获取21002'java.lang.NullPointerException'错误。 这是我所做的:

  • 在iTunes Connect中设置应用内购买产品。 我可以通过StoreKit成功检索它们。
  • 在iTunes Connect中设置testing用户。
  • 应用程序启动,下载可用的应用程序内购买产品,我触发应用程序内购买,苹果响应与transactionReceipt,我base64编码在iPhone上,并发送到我的C#/ ASP.NET服务器。
  • 服务器把收到的string放入JSON(我用NewtonSoft.Json和手动的方法试了一下),然后把JSON发送给Apple:

var json = "{ 'receipt-data': '" + receipt + "'}";

要么:

var json = new JObject(new JProperty("receipt-data", receipt)).ToString();

接着:

 var webRequest = System.Net.HttpWebRequest.Create("https://sandbox.itunes.apple.com/verifyReceipt"); webRequest.ContentType = "text/plain"; webRequest.Method = "POST"; byte[] byteArray = Encoding.UTF8.GetBytes(receipt); webRequest.ContentLength = byteArray.Length; using (var stream = webRequest.GetRequestStream()) { stream.Write(byteArray, 0, byteArray.Length); stream.Flush(); } var resp = webRequest.GetResponse(); if (resp != null) { using (var sr = new System.IO.StreamReader(resp.GetResponseStream())) { var result = sr.ReadToEnd().Trim(); var iapResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<AppleIapResponse>(result); // always getting '21002' 'java.lang.NullPointerException' } } 

我尝试了一切:更改ContentType,JSON格式,编码….

任何提示?

这是代码中的一个简单的错误,我把收据写入POST,而不是JSON:

 byte[] byteArray = Encoding.UTF8.GetBytes(json); ^^^^ 

我的头撞在墙上,墙很痛