苹果收据_数据样本
我需要实施一个后端,以验证苹果的应用程序内购买 receipt_data ,以进行应用内购买应用程序内点(即不是订阅,而不是需要的项目在每个应用程序启动中都被"记住"并重新验证). 我不精通iOS.我只需要开发后端,以便可以将其与客户端的移动应用程序集成. 我找到了进行验证的教程和示例代码,但是我非常想拥有一个实际的 receip_data 进行测试. 最好的是拥有两个 receipt_data s:一个沙盒和一个生产. 我知道,我需要支持的 receip_data recept_data 有两个变体 - 一个包含单个购买的数据,另一个包含全部购买历史记录.如果是这样,那么为每个样本提供样本会很棒... 我意识到这本身不是一个问题,但是样本收据也对其他开发人员也很有用... 解决方案 这是一种不弃用的交易(单交易)样式收据: ewoJInNpZ25hdHVyZSIgPSAiQW5USlN6UUFqZWhXWW1ucWxvZk9ZVnFyWEo1
2 2024-03-26
编程技术问答社区
服务账户创建后不在Google Play Console中显示
从我的Google Play游戏机中,我链接了一个项目.然后我创建了一个服务帐户.不过,在刷新控制台时,它仍然说"与您的项目没有服务帐户." 已经等待了24小时.所有收据验证的目的. 图片1:一个链接的项目: 图片2:创建的服务元: 解决方案 我有同样的问题,我以这种方式修复了它: 在步骤2中创建服务帐户时,您需要选择一个角色来授予此服务帐户一些权限,尽管它显示了该步骤是可选的,但是在某些情况下不是.如果跳过此步骤,新创建的服务帐户将不会在Google Play Console API访问页面上显示,并且运行代码时,您将收到此错误消息. . 其他解决方案 您必须启用" Google Play Android Developer API"(Google API&Services之一),以便您的应用程序通过凭据使用它 Google提供了许多用于开发人员的API,可以从他们的应用程序中调用它们. 访问其他解决方案 在我的情况下: 即使您创建了一个服务帐户
减少OpenSSL二进制文件的大小?
我正在使用我遇到的问题是libcrypto.a(45.3MB)和libssl.a(8.3MB)非常大,并且在我的应用程序的二进制文件中增加了很多. 我在rmstoreappreciptverifier中使用的类仅使用: #import #import #import #import 我有什么可以减少openssl的大小吗?还是另一个版本更好? 解决方案 您是否尝试使用此 . Openssl-宇宙吊舱.我们将其用于存储验证.从我检查的框架大小约为11 MB.
14 2023-12-19
编程技术问答社区
自动续订错误的时间响应沙盒模式
我目前正在尝试进行本地收据验证并进行测试. 但是从苹果收据的响应来看,我得到了错误的时间响应,因此目前我很难测试申请. 这是日志信息: 这是我用于收据验证的源代码: public void CheckIfSubscriptionIsActive(bool validateReceipt) { ConfigurationBuilder builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); IAppleConfiguration appleConfig = builder.Configure(); bool isSubscriptionRunning = false; if (!string.IsNullOrEmpty(appleConfig.appReceipt)) {
6 2023-11-08
编程技术问答社区
如何确定该应用程序(非应用内购买)的原始构建或购买日期
我的应用程序当前是一个付费应用程序.我想免费将应用程序与IAP和祖父免费转换为免费的应用程序(为所有付款的应用程序提供)IAP功能免费.我认为我可以使用收据验证来(1)确定应用程序的原始购买日期 - 但这似乎仅适用于IAP或(2)使用原始应用程序版本(似乎是构建版本而不是应用程序版本).但是,当我在Testflight中测试此内容时,原始版本号始终为" 1.0".各种消息来源都说这是一个测试飞行问题,并且发布应用程序将在购买应用程序的日期正确识别构建. https://forums.develoveler.apple.apple.com/message.com/message/42107#42107 我还没有在Stackoverflow上看到此问题 - 有关查找应用购买日期的许多问题是在iOS 7中的收到验证之前或应用于应用内购买的,而不是初次购买应用程序 我有3个相关问题,可以查看我是否沿着正确的轨道前进: 问题1:我可以使用原始应用程序版本来识别在我的应用程序转换之前购买的用
18 2023-10-17
编程技术问答社区
在Swift 3中实现收据验证
我正在Swift 3中开发一个iOS应用程序,并在本教程之后尝试实现收据验证: http://savvyapps.com/blog/how-setup-test-auto-renewable-subscription-ios-app .但是,该教程似乎是使用较早版本的Swift编写的,因此我不得不进行几个更改.这是我的收据()函数: func receiptValidation() { let receiptPath = Bundle.main.appStoreReceiptURL?.path if FileManager.default.fileExists(atPath: receiptPath!){ var receiptData:NSData? do{ receiptData = try NSData(contentsOf: Bundle.main.appStoreReceiptURL!, option
14 2023-10-10
编程技术问答社区
如何将openssl添加到swift项目中?
我正在学习如何在iOS/OSX项目中添加应用内购买收据验证. 有一个不错的概述在这里和WWDC14在此主题上有很好的视频. 大量示例代码,但每个人都跳过一步.如何导入OpenSSL标头. Swift编译器抱怨没有这样的模块. import Foundation import StoreKit import openssl //no such module ??? 我在编写一行代码之前已经被卡住了. OpenSSL框架隐藏在哪里? 解决方案 没有内置的openssl模块. 看一下: https://gist.github.com/foozmeat/5154962 http://cocoapopods.orgs.org/? 您绝不应该使用其他人提供的静态模块.始终建立自己的. 在此处进行官方解释 - 在OpenSSL下 -
26 2023-10-07
编程技术问答社区
如何在iOS 11中从iOS Receipt中获取原始_应用_版本(首次购买的版本号)?
我有一个付费的iOS应用. 我需要从Apple AppStore收据中获取original_application_version号码(用户购买的第一个版本). 要获取收据,当我的应用程序加载时,我使用checkReceiptFromAppStore()函数: func checkReceiptFromAppStore() { let receipt = self.getReceipt() print("receipt Data is: \(receipt)") // prints this: receipt Data is: Optional(5141 bytes) } getReceipt()功能如下: func getReceipt() -> Data? { if Bundle.main.appStoreReceiptURL != nil { print("app receipt: \(Bundle.
104 2023-10-07
编程技术问答社区
refreshReceipt是否要求提供AppStore凭证?
我一直在样本应用中的iOS购买应用程序中测试.我需要弄清楚是否可以在发布会上立即致电refreshReceipt API,以检查用户的某些试用期订阅等的资格. 我在AppDelegate的application:didFinishLaunching:options方法中打了refreshReceipt,但它要求我提供AppStore凭据,基本上是Sandbox用户的密码.我没想到Apple Docs阅读的这种行为.是由于沙箱环境而发生的事情还是在生产环境中发生的. 另外,do Restore Purchase触发AppStore登录警报. Apple Docs说,但是最近我在手机上看到了其中一个音乐应用程序,当我选择该选项时没有要求证书.他们可能没有使用自己的机制来调用Storekit的RestoreRorePurchase API. 解决方案 每当设备上不存在收据时,您都会收到登录提示.在沙箱中,没有安装收据,因此您总是会看到弹出窗口.您还应该注意,除非您购买了沙子
14 2023-09-30
编程技术问答社区
获取用户安装的原始应用版本有问题(收据验证)?
我有一个最近更新的应用程序,可以在应用程序购买中使用.以前的版本(付款但没有应用程序购买)为1.0,当前版本为1.1. 作为在应用中购买本质上是解锁所有功能(付费版本1.0),我想要一种方法,如果他们按下我的Restore购买按钮,则最初下载1.0版的用户可以升级. 为此,我首先尝试恢复购买以及对: 的响应. - (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 如果这为我提供了一个队列,其交易数为0,我检查收据以查看安装的原始版本是否为1.0. 获得收据的代码是根据Apple的文档 - (void)tryRestoreFromOriginalPurchase { // Load the receipt from the app bundle NSError *error; NSData *receipt = [NSData
16 2023-09-30
编程技术问答社区
检测用户是否退还了'消耗品'应用内购买项目(苹果应用商店应用内购买系统)。
我到目前为止在线阅读,检测用户是否取消应用程序购买的唯一方法是使用我从用户iPhone中获得的收据数据,并检查该项目中是否存在Cancellation_date,但到目前为止众所周知,此字段仅在自动可再生订阅项目中找到. (至少我在我发现的每篇帖子中都在线阅读了应用程序中谈论的内容,根本没有提及消耗品.) 因为它们始终存储在收据数据中,而消耗品则存储在收据数据中,直到应用程序本身完成交易,一旦完成,该项目的购买交易将永远从收据数据中永远消失.在iPhone上完成过程. 因此,我的问题是,如果用户要求从Apple取消应用程序中的应用程序,这是一个消耗品,我是否还可以在收据数据中带有相同的项目交易,其中包含concellation_date字段? 我从未见过有人确认这一点. 如果有人可以在其中提供concellation_date示例的Receipt-data base64字符串(如果是合法的). . 解决方案 Storekit/in-app_purc
22 2023-09-30
编程技术问答社区
IOS收据验证错误 21002
我正在尝试将收据验证与服务器端一起使用.一切都可以,但是有时候我会看到奇怪的是:10次验证还可以,但是在11中,我遇到了21002错误.我不知道该怎么办.有时,当我在启动应用程序后首次验证收据时,我会遇到错误21002. 应用程序: func validateReceipt(productID: String) { let receipt = NSData(contentsOfURL: NSBundle.mainBundle().appStoreReceiptURL!)! let receiptdata = receipt.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) let request = NSMutableURLRequest(URL: NSURL(string: "my_server_url")!) let session =
24 2023-05-27
编程技术问答社区
苹果应用程序内购买的交易代码有时会改变
我从客户端获得收据并通过Apple Server验证它,然后在此收据中获得了新购买的事务ID(这是自动订阅购买).几天后,我从获得了同一客户并验证它的新收据,奇怪的事情发生了:旧购买的交易ID 更改. 我将旧收据中此购买的数据与新收据中的数据进行比较,唯一的变化是Transaction_ID字段,Original_transaction_id,paskure_date,expires_date, web_order_order_order_line_item_id 完全一样. 比我检查数据库,我发现大约1%的交易记录具有相同的情况.而且有一个特征,他们的大多数交易ID 增加或减少了1-2 . . 我曾经认为交易ID是购买的标识符.有人遇到同样的问题还是知道原因? 解决方案 是的,我们也看到了这种情况.我们看到这是由"还原购买"按钮点击触发的. 如果您的"恢复购买"按钮使用然后,这将导致您的交易ID更改.我们已经确认了Apple开发人员的支持. 显然您可
14 2023-05-22
编程技术问答社区
Apple receipt-original_purchase_日期早于应用程序创建日期
我对此有些困惑.因此,遵循一堆解密的田地.其中包括原始_purchase_date. 我需要跟踪是否在此新版本免费之前购买了应用程序,我认为我需要为此使用此字段.但是由于某种原因在沙盒环境上显示日期 " Original_purchase_date" =" 2013-08-01 07:00:00 etc/gmt"; 在申请之前已经几年了. 所以现在我不确定 为什么它显示该日期. 是原始_purchase_date确实需要跟踪的字段. 解决方案 原始购买日期始终为" 2013-08-01 07:00:00 etc/gmt",用于沙盒环境. 您可以使用原始购买日期来满足您的需要,但我建议使用原始应用程序版本字段.因此,使用日期要容易得多. 其他解决方案 因为您在沙盒环境中. 是的,您应该使用Original_purchase_date!因为Original_application_version完全错误 - 它包含一个构建号,而不是
16 2023-05-05
编程技术问答社区
iOS 7本地(设备上)收据验证和应用内购买检查
我在Apple的收据验证编程指南的帮助下,使用OpenSSL和ASN1C编译器在设备上本地实施了收据验证.我的应用仅支持iOS 7及以上. 根据Apple的建议,我致电[[NSBundle mainBundle] appStoreReceiptURL]获取App Store收据.当应用程序在显示任何UI之前"首先"启动时,我也要这样做.需要第一次启动呼叫,因为Apple建议收据首次尝试时刷新收据.由于此调用(SKReceiptRefreshRequest),应用程序要求用户输入其iTunes登录信息. 现在的问题是,苹果公司一直在拒绝该应用程序,说我正在向其生产服务器而不是沙盒服务器拨打电话.但是,根据我从收据验证编程指南中了解的内容,只有在使用第二种验证方法并通过自己的安全服务器将数据发送给Apple时,才有效.但是,我在本地做所有事情,并且对如何区分生产和沙盒环境感到非常困惑,以便我的应用程序可以通过评论. 任何指针或建议都会非常有帮助. 好的 应用程序启动时不
32 2023-05-05
编程技术问答社区
iOS应用内购买验证消耗品的收据
在iOS中进行应用内购买,有必要验证使用订阅的收据.是否有必要验证消耗品的收据? 解决方案 不,您不需要验证消耗品的收据. 您也不需要验证订阅的收据.这里重要的是您可以还原运行订阅;但是为此,您可以使用购买ID. 一如既往地使100%确定您已向用户付款,然后告诉iOS购买成功! (您想在服务器上保留相关信息的其他各种考虑,但这不是您所问的.) 其他解决方案 必要,否.推荐,是的. 所有购买;消耗品,无偿物品和订阅容易受到欺诈性攻击.通常是IAP饼干或网络欺骗.验证收据可以减轻此问题. You can validate the receipt locally in the app (see 在本地验证收据),尽管它仍然容易受到破解. 防止欺诈的最安全方法是通过将收据发送到您的服务器,然后将其发送到Apple(请参阅 valling noroflow noreferrer">使用应用程序商店进行验证的收据). ). ). 但是,请
46 2022-12-06
编程技术问答社区
iOS-如何延迟显示 "购买成功 "的信息,以等待验证收据完成。
我已经搜索过,找不到任何方法来创建显示消息的延迟:"您的购买成功"等到验证收据完成. 我试图引用该行SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction),但消息仍然发射. func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { print("Received Payment Transaction Response from Apple"); for transaction:AnyObject in transactions { if let trans:SKPaymentTransaction = transaction as? SKPaymentTran
44 2022-12-06
编程技术问答社区
iOS测试应用程序的收据验证
使用Sandbox Tester帐户来测试应用内购买收据验证的有很多示例. 但是付费应用程序本身的收据如何?我们如何在开发环境中获取应用程序收据? 我想做两件事: 防止未购买应用程序的用户运行的我们的应用程序的非法副本. 正如我看到的那样,检测到Itune帐户已连接的应用程序没有拥有该应用程序(它向用户显示了他们不拥有该应用的用户,但他们没有阻止用户继续使用该应用程序) 将应用收据发送到我们的服务器.我们想知道他们什么时候购买我们的应用程序,他们带来了什么版本的应用程序. 解决方案 可以找到答案的大多数部分/uid/tp40010573-CH104-SW1" rel =" noreferrer">在苹果文档中.但是存在差距,而Objective-C代码正在使用折衷的方法. 此Swift 3代码显示了如何获取应用程序收据并将其发送到应用程序商店进行验证.在保存所需的数据之前,您绝对应该使用App Store验证应用程序收据.要求App Store验证的
20 2022-12-03
编程技术问答社区
iOS。在将付费的iOS应用转换为免费的应用内购买时跟踪付费用户
我们当前在AppStore中有付费的iOS应用程序.我们计划将其转换为使用应用内购买的免费申请.我们希望向已经在上一版本中付款的用户免费购买应用程序内购买.我认为这可以通过应用收据验证来完成.但是,一旦申请从付款转换为免费,收据会更新,购买详细信息会丢失吗? 解决方案 如果您将应用程序从付款中转换为免费,您仍然可以检查收据,并查看最初下载的版本并相应地采取行动. 当我们在一个标题中进行此操作时,我们实现了一个三层系统: 我们碰到了保存文件的版本.每当我们从版本 我们有一个"还原IAP"按钮.无论如何,如果您有任何不足的IAP,则需要在iOS上,但是我们还添加了App Store收据的检查,该收据使您可以发现用户是否最初为游戏付款.这是教程我们基于我们的代码,选择了简单的方法,但是您可能需要权衡盗版问题. 我们的报销系统还检查了我们托管的文件,该文件可以给出额外的硬币/Doubleer Unlocks/AD删除剂.如果收据检查失败(我们支持Pre-ios 7
34 2022-11-25
编程技术问答社区
我可以在macOS应用商店的应用程序之间迁移购买吗?
我有几个相似的应用程序 (A1-A3) 具有非常相同的代码库.他们都做类似的事情(图表),每一个都有针对特定用例的专业化.我现在正在考虑创建一个应用程序 (B),将专业化作为 Mac App Store In App Purchase 进行销售.所以基本上,我减少了应用程序的数量,但会提供相同的图表,只是将它们从专用应用程序销售到应用程序内. 我怎样才能最好地确保“旧"应用程序 A1-A3 的购买者可以使用他们在新软件 B 中购买的专业化?我不想向他们收取两次费用.所以,他们应该能够“恢复"他们在 B 中作为 A2 购买的专精.这可能吗?如果有,怎么做? 解决方案 在应用 B 中,在后台执行以下步骤或点击恢复 IAP 按钮: 使用 NSBundle bundleWithIdentifier 查找“旧"应用 A1-A3使用 appStoreReceiptURL 获取此捆绑包的收据验证收据 解锁功能 请记住,Apple 的条款和条件中提到了“仅应使用应用商店
160 2022-08-11
编程技术问答社区