Tag: 收据

iOS应用内购买的收据string解释

我尝试了解从iTunes服务器获取的收据信息,但找不到相关文档。 尤其是, unique_identifier , unique_vendor_identifier , original_transaction_id (在WWDC'12会话中声称,事实上的客户ID)和[[[UIDevice currentDevice] identifierForVendor] UUIDString]什么[[[UIDevice currentDevice] identifierForVendor] UUIDString] ? {"receipt": {"original_purchase_date_pst":"…", "purchase_date_ms":"…", "unique_identifier":"…", "original_transaction_id":"…", "bvrs":"…", "transaction_id":"…", "quantity":"…", "unique_vendor_identifier":"…", "item_id":"…", "product_id":"…", "purchase_date":"…", "original_purchase_date":"…", "purchase_date_pst":"…", "bid":"…", "original_purchase_date_ms":"…"}, "status":0}` 我希望将此收据信息存储在我的服务器上以跟踪订阅有效期。 所以最好知道我应该使用哪个id作为用户身份的代理。

validationappReceiptStoreURL返回21002状态

我已经创build了一个类来处理In-App Purchase中的购买以及validation收据。 前一段时间,我曾经使用SKPaymentTransaction上的transactionReceipt属性,但已经更新了我的代码,现在在[NSBundle mainBundle]上使用appStoreReceiptURL。 基本上,我的收据似乎是以可接受的方式发送到苹果的服务器,但我一直得到21002的状态代码。在自动更新订阅中,我知道这意味着收据不是可接受的格式,但是我有不知道这个状态对于应用内购买收据是什么意思。 以下是validation收据的本地方法: /** * Validates the receipt. * * @param transaction The transaction triggering the validation of the receipt. */ – (void)validateReceiptForTransaction:(SKPaymentTransaction *)transaction { // get the product for the transaction IAPProduct *product = self.internalProducts[transaction.payment.productIdentifier]; // get the receipt as a base64 encoded string NSData *receiptData = [[NSData alloc] initWithContentsOfURL:[NSBundle mainBundle].appStoreReceiptURL]; […]

iOS 7本地(在设备上)收据validation和应用程序内购买检查

我已经在设备上使用OpenSSL和asn1c编译器在本地实现了接收validation,并且使用了“Apple收据validation编程指南”的帮助。 我的应用程序只支持iOS 7及以上。 正如苹果推荐的,我打电话给[[NSBundle mainBundle] appStoreReceiptURL]来获取app store收据。 在显示任何用户界面之前,应用程序“首次”启动时,我也会这样做。 如果苹果公司build议在第一次尝试的时候不需要刷新收据,则需要首次启动电话。 由于这个调用( SKReceiptRefreshRequest ),应用程序要求用户input他们的iTuneslogin信息。 现在的问题是苹果不断拒绝的应用程序说,我打电话给他们的生产服务器,而不是沙箱服务器。 但根据“收据validation编程指南”中的理解,只有在使用第二种validation方法并通过您自己的安全服务器将数据发送给Apple时,才是有效的。 然而,我在本地做所有事情,对于如何区分生产环境和沙箱环境非常困惑,所以我的应用程序可能会通过审查。 任何指针或build议将是非常有益的。

收据alignment在swift中无法正常工作

我正在打印我的数据收据时,我打印我的收据alignment数据无法正常工作 我认为我应该将开始索引和结束索引应用于string 因为我的产品名称长度不同所以我应用此代码来检查string的长度 这里是Receipt的截图 你可以在收据中看到alignment是错误的 这是我的代码,以alignment和接收 if ProductName.characters.count > 13 {let subStr = ProductName[ProductName.startIndex.advancedBy(0)… ProductName.characters.count(13)] strtext.appendString(String (format: "%@ %@ %@\n", sQuantity,subStr,s)) textData.appendString(strtext as String) } 我的要求是第一个数量,名称和价格应该来我的收据alignment不正确 任何人都可以帮我解决这个问题?

在iOS 7中,由appStoreReceiptURL(NSData)返回无效的事务接收

我使用以下方法获取收据数据: // Use this method instead of accessing transaction.transactionReceipt directly! – (NSData *)appStoreReceiptForPaymentTransaction:(SKPaymentTransaction *)transaction { NSData *receiptData = nil; // This is just a quick/dummy implementation! if (kiOS7) { NSURL *receiptFileURL = [[NSBundle mainBundle] appStoreReceiptURL]; receiptData = [NSData dataWithContentsOfURL:receiptFileURL]; // Returns valid NSData object } else { receiptData = transaction.transactionReceipt; // Returns valid NSData object […]