问题标签 [receipt-validation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
608 浏览

objective-c - App Store收据验证:如何检查整个付费应用是否已退款(不是应用内购买)?

假设一位客户在 Mac App Store 购买了我的付费应用程序,然后向 Apple 询问并获得了退款。Apple 是否会以某种方式使收据无效以使该应用程序无法再使用?如果是这样,收据中是否有某种标志表明已退款,我应该在收据验证期间进行测试?

我找到了cancellation_date字段(Apple Technical Note),但它似乎只适用于订阅或应用内购买。退还整个付费应用程序怎么样,可以检查吗?

似乎答案曾经是“不,Apple 不会使退款的 Mac 应用程序收据无效,用户可以继续使用该应用程序”,我想知道这是否最近发生了变化。

0 投票
0 回答
923 浏览

ios - 如何在 iOS 中使用 RMStore 获取自动续订订阅通知

在我的 iOS 应用程序中,我使用了自动续订订阅。我们需要一个跨平台的解决方案。我在 iOS 中使用RMStore来购买产品。

在当前情况下:我从didFinishLaunchingWithOptionsAppStore 获取最新收据并对其进行验证,而RMStoreAppReceiptVerifier不是服务器的更新到期日期。我们一直从两个平台(iOS 和 Android)更新到服务器数据。在 iOS 方面,我们必须在应用程序启动时始终检查收据。当我在续订付款时收到推送通知?如果可以的话,那我们当时已经更新了服务器数据

Q-1)如何检查我的新续订流程是否已完成?

Q-2)如果用户从 iTunes 取消了他们的自动续订订阅,如何通知我以便我可以更新我的数据库?我是否需要一个守护程序来检查过期订阅以查看用户是否续订?

Q-3)在 iOS 中。如果我从另一台设备登录,那么我如何验证从另一台设备收到的信息?

请建议我如何使用服务器数据库处理跨平台的自动续订订阅。我希望有人能帮助我。谢谢!

0 投票
2 回答
2239 浏览

ios - 为什么 iOS 上的 Apple AppStore 应用内收据为空?

在应用程序中,我需要实现自动更新订阅购买。据我了解文档,我应该在应用启动时检查 AppStore 收据,然后使用我的服务器验证该收据。在我的代码中,我执行以下操作来检索收据:

有时receipt是零。例如:

  • 我已经启动了一个应用程序并进行了购买。之后,上面的代码返回非空receipt
  • 应用程序被 Xcode 停止。
  • 在下一个应用程序启动时receipt为零。

我不明白,为什么会这样。receiptURL指向带有收据的文件,但[NSData dataWithContentsOfURL:receiptURL]返回 nil。

如果我请求刷新收据,则应用程序会显示用于输入 iTunes 凭据的对话框。这不好,因为此对话框将在应用启动时出现,这是意外行为。

难道我做错了什么?或者这可能是特定于沙盒的案例?

0 投票
2 回答
721 浏览

objective-c - 使用未解析的标识符“PKCS7_type_is_signed”

我正在快速编写收据验证代码,但是 PKCS7_type_is_signed 宏有问题:使用未解析的标识符 'PKCS7_type_is_signed'

除了为此宏创建 Objective-C 包装器之外,还有什么方法可以在 Swift 中使用它?

包装器看起来像这样:

0 投票
2 回答
1259 浏览

ios - 收据验证 - 应用删除后是否保留收据?

在通过应用商店验证收据的过程中,从捆绑包中提取收据数据。如果用户购买,删除应用程序,然后重新安装,收据是否还在捆绑包中?不知道会怎样。

0 投票
0 回答
225 浏览

ios - 如何从收据中读取不透明的值?

我有一个使用自动更新订阅的应用程序。我使用 SKMutablePayment 的 applicationUsername 属性来保存一些信息。我以后如何从收据中的不透明值中读取这些数据?

我尝试与此解决方案类似: https ://www.objc.io/issues/17-security/receipt-validation/

但是当我尝试解码不透明值时

我的str变量是空的。

0 投票
2 回答
1319 浏览

ios8 - 应用购买验证中的消耗品

我们最近推出了只有消耗品应用内购买的应用。我们注意到很多虚假购买 - 购买带有无效收据和“有效”收据,但来自苹果的验证响应中的“in_app”数组是空数组。我需要知道用户如何形成这样的“有效”收据?是收到应用下载而不是应用内购买还是什么?我现在将以下检查用于验证。从 Apple 的 json 响应中提取“in_app”字段,如果它非空,则检查 product_id 是否匹配。我需要知道这张支票是否足够,或者他们是一个更好的万无一失的支票。

0 投票
1 回答
1494 浏览

ios - iOS - 如何延迟显示消息“购买成功”以等待验证收据完成

我已经搜索并找不到任何方法来延迟显示消息:“您的购买成功”以等待验证收据完成。

我试图引用该行SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction),但该消息仍然触发。

0 投票
1 回答
831 浏览

ios - 如何确定购买该应用(不是应用内购买)的原始版本或日期

我的应用目前是付费应用。我想将该应用程序转换为具有 IAP 和祖父(为所有为该应用程序付费的用户)免费提供 IAP 功能的免费应用程序。我想我可以使用收据验证来(1)确定应用程序的原始购买日期 - 但这似乎仅适用于 IAP 或(2)使用原始应用程序版本(这似乎是构建版本而不是应用程序版本)。但是,当我在 testflight 中对此进行测试时,原始版本号始终为“1.0”。各种消息来源称这是一个测试飞行问题,发布应用程序将在应用程序购买之日正确识别构建。https://forums.developer.apple.com/message/42107#42107 我没有在 stackoverflow 上看到这个问题 - 许多关于查找应用购买日期的问题是在 iOS 7 中的收据验证之前或适用于应用内购买,而不是应用的初始购买

我有 3 个相关问题,看看我是否走在正确的轨道上:
问题 1:我可以使用原始应用程序版本来识别在我的应用程序转换之前购买的用户。也就是说,可以通过将购买版本 1.30 或更早版本的用户与最新版本 2.0 进行比较来识别他们,然后我可以授予原始版本号 < 2.0 的任何用户免费访问 IAP 功能。

问题 2:有什么方法可以在应用发布之前测试代码,例如使用 testflight 吗?

问题 3. 有没有其他方法可以在不让现有用户还款的情况下将应用程序转换为免费增值(即使他们在新设备上下载应用程序)?

我使用 Receigen 获取收据数据并测试我的模型 - Receigen 指出测试原始版本号是零或零,但没有说明在发布应用程序时是否已修复。

0 投票
4 回答
20988 浏览

ios - iOS 测试应用收据验证

有很多关于如何使用沙盒测试员帐户测试应用内购买收据验证的示例。

但是付费应用程序本身的收据如何?我们如何在开发环境中获取 App Receipt?

我想做两件事:

  • 防止未购买该应用程序的用户非法复制我们的应用程序。正如我所见,检测到已连接 iTune 帐户的应用程序不拥有该应用程序(它向用户显示警告,他们不拥有该应用程序,但他们未能阻止用户继续使用该应用程序)

  • 将应用购买收据发送到我们的服务器。我们想知道他们什么时候购买我们的应用程序,他们带来了什么版本的应用程序。