问题标签 [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 回答
240 浏览

ios - 苹果收据验证问题

伙计们,试图在服务器上验证收据,而 Apple 文档充其量是模糊的。

从文档的最后一段(https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html):

The values of the latest_receipt and latest_receipt_info keys are useful when checking whether an auto-renewable subscription is currently active. By providing any transaction receipt for the subscription and checking these values, you can get information about the currently-active subscription period. If the receipt being validated is for the latest renewal, the value for latest_receipt is the same as receipt-data (in the request) and the value for latest_receipt_info is the same as receipt.

我检查手机发送的回执字符串是否与data.latest_receipt我从苹果返回的字符串匹配,但它不匹配!

查看我从苹果返回的 JSON 对象时,latest_receipt_info和中的对象receipt也不同。

有人可以告诉我他们的经历吗?如何验证收据是否有效?

0 投票
1 回答
916 浏览

in-app-purchase - 收据数据的 base64EncodedStringWithOptions 返回 nil

我想使用服务器端验证我的应用内购买。所以我使用以下代码:

最奇怪的是,应用程序在一台装有 iOS 8.0.2 的 iPad 上崩溃,而在另一台装有相同 iOS 版本的 iPad 上却没有崩溃。

最糟糕的是,我无法访问应用程序崩溃的设备。

据我了解- base64EncodedStringWithOptions:退货nil,但我不知道为什么。

谁能帮我?

0 投票
0 回答
407 浏览

ios - 在应用程序购买中获取收据并保存

我的应用程序具有自动续订订阅的服务器端收据验证。
特别是在每次重新启动时,应用程序需要检查收据是否仍然有效。
在 iOS7 上,这似乎很容易,只需这些代码行我就可以得到收据:

对于 iOS6,它似乎回退到transactionReceipt. 得到我有2个选择:

  • 购买后保存
  • 作为恢复购买再次询问

以下是问题,在第一种情况下,我猜收据仅在订阅期内有效,哪个是保存它的正确位置?
在第二种情况下,恢复购买将触发 App Store 弹出消息,在每次启动时询问它非常无聊。
有人可以启发我走上正确的道路吗?

0 投票
2 回答
2122 浏览

ios - 如何使用 iOS 7 样式收据查找应用内购买的最新收据

当用户购买应用内商品时,我正在尝试在设备上本地获取最新的收据信息。我的问题是我不知道如何从 latest_receipt_info 字段中的收据数组中获取最新的收据(应该是最新购买的收据)。不知何故,所有收据中的所有 pruchase_date_ms 字段都具有相同的值。

在上面的示例中,我实际上为product2进行了测试购买,但现在我也收到了 product1的收据,其中包含相同的purchase_date_ms。有谁知道为什么?

0 投票
1 回答
841 浏览

ios - 如何处理 IAP 的 transactionReceipt 弃用?

我目前正在transaction.transactionReceipt将 base64encoded 验证为字符串服务器端。问题是transaction.transactionReceipt现在已弃用,我不知道用什么替换它以进行应用内购买。

新文档建议使用NSData *receipt = [NSData dataWithContentsOfURL:receiptURL]; ,但文档说它仅用于应用购买验证,而不用于应用内购买。

在这种情况下我该怎么办?

0 投票
0 回答
257 浏览

ios - 使用iOS交易回执响应数据获取产品属性服务端

我目前正在使用来自的数据transaction.transactionReceipt来验证 IAP 交易服务器端。

有没有办法SKProduct从这个收据数据服务器端获取信息?现在,在验证收据时,您可以看到 Apple 使用的产品 ID,我想知道您是否可以以某种方式在服务器上使用该产品 ID 来获取该SKProductID 的属性。

有没有人这样做过?

0 投票
1 回答
1606 浏览

ios - iOS 应用内购买收据与不同的 iTunes 用户

我在设备上本地使用收据验证并针对 iOS 7+

我正在沙盒环境中测试应用购买中的自动续订订阅,我注意到了这种情况。

-用户A在设备上登录iTunes帐户,在应用程序中购买订阅,获得应用程序收据。- 用户 A 在设备上注销 iTunes 帐户,用户 B 登录 - 用户 B 启动应用程序 - 用户 B 将继续使用用户 A 的订阅,因为 [[NSBundle mainBundle] appStoreReceiptURL] 有效,并将返回用户 A 的收据。

为什么它不返回用户 B 的收据?

0 投票
0 回答
1196 浏览

ios - 如何使用 Apples Receipt Validation Endpoint 查看非消耗性应用内购买是否有效

我最近根据 Apple 的文档设置了一项服务来验证和记录从我的 iOS 购买的内容。经过几次购买后,我查看了我的表格,发现我有 45 次购买返回状态码为 0,根据 Apple 的文档,这意味着它们是有效的。问题是当我登录我的 iTunes 帐户时,它只记录了 22 次有效购买。在仔细检查来自 Apple 的状态为 0 的 JSON 响应后,我发现了两种变化:


请注意,应用程序内的第一个对象数组是空的,而第二个似乎实际上有 IAP 的收据。我的假设是我应该查看填充了应用内数组的收据。我现在的问题是,我已经解析了没有应用内数组的收据,我仍然有 25 次有效购买(比 Apple 记录的多 3 次)。

我的下一个想法是,其中一些购买可能是修复。我在收据验证编程指南中找到了这个注释。它在原始交易标识符下声明:

“对于恢复先前交易的交易,原始交易的交易标识符。否则,与交易标识符相同。”

在我检查了我所有的有效收据后,我没有发现 theoriginal_transaction_id和 thetransaction_id不同的实例。为此,我进行了重复购买,提示我该项目已被购买,并询问我是否愿意免费恢复它。当我这样做并检查收据时,我发现即使在这种情况下,两个交易 ID 也是相同的,这不应该是这种情况。

当我进行询问时,我收到了一个预设回复,告诉我 iTunes 的 IAP 部分工作正常。如果有人可以帮助阐明我如何更好地过滤这些以匹配 Apple 的 IAP 最终计数,将不胜感激!

0 投票
0 回答
180 浏览

ios - 如何检查是否从 App Store 下载了 iOS 应用程序?

假设我有一个没有应用程序内购买的应用程序,我只需要验证一个应用程序实际上是从 App Store 下载的。

我在搜索时找到的所有信息都是关于应用内购买收据验证的。为了检查它是否是 App Store 下载,仅检查 App Store 收据是否存在并且有效就足够了吗?有没有办法在沙箱中测试它?

编辑

要在沙盒中测试,我这样做:

我总是得到“找不到收据”。

我也这样做了:

仍然找不到任何收据。

0 投票
1 回答
736 浏览

ios - 非消耗品应用内购买收据验证可选?

我有一个包含 1 个非消耗性应用内购买的应用来解锁额外功能。我实现了应用内购买,它在我的沙盒环境中工作。我的问题是,我需要收据验证吗?它是强制性的还是可选的?如果没有收据验证,我的应用程序会被拒绝吗?