.net - 在 Apple 的 VerifyReceipt 上继续获取 21002 'java.lang.NullPointerException'

标签 .net ios xamarin.ios in-app-purchase app-store-connect

当我尝试在沙盒中测试我的应用程序内购买时,我不断收到来自 Apple 的 21002“java.lang.NullPointerException”错误。这就是我所做的:

  • 在 iTunes Connect 中设置应用内购买产品。我可以通过 StoreKit 成功检索它们。
  • 在 iTunes Connect 中设置测试用户。
  • 应用程序启动,下载可用的应用内购买产品,我触发应用内购买,Apple 响应 transactionReceipt,我在 iPhone 上对其进行 base64 编码并发送到我的 C#/ASP.NET 服务器。
  • 服务器将接收到的字符串放入 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);
                                          ^^^^

我的头撞到墙上很痛..

关于.net - 在 Apple 的 VerifyReceipt 上继续获取 21002 'java.lang.NullPointerException',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11085847/

相关文章:

.net - WinForms 标签页不重新绘制窗体调整大小

c# - 确定自定义 winforms 控件的设计时上下文

ios - Rect 中的逆 CGPath

iphone - 为什么页面控件点从一页变为下一页

.net - 如何检测 MarshalByRefObject 是本地还是远程?

.net - WPF - 如何从 ListView 中清除选择?

ios - 使用 Firebase 添加和检索 "User"下的多个值

ios - iPAD 上的 iAD 是透明的但可以点击 (Monotouch)

ios - Xamarin iOS 无法 AOT 程序集 Microsoft.EntityFrameworkCore.Migrations.Migration

ios - 如何找出iOS版本