- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我刚刚开发完我的应用程序,创建我的 Apple 组织帐户,在 iTunes 连接端创建我需要的所有内容,但我现在的问题是开发 server-side receipt validation (因为 Validating Receipts Locally 似乎有一些潜在的中间人安全问题)。
...
// Load the receipt from the app bundle.
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
if (!receipt) { /* No local receipt -- handle the error. */ }
/* ... Send the receipt data to your server ... */
...
我很清楚该图片上描述的验证过程:
我的主要问题是我不是服务器问题的专家,如果你有一些例子说明我必须为收据验证编写什么代码以及我必须使用什么技术(PHP、Angular 或其他... ).
(第一个例子:在 ticket 上,服务器端的代码是否足以完成验证?)
(第二个例子:通过使用 JSON 将 UDID 和以 Base64 编码的收据发送到服务器,服务器向应用商店询问,应用商店发送好的,服务器会向应用程序发送 ok。如果是好的过程,我可以轻松完成。Ticket 2提前致谢。
最佳答案
这是我的解决方案:
我使用我的服务器来验证我的收据,如下所示:
https://github.com/aporat/store-receipt-validator
use ReceiptValidator\iTunes\Validator as iTunesValidator;
$validator = new iTunesValidator(iTunesValidator::ENDPOINT_PRODUCTION); // Or iTunesValidator::ENDPOINT_SANDBOX if sandbox testing
$receiptBase64Data = 'ewoJ
......
OVG8xTlNCRmRHTXZSMDFVSWpzS2ZRPT0iOwoJImVudmlyb25tZW50IiA9ICJTYW5kYm94IjsKCSJwb2QiID0gIjEwMCI7Cgkic2lnbmluZy1zdGF0dXMiID0gIjAiOwp9';
try {
$response = $validator->setReceiptData($receiptBase64Data)->validate();
// $sharedSecret = '1234...'; // Generated in iTunes Connect's In-App Purchase menu
// $response = $validator->setSharedSecret($sharedSecret)->setReceiptData($receiptBase64Data)->validate(); // use setSharedSecret() if for recurring subscriptions
} catch (Exception $e) {
echo 'got error = ' . $e->getMessage() . PHP_EOL;
}
if ($response->isValid()) {
echo 'Receipt is valid.' . PHP_EOL;
echo 'Receipt data = ' . print_r($response->getReceipt()) . PHP_EOL;
} else {
echo 'Receipt is not valid.' . PHP_EOL;
echo 'Receipt result code = ' . $response->getResultCode() . PHP_EOL;
}
然后我服务器上的 WS 向我发送是否正常。
(iPad本地进程不可取,可引用:I'm getting 21004 as status value in reply from apple's sandbox server testing auto-renewable subscriptions in ios?)
关于php - iOS 的自动续订订阅 : How to get Server-side receipt validation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47892798/
我对交易收据验证有一些疑问: 为什么需要外部服务器?为什么我不能直接联系 http://buy.itunes.apple.com直接从 iPhone 上? 如果此外部服务器出现故障或收据无效怎么办?如
在 Apple 的应用程序内购买状态代码(在 Table 2-1 here 中)中,有些显然应该再试一次,有些则不能,应该认为收据无效。 但是“21003 - 收据无法通过身份验证。”呢?它类似于21
我正在为我的应用(即将发布)实现应用内购买,并提供对 iOS6 和 iOS7 的支持。我的问题与 iOS6 和 iOS7 之间的非续订订阅机制之间的差异有关,更具体地说是关于如何实现还原。为了同时适应
我发现我的应用程序发生了一件非常奇怪的事情。 具体来说,当我检测到应用程序的 bundle 中不包含收据文件时,我正在发出收据请求以便从 Apple 下载收据。 当然,调用收据刷新 API 会导致显示
我正在测试自动续订订阅的恢复过程。测试涉及使用不同沙盒帐户在同一设备上多次购买订阅。 我正在三种设备上进行测试:iPhone、iPad 和 iPod。在 iPad 上我有以下问题: 如果我继续从 NS
我正在实现一个自动续订订阅方案,其中收据验证将由我的服务器端代码处理。关注苹果的documentation ,我将从 NSBundle 获取收据数据,并将该数据传递到我的服务器,该服务器将联系 App
有很多关于如何使用沙盒测试器帐户测试应用内购买收据验证的示例。 但付费应用程序本身的收据如何?开发环境如何获取App Receipt? 我想做两件事: 防止未购买应用程序的用户非法复制我们的应用程序。
在我的购买验证过程中有一个三方 iOS 客户端 ASP.NET 服务器(验证中介) 苹果服务器 iOS Client与ASP.NET Server通信方式中的JSON-RCP 验证过程是;通过网络服务
我想将 IAP 添加到我现有的 Flutter 应用程序(我的第一个应用程序)中,所以我研究了这个主题一段时间并开始了解它是如何工作的,直到我遇到“收据验证”主题。我很难理解与该主题相关的问题的答案,
当用户完成注册和付款后,银行自动调用我的收据页面两次。我已经就此事联系了银行,他们说这是有意的。 我的问题是,在收据页面上,用户被插入到成员(member)数据库(mysql)中,并发送了一封确认电子
在 iOS 7 中,应用程序可以读取所谓的“Grand unified receipt”(WWDC 2013,演示文稿 308),以前只能在 Mac OS X 上使用。它包含有关用户购买应用程序的所有
我不熟悉 iOS 中的收据验证。我已成功实现应用内购买。现在我希望在此应用内购买中包含收据验证部分。 我的应用内购买是针对 3 种产品。我希望在购买我的应用中的每个产品之前,应该执行收据验证。 为此,
我有一个基于 Spring 及其 SimpleBroker 实现的 Websocket-stomp 服务器(不使用外部代理)。 我想启用 STOMP RECEIPT 消息。 我如何配置我的代码以自动发
我正在使用谷歌钱包作为我的支付网关,在购买产品后谷歌给了我以下回复 { "orderId":"12999763169054705758.1371079406387615", "packageNam
我有一张应用程序在交易完成时存储的记录交易收据,我想询问 Apple 的服务器此收据是否有效。 有没有办法不使用外部服务器来做到这一点? 最佳答案 I would like to ask Apple'
我在使用 Google 表单/脚本功能时遇到问题。 我正在通过使用“setCollectEmail”函数启用邮件收集的脚本创建表单。但是当此功能自动启用时,它允许受访者收到回复的副本。 我需要收集电子
我的应用程序使用 Store Kit API 进行应用内购买。我遇到以下商店拒绝问题,有人遇到过这种情况吗? 2.3 Apps that do not perform as advertised by
我切换到FIFO队列,并尝试从队列中删除消息时收到此错误消息 Value {VALUE} for parameter ReceiptHandle is invalid. Reason: The rec
为了在我的应用程序中启用应用内购买,我做了一个 tutorial它为收据验证引用了一个不是最新的 VerificationController。 结果,我的应用因为使用了 iOS5 的唯一标识符而被拒
我在调试 Apple 的应用内购买收据时遇到问题。尽管购买已经过期,但字段“is_trial_period”似乎保持 true。据我了解,Apple 为调试订阅定义了短期,如下所示: Testing
我是一名优秀的程序员,十分优秀!