问题标签 [receipt]

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 回答
10706 浏览

ios - 将应用内购买收据数据发送到我的服务器

如Receipt Validation Programming guide所述,我正在为应用内购买实现收据验证服务器端。

每当我尝试将收据编码为 Base64 并将其发送到我的服务器时,我都会收到来自 Apple 的错误消息。但是,如果我手动将未编码的 base64 复制粘贴到服务器上,在那里对其进行编码并触发对 Apple 的 REST 调用,他们的 iTunes 服务器会正​​确响应。

我不确定我在做什么错误的客户端。代码非常简单:

有任何想法吗?

0 投票
1 回答
328 浏览

ios - 如果您尝试两次验证同一个 iTunes IAP 收据,第二次会失败吗?

我对 Apple 的收据验证服务有疑问(如此处所述):https ://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573 -CH104-SW1

我的问题是:如果您尝试两次验证相同的合法收据,第二次验证尝试会失败吗?也许 Apple 的收据验证服务器会将此解释为试图通过两次使用同一张收据来阻止收据验证?但是我不知道。我的服务器报告 100% 的 IAP 收据无效,我正试图找出原因。我不认为他们 100% 是无效的。

我了解到,与我们合作的公司也在验证这些 IAP 收据,我相当肯定他们的验证电话会在我们之前进行。所以我想知道他们的验证调用是否“使用”了收据,从而导致我们的失败。

0 投票
3 回答
6708 浏览

php - 验证 appReceiptStoreURL 返回 21002 状态

我创建了一个类来处理应用内购买以及收据的验证。不久前,我曾经在 SKPaymentTransaction 上使用 transactionReceipt 属性,但我已经更新了相当数量的代码,现在在 [NSBundle mainBundle] 上使用 appStoreReceiptURL。

基本上,我的收据似乎以可接受的方式发送到 Apple 的服务器,但我不断收到 21002 的状态代码。在自动更新订阅中,我知道这意味着收据的格式不可接受,但是我有不知道这种状态对于应用内购买收据意味着什么。

这是验证收据的本地方法:

服务器上的重要 PHP 函数执行此操作:

实际执行的 PHP 脚本是:

0 投票
1 回答
1304 浏览

java - CSC java收据

我需要尽可能地格式化收据,就像普通收据一样。名称和地址,时间和日期都在顶部。(所有这些都需要用户输入。)

主要代码

这是我的 Items Array List 的类

数组列表

当我编译代码时,我收到关于以下内容的异常:Exception in thread "main" java.util.MissingFormatArgumentException: Format specifier '14s'. 我将如何解决这个问题?

0 投票
1 回答
273 浏览

ios7 - ios7什么情况下app在设备上没有收据

通过阅读 Apple 文档 [1],应用在下载、更新或恢复应用内购买时会获得更新的收据。有没有根本不存在的情况?

一些不清楚的具体情况:

  • 如果用户在 ios6 中安装应用程序,然后更新到 ios7,收据会丢失吗?
  • 如果用户恢复备份,备份/恢复中是否包含收据?

这个问题的原因是要了解当应用程序必须从服务器检索收据时,有多少应用程序的用户可能会看到登录提示。并与发生这种情况时有多少用户离线时可能会遇到问题有关。

[1] WWDC 2013 Session 308:iOS7 和 OSX 上的统一收据(仅限注册开发者使用)

0 投票
1 回答
8404 浏览

ios - 在 iOS 7 中 appStoreReceiptURL (NSData) 返回的交易收据无效

我正在使用以下方法获取收据数据:

我正在使用以下代码来读取 JSON 收据:

dictionaryFromPlistData:方法为返回的数据返回正确的NSDictionary对象transactionReceipt,但它使用使用返回的nil数据返回appStoreReceiptURL- 因此我没有得到有效的收据!

为什么上面的代码在 iOS 7 中不起作用?

重申一下,dictionaryFromPlistData:正确转换NSData返回的transaction.transactionReceipt.

0 投票
0 回答
646 浏览

printing - OpenERP POS 爱普生打印机

我在 ubuntu 13.10 上安装了 Epson TM-T20 作为收据打印机。不幸的是,它以 A4 尺寸打印,并附有收据图片。谁能帮我修改系统以在 80 毫米收据纸上打印。

此外,当我在交易后在 iPad 上的 OpenERP POS webclient 上按 print 时,它什么也没做。

任何帮助,将不胜感激。

0 投票
1 回答
3409 浏览

java - 如何通过 PHP/Java 验证 Android 的应用内购买收据?

我们在 Android 上的一款应用目前很容易受到 IAP 黑客攻击。我们希望避免这种情况,因为这会破坏一些基于网络的系统,也会损害我们的收入。

我们想知道在我们给他物品之前是否有办法验证购买收据。非常感谢。

也很抱歉我的英语非常糟糕,他们在某些时候可能听起来很粗鲁(有人告诉我),但我实际上很有礼貌。:)

0 投票
1 回答
3198 浏览

ios7 - 检测用户取消 SKReceiptRefreshRequest 以登录

当我们需要刷新 iOS7 收据时,适当的方法是使用 SKReceiptRefreshRequest。这将打开一个 Apple 对话框,供用户使用其 Apple ID 登录。它还允许他们取消。我们如何检测用户是否按下了取消?(当然,在 iOS6 中,这可以通过捕获 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions] 的取消事件来完成)。

SKReceiptRefreshRequest 对象有一个具有两种方法的委托:

在我的代码中,如果用户按下或不按下取消,则调用 requestDidFinish 委托方法。

这对我很重要的原因是,如果用户按下取消,我想取消恢复过程。如果刷新请求后根本没有收据,这可能相对容易。但是,有时在 SKReceiptRefreshRequest 之前,应用程序中会出现收据(包含一些购买),因此如果用户从登录对话框中取消,它会保留在应用程序中。

对于如何做到这一点,我有两个想法:

1) 在刷新请求之前从捆绑包中删除收据。明显的问题是应用程序无法从包中删除文件(例如,请参阅安装后从包中删除文件)。我试过了。没有。

2)检查receipt在刷新请求前后的字节数;如果它们不同,那么这应该表明用户没有按取消。如果它们没有区别,我不确定这是否表明他们按下了取消。如果收据包含购买,我认为字节会有所不同,因为刷新的收据应该具有不同的交易 ID(但相同的“原始”交易 ID)。如果收据中没有购买,我不确定。

更新,2015 年 11 月 9 日;我刚刚注意到,代表对用户按下取消的响应似乎已经改变。现在,调用了 didFailWithError。然而,检测用户取消的问题仍然存在。我们如何区分用户按下取消和真正的错误?我一直在 iOS8.4 和 iOS9.2 (beta) 上进行测试。我现在已经向 Apple 报告了这种缺乏可区分性的错误(错误 #23476210)。

更新,2015 年 11 月 10 日;iOS 9.0.2不会出现此问题!我现在用相同的应用程序二进制文件在相同的大致时间间隔内(所有三个系统在 20 分钟内)尝试了所有三个系统:(A)iOS9.2(13C5050d):确实发生了问题(调用了didFailWithError并且无法区分真正的错误和用户按下取消),(B)iOS9.0.2,问题不发生(调用requestDidFinish),以及(C)iOS8.4.1,问题确实发生。对于所有三个系统版本,它都在真实硬件上运行,而不是模拟器。

0 投票
1 回答
1788 浏览

ios - 在 iOS 上实现“大统一收据”

在 iOS 7 中,应用程序可以读取所谓的“大统一收据”(WWDC 2013,presentation 308),以前仅在 Mac OS X 上可用。它包含有关用户购买应用程序的所有信息,应用程序内购买等等,并且它是加密的,因此用户无法创建假的。苹果有一个关于如何实现它的教程,但并不完全清楚从哪里获取一些数据。

在教程中,有示例代码:

我们怎么可能在 iOS 上加载这些?有一个名为“ValidateStoreReceipt”的 Github 项目,其中包含一些示例代码,但它是为 OS X 量身定制的。OSX 可以访问 OpenSSL,而在 iOS 上则首选使用 Security.h 模块。实施“大统一收据”的最佳方式是什么?