问题标签 [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 投票
1 回答
963 浏览

c# - 测试 Windows 商店应用内购买

你好,我正在制作一个网络服务,它将使用来自应用程序的收据来验证 Windows 商店应用内购买。我在微软网站https://msdn.microsoft.com/en-us/windows/uwp/monetize/use-receipts-to-verify-product-purchases中找到了这个链接,它显示了一个示例代码来测试提供的收据数据。我的 Web 服务使用示例数据。现在,虽然移动应用程序仍在开发中,但我想使用真实收据测试 Web 服务。那么除了实际购买产品(消耗品)之外,还有其他方法可以得到收据吗?正如我所读到的,测试购买的唯一其他方法是使用 windows.applicationModel.Store.CurrentAppSimulator 静态类。但是它使用了本地生成的 WindowsStoreProxy.xml,但是在这种情况下:

  • 该应用程序必须工作
  • 我无法找到它是否实际查询 Windows 商店或仅使用虚拟数据的信息
0 投票
1 回答
481 浏览

ios - iOS 收据验证无法正常工作

我有一个免费的应用程序(已经在 App Store 中提供),它有一个非消耗性 IAP 选项,它就像一个具有更多功能的高级版本......最低部署目标是 8.0

我使用 RMStore 库 ( https://github.com/robotmedia/RMStore ) 进行收据验证...我意识到在已经购买任何其他应用程序的设备上执行时验证不正确。我的意思是,如果他的设备中的某个人(使用他相应的 Apple ID)过去已经购买了任何其他应用程序,那么当进入我的应用程序时,收据验证返回 OK(就像那个人也已经购买了我的高级版一样)但是它不是 :-(

以下是我使用 RMStore(在 AppDelegate 中)验证收据的代码:

怎么了?

顺便说一句,在 StackOverFlow 的 RMStore 库和收据验证的其他帖子中,提到了“RMStoreAppReceiptVerificator”库,但我没有它......我需要它作为强制性吗?(我使用“RMAppReceipt”和“RMStoreAppReceiptVerifier”库代替)。

0 投票
1 回答
223 浏览

ios - iOS In-App-Purchase 取消是否反映在 NSBundle.mainBundle().appStoreReceiptURL

假设 iOS 用户购买了自动续订订阅。我知道这NSBundle.mainBundle().appStoreReceiptURL显示了某种数字收据,我可以用它来验证购买和继续订阅。

然后在某个时间点后,用户取消订阅。

问题

当用户取消订阅时,

  1. 是否NSBundle.mainBundle().appStoreReceiptURL立即反映取消?

我对此持怀疑态度,因为NSBundle.mainBundle()它用于提取本地存储在应用程序中的内容。如果用户通过转到操作系统的设置取消订阅,并且会向 Apple Server 发送某种类型的通知,那么 Apple Server 应该以某种方式通知应用程序。

  1. 如果以某种方式NSBundle.mainBundle().appStoreReceiptURL立即反映取消。苹果是如何做到的?还是由我来实施协议以获取取消信息?

  2. 事实上,如果我确实需要运行一个协议,那么其他应用程序是否会在每次启动该应用程序时运行它?

0 投票
1 回答
47 浏览

ios - 长期用户的 iOS 收据验证失败

在我们的最新版本中,我们将我们的应用从付费转换为应用内订阅购买。我们向我们现有的用户承诺,我们会将他们加入订阅,因为他们已经为该应用程序付费。在我们的代码中,我们在第一个订阅版本之前寻找带有原始应用程序版本的有效收据。在我们的测试中,这一切都很好。

当我们发布新应用程序时,我们开始从我们的长期用户那里收到他们被要求订阅的反馈(他们甚至不应该看到订阅按钮)。当我们研究这个问题时,我们注意到所有这些用户都在 2014 年 9 月将应用程序转移给新的开发者之前购买了我们的应用程序。

重现这个问题很困难——我们如何模拟 2014 年的应用安装?我可能能够以受影响用户之一的身份登录,这将涉及使用他们的 Apple 凭据。我不太愿意要求用户分享他们的凭据。

由于我无法重新创建它,而且我们的代码非常简单,所以我对正在发生的事情的最佳猜测是,我们没有收到在 2014 年应用程序转移之前购买的用户的有效收据。

所以,我有几个问题:

  1. 有没有其他人经历过这个?
  2. 如果是这样,您是如何解决的?
  3. 你会如何解决它?

仅供参考 - 我已向 Apple (3045378) 提出问题。

0 投票
2 回答
6598 浏览

ios - 一次购买的 Apple 应用内购买 transaction_id 有时会发生变化

一旦我从客户端获得收据并通过苹果服务器进行验证,我就会在此收据中获得新购买的交易 ID(它是自动订阅购买)。几天后,我从同一个客户那里得到一张新收据并验证它,奇怪的事情发生了:旧购买的交易 id 发生了变化。

我将这次购买的数据在旧收据中与新收据中的数据进行比较,唯一变化的是transaction_id字段,original_transaction_id、purchase_date、expires_date、web_order_line_item_id等字段完全相同。

比我查数据库,我发现大约1%的交易记录有同样的情况。并且有一个特点,他们的大部分交易 id 都增加或减少了 1-2

我曾经认为交易ID是购买的标识符。有没有人遇到同样的问题或知道原因?

0 投票
3 回答
725 浏览

ios - Apple 收据验证 - 自动续订订阅错误 21004

因此,我正在调用 Apple 沙盒收据验证 URL,我的 JSON 有效负载包含收据数据和密码(共享密钥,在 iTunes Connect 上生成)。

每次我拨打电话时,我都会返回 21004 的状态。我已经这样做了很多次了,每次都是同样的反应。我检查了 iTunes Connect 上的共享密钥,它完全匹配。我什至重新生成了共享密钥并尝试另一次购买来验证这个,仍然得到相同的响应。

任何帮助表示赞赏。

亚当

0 投票
4 回答
4467 浏览

ios - 验证应用商店收据会给出 DrmInvalidArgumentException

我在这里关注文档。

https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html

我有一个我正在尝试验证的团队的收据数据,他们收到错误代码 21002,这是格式错误的 JSON。看起来他们在 base64 数据上附加了额外的参数,所以我尝试删除这些参数并发送:

结果:

0 投票
1 回答
1019 浏览

ios - 回溯 IOS 使用应用内购买 IOS 支付的收据信息

Apple/Itunes/Itunes Connect 是否提供在任何情况下生成的收据的详细信息(应用内购买回调时除外)?

显然,如果您有收据 ID 的记录,我们可以向 Apple 服务器发送 curl 请求。但是,由于某些原因,如果在应用内购买回调时没有记录收据 ID,那么我们似乎永远无法追踪详细的付款信息细节,特别是如果您想将其存储为日志。

与 Paypal 和 Authorize 不同,Apple 似乎没有提供包含每笔交易详细信息(transaction_id、subscription_id 等)的报告(可能出于隐私原因)。

因此,有没有办法追踪通过应用内购买向 Apple 支付的每笔付款的错过收据 ID?

0 投票
2 回答
968 浏览

ios - 应用内购买收据验证问题

我有一个支持订阅以及按需付费功能的应用程序。我在服务器端遇到收据验证问题。如果

  1. 用户尚未订阅并尝试使用按需付费下载内容我收到 21002 错误(传递共享密钥进行验证)
  2. 如果用户订阅并且它已过期。现在用户尝试下载随用随付,然后响应为 21004(未传递共享密钥)

我不明白什么时候应该将共享密钥传递给苹果服务器。由于我们只有一张包含消耗品和订阅收据信息的苹果收据。

有什么帮助吗?

0 投票
2 回答
1573 浏览

swift - 收据验证 iOS - 无法打开该文件,因为没有这样的文件

我正在开发订阅 IAP。我设置了所有购买,他们的详细信息恢复正常,我可以在沙盒中进行购买并获得所有消息。我现在遇到的问题是检查收据。我总是得到一个正常返回的 URL,但是当我尝试阅读它时,我不断收到文件不存在的错误。所以我尝试用SKReceiptRefreshRequest. 再试一次,还是一样。

我已经卸载了模拟器和两个真实设备上的应用程序,从新安装重试,同样的问题。我意识到的一件事是,其中一台真实设备显示密码提示请求并提及 [Sandbox]。然而,在两次提示(包括接受密码)之后,我收到一条“用户/密码不匹配”消息,而不是购买完成。在模拟器上,当提示输入 iTunes 帐户和密码时,一切都会通过,但实际购买确认从未出现(我等了 4 分钟,互联网连接稳定)。

这是验证过程(我已经更改了很多次,来自不同的教程和其他人的问题)

这是运行应用程序的调试输出。收据URL在模拟器/真实设备之间有所不同,但除此之外一切都保持不变。

为什么我无法创建或找到收据?是设备问题、错误还是我忘记了什么?