如何在 iOS 中使用测试帐户购买后获取应用收据
How to get app receipt after purchase using test account in iOS
我正在使用 IAP,我想获取收据以便验证它。
我试过了
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState)//Each transaction should be processed by examining transactionState property.
{
case SKPaymentTransactionStatePurchased:
{
if([transaction.payment.productIdentifier isEqualToString:@"TC0001"])
{
}
**NSData *data = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
NSError *error;
NSDictionary *response = [NSJSONSerialization JSONObjectWithData: data options: 0 error: &error]; //I am using sbjson to parse
NSLog(@"%@",response);**
//Finish transaction deletes the transaction from the default queue
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
break;
default:
break;
}
}
}
我希望我做对了,因为这是文档中提到的。但是我得到“响应为空。所以我错过了一些东西。
收据未以纯文本形式存储 JSON。
它实际上是 PKCS7 编码容器的格式,它是一种基于称为 ASN.1 的旧式电信编码格式的二进制格式。
我无法向您指出任何示例,因为没有人分享他们用于解码容器的代码。开发人员不愿意共享他们的代码,因为 Apple 指出,如果许多应用程序共享处理 IAP 的相似代码,那么单个安全漏洞不仅会威胁到一个应用程序,而且会威胁到许多应用程序。
有一个 WWDC 演示:"WWDC 2013: Using Receipts to Protect Your Digital Sales" 他们在其中提供了一些关于如何开始的建议,还有一个文档:"Receipt Validation Programming Guide" 在 Xcode 文档中。
阅读这些内容,然后 Google 了解相关术语,您应该找到足够的点点滴滴来 assemble 解决方案。
我正在使用 IAP,我想获取收据以便验证它。
我试过了
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState)//Each transaction should be processed by examining transactionState property.
{
case SKPaymentTransactionStatePurchased:
{
if([transaction.payment.productIdentifier isEqualToString:@"TC0001"])
{
}
**NSData *data = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
NSError *error;
NSDictionary *response = [NSJSONSerialization JSONObjectWithData: data options: 0 error: &error]; //I am using sbjson to parse
NSLog(@"%@",response);**
//Finish transaction deletes the transaction from the default queue
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
break;
default:
break;
}
}
}
我希望我做对了,因为这是文档中提到的。但是我得到“响应为空。所以我错过了一些东西。
收据未以纯文本形式存储 JSON。
它实际上是 PKCS7 编码容器的格式,它是一种基于称为 ASN.1 的旧式电信编码格式的二进制格式。
我无法向您指出任何示例,因为没有人分享他们用于解码容器的代码。开发人员不愿意共享他们的代码,因为 Apple 指出,如果许多应用程序共享处理 IAP 的相似代码,那么单个安全漏洞不仅会威胁到一个应用程序,而且会威胁到许多应用程序。
有一个 WWDC 演示:"WWDC 2013: Using Receipts to Protect Your Digital Sales" 他们在其中提供了一些关于如何开始的建议,还有一个文档:"Receipt Validation Programming Guide" 在 Xcode 文档中。
阅读这些内容,然后 Google 了解相关术语,您应该找到足够的点点滴滴来 assemble 解决方案。