gpt4 book ai didi

objective-c - 使用 transactionReceipt 生成 JSON 对象

转载 作者:太空狗 更新时间:2023-10-30 03:30:41 25 4
gpt4 key购买 nike

过去几天我一直在尝试测试我的第一个应用内购买 iphone 应用程序。不幸的是,我找不到与 iTunes 服务器对话以验证 transactionReceipt 的方法。

因为这是我第一次尝试使用这项技术,所以我选择直接从 iPhone 验证收据,而不是使用服务器支持。但是在尝试使用来自谷歌代码的 JSON api 创建的 JSON onbject 发送 POST 请求后,itunes 总是返回一个奇怪的响应(而不是我等待的“status = 0”字符串)。

这是我用来验证收据的代码:

- (void)recordTransaction:(SKPaymentTransaction *)transaction {
NSString *receiptStr = [[NSString alloc] initWithData:transaction.transactionReceipt encoding:NSUTF8StringEncoding];
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"algo mas",@"receipt-data",nil];

NSString *jsonString = [jsonDictionary JSONRepresentation];
NSLog(@"string to send: %@",jsonString);

NSLog(@"JSON Created");
urlData = [[NSMutableData data] retain];

//NSURL *sandboxStoreURL = [[NSURL alloc] initWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"will create connection");
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}

也许我忘记了请求 header 中的某些内容,但我认为问题出在我用来创建 JSON 对象的方法中。

这是我将 JSON 对象添加到 HTTPBody 之前的样子:

    string to send: {"receipt-data":"{\n\t\"signature\" = \"AUYMbhY

...........

D0gIjEuMCI7Cn0=\";\n\t\"pod\" = \"100\";\n\t\"signing-status\" = \"0\";\n}"}

我得到的回复:

complete response { exception = "java.lang.IllegalArgumentException: Property list parsing failed while attempting to read unquoted string. No allowable characters were found. At line number: 1, column: 0."; status = 21002; }

非常感谢您的指导。

最佳答案

经过 2 天的努力,我刚刚解决了这个问题。在插入 json 对象之前,您必须使用 Base64 对收据进行编码。像那样( ruby ):

dataForVerification = {"receipt-data" => Base64.encode64(receipt)}.to_json

Base64 没有在官方文档的任何地方提到(至少对于 SDK 3.0),只在几个博客上提到。

例如,here这家伙在将收据传递给 PHP 服务器之前用 Base64 对收据进行编码,但没有用 PHP 对其进行解码,因此将 Base64 编码的字符串发送到 iTunes。

关于objective-c - 使用 transactionReceipt 生成 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com