我如何知道应用内购买收据是否来自沙盒?

2024-01-08

iOS IAP 文档states https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/DevelopingwithStoreKit/DevelopingwithStoreKit.html#//apple_ref/doc/uid/TP40008267-CH103-SW1,如果您想测试商店,您应该在设置应用程序中注销您的 iTunes 帐户。进行应用内购买时,系统会要求您提供用户名和密码。但是,在应用程序内部,我不知道用户是否已登录或是否正在使用沙箱帐户。

事实上,我并不关心它是否是沙盒交易,但是:在服务器上我必须通过 URL 验证真实收据https://buy.itunes.apple.com/verifyReceipt https://buy.itunes.apple.com/verifyReceipt和通过 URL 的沙箱收据https://sandbox.itunes.apple.com/verifyReceipt https://sandbox.itunes.apple.com/verifyReceipt。我如何在服务器上知道收据是沙盒收据还是真实收据?

或者应用程序如何知道收据是真实的还是沙箱的,因为我可以将附加参数从应用程序传递到我的服务器。

什么不起作用:你不能只说应用程序的 DEBUG 版本使用沙箱环境,而应用程序的 ADHOC 或 RELEASE 版本使用生产环境。对于 ADHOC 版本,完全可以使用 iTunes 测试帐户进行应用内购买。


当您验证收据时,如果您收到状态代码 21007,则表示它是沙盒收据。看这里:https://developer.apple.com/library/content/technotes/tn2413/_index.html#//apple_ref/doc/uid/DTS40016228-CH1-RECEIPTURL https://developer.apple.com/library/content/technotes/tn2413/_index.html#//apple_ref/doc/uid/DTS40016228-CH1-RECEIPTURL

我应该使用什么网址来验证我的收据?
请务必先使用生产 URL 验证您的收据;如果您收到 21007 状态代码,请继续使用沙箱 URL 进行验证。遵循此方法可确保您的应用程序在沙箱中进行测试或审核或在 App Store 中上线时无需在 URL 之间切换。

21007状态代码表明此收据是沙箱收据,但已发送到生产服务进行验证。状态 0 表示收据已正确验证。看WWDC 2012:通过应用内购买管理订阅 https://developer.apple.com/videos/wwdc/2012/?id=308了解更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何知道应用内购买收据是否来自沙盒? 的相关文章

  • iOS7 XIB 问题。顶部和底部的空白

    我有一个正在设置 ImageView 的视图 自动布局已选中 预览中看起来不错 但当应用程序实际在模拟器上运行时 仅在 iPhone 视网膜 4 英寸模拟器中 顶部和底部显示空白 3 5寸的看起来还不错 使用 iOS7 和 XCODE 5
  • Twitter api 文本字段值被截断

    为什么文本字段值被截断以及如何获得完整的值 截至目前 我正在尝试获取如下所示的文本字段值 do if let responseObject try NSJSONSerialization JSONObjectWithData respons
  • 在横向模式下向 UIScrollView 添加子视图

    我有一个以横向模式启动的视图控制器 其中有一个 UIScrollView 我尝试创建子视图并将它们添加到 UIScrollView 但视图的框架大小都是纵向大小 这是我的代码 void viewDidLoad super viewDidLo
  • 如何使用 WKWebView 正确实施身份验证质询?

    我正在构建一个网络浏览器 但在网络方面我真的是新手 我想测试下面的代码示例 但我没有现实生活中的示例可以使用 void webView WKWebView webView didReceiveAuthenticationChallenge
  • Cocos2D复杂动画[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 Cocos2D 将我的游戏从 Flash 移植到 iOS 我现在有一个工作版本 我很高兴我
  • 有什么方法可以让dispatch_queue_t在单线程中工作吗?

    这是我的代码 interface MyObject property nonatomic dispatch queue t queue end implementation MyObject NSThread check id init s
  • 只有根级导航目的地对于具有同质路径的导航堆栈有效

    我正在尝试整合NavigationStack在我的 SwiftUI 应用程序中 我有四个看法 CealUIApp OnBoardingView UserTypeView and RegisterView 我想从OnBoardingView
  • 什么是已弃用的推送转场? (iOS 8)[重复]

    这个问题在这里已经有答案了 我不知道在这种情况下已弃用意味着什么 我是编程新手 正在 Xcode 6 中制作我的前几个应用程序 今天我正在制作一个待办事项列表应用程序 当连接到用户可以输入新待办事项以添加到主表的场景时 我被邀请使用推送转场
  • 如何在 UIAlertView (iOS) 中的其他两个按钮(堆叠)之间添加取消按钮

    我正在尝试创建一个带有三个按钮 将堆叠 的 UIAlertView 我希望 取消 按钮位于其他两个按钮之间的中间 我尝试将 cancelButtonIndex 设置为 1 但如果还有其他两个按钮 它只会将它们放置在索引 0 和 1 处 我知
  • 使用 AVMutableVideoCompositionLayerInstruction 旋转视频

    我正在 iPhone 4 上使用前置摄像头拍摄视频 并将视频与其他一些媒体资源结合起来 我希望该视频为纵向 所有视频的默认方向都是横向 在某些情况下 您必须手动管理 我正在使用 AVFoundation 特别是 AVAssetExportS
  • iOS:如何在不降低 fps 的情况下播放音频?

    我正在使用 Sprite Kit 最好使用 Swift 库 为 iOS 9 开发游戏 目前 我正在使用 Singleton 在其中预加载音频文件 每个文件都连接到一个单独的 AVAudioPlayer 实例 这是一个简短的代码片段来了解这个
  • 新标签页和浏览器窗口中的 CSRF 令牌

    我通过以下方式在我的nodejs服务器上实现了CSRF攻击预防 登录时的用户会收到 CSRF 令牌和 cookie 存储在 cookie 中的基于 JWT 的令牌 CSRF 令牌将成为客户端发送的所有未来请求标头的一部分 ajaxSetup
  • TestFlight 提供反馈按钮

    我正在使用 iOS 8 的最新 testflight 版本 我将自己添加为内部测试人员 现在当我使用 testflight 打开应用程序时 我找不到反馈按钮 如果有人有任何线索 请告诉我 您在 Testflight 应用程序中提供反馈 打开
  • Flutter - 选择 TextFormField 时键盘不显示

    我目前遇到一个问题 当我选择任何一个时 键盘不会出现TextFormFielda 内的小部件Form小部件 这是表单的代码 位于我的内部CreateAccountForm有状态的小部件 import package flutter mate
  • 为什么在尝试编译此代码时会收到错误“错误:未知类型名称'虚拟'”?

    Code struct IRenderingEngine virtual void Initialize int width int height 0 virtual void Render const 0 virtual void Upd
  • NSCalendar 返回明年第一周上周一的错误日期

    我使用下面的代码使用随机日期来计算上周一 哪个工作文件但我的代码在明年日期中断 下面是相同的代码 NSDate date NSDate dateWithTimeIntervalSince1970 1483620311 228 NSLog c
  • NSCFData isRessized 崩溃?

    我目前在控制台中收到此崩溃日志 2011 08 23 19 18 40 064 App 1697 707 NSCFData isResizable unrecognized selector sent to instance 0x11f1c
  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • AFNetworking XML 请求问题

    我在用着AFNetworking 2使用 JSON 响应 它工作正常 现在我必须将其转换为 XML 而不是使用 JSON 因为服务器响应是 XML 格式的 在我搜索之后 我找到了这段代码 但它不起作用 与 Charles 我发现请求是错误的
  • 如何正确创建迦太基 cartfile?

    我正在研究购物车文件 迫不及待地想 简单地创建一个购物车文件 就像所有说明所说的那样 只是 如何 简单地 创建一个 Cartfile 我创建了一个纯文本文档 将其命名为 cartfile 并在其中复制了一些依赖项 Ran carthage

随机推荐

  • Html-loader + file-loader 未捆绑正确的图像源

    我计划在一个项目中使用 Webpack 并使用 Html loader file loader 设置我的工作流程 以获取带有图像动态 src 的生产 html 文件 正如 Colt Steele 所教的那样 这是我的 src 文件 索引 h
  • 如果程序的一部分表现出未定义的行为,它会影响程序的其余部分吗?

    假设程序员忘记初始化他的一个自动变量 并且他使用了它的值 从而调用了未定义的行为 int i 0 j printf value of j d n j char buf 256 fputs Enter query stdout fgets b
  • nvlink、可重定位设备代码和静态设备库

    在调查可重定位设备代码的一些问题时 我偶然发现了一些我不太理解的东西 这是如图所示的用例slide 6 http on demand gputechconf com gtc express 2012 presentations gpu ob
  • 无法使用 rarfile 模块提取 RAR 存档

    我一直在尝试制作一个提取 rar 文件的脚本 但收到错误 我一直在努力理解该模块的文档 但无济于事 我是编程新手 所以有时会迷失在所有文档中 这是我的代码的相关部分以及收到的错误 我的代码片段 import rarfile rarpath
  • 我可以在 Flutter 中使用自定义环境变量吗?

    我想以与我的同事不同的方式配置我们的日志库 并且我不想冒险检查我的本地配置 即 void main LOG minLevel Logger VERBOSE LOG showSymbols false runApp RestartWidget
  • 如何检测文本中的源代码?

    是否可以检测文本中的编程语言源代码 主要是 Java 和 C 例如我想知道本文中是否有源代码部分 text text text text text text text text text text text text text text t
  • 理解Java中的继承和抽象类

    好吧 我通过谷歌搜索寻找文档 但是我没有找到任何真正描述我想要回答的内容 所以我在这里问你们 所以我得到了继承 以及它是如何工作的 我遇到的问题是有时我看到一个对象最初定义为一种类型 然后设置为不同的类型 但我不明白到底发生了什么 这是一个
  • python 找到两个numpy数组的交点

    我有两个描述空间曲线的 numpy 数组 它们在一个点上相交 我想在两个数组中找到该交点的最近值 我有这段代码可以正常工作 但对于大量点来说它会变慢 from scipy import spatial def nearest arr0 ar
  • 在模板文字中使用条件语句

    我知道有更优雅的方法来定义包含变量的字符串 但如果我想在 ES6 之前添加一个条件 我会这样做 var a text conditional a b more text 现在使用模板文字我会做 let a if conditional a
  • 线程上的 Clojure 错误:java.lang.IllegalArgumentException:键必须是整数

    我对两件事感到困惑 一 错误消息本身 第二 这段代码启动了如此多的线程 我本以为它会启动 2 或 3 个线程来响应单个请求 但是当我在本地主机上运行它并将浏览器指向它 仅一次 时 它会启动 40 个线程 诚然 我使用的是 Chrome 它在
  • 我想在 JavaDoc 中添加 JavaScript

    div class en Documentation in English div div class nl Documentatie in Nederlands div public void myFunction 随后编辑 JavaDo
  • QT:qmake 无法识别 3dcore、3drender

    我在用qmake编译我的QT项目 在我的 pro文件我有一行 QT 3dcore 3drender 3dinput 3dextras 执行时qmake myprofile pro我收到错误 Project ERROR Unknown mod
  • Clojure deftype 中的可变字段?

    我正在尝试 Clojure 1 2 特别是受支持的可变字段deftype根据clojure org 文档 http clojure org datatypes 但我无法让装置工作 更新字段的语法是什么 或者可变性还没有实现吗 definte
  • 通过 XAML 绑定将自定义对象传递给 UserControl

    我想要做的是创建一个 UserControl 我可以向其传递一个 Address 对象 似乎当我经过Address Binding Path Person Address 到 UserControl 嵌入的 TextBox 绑定到Text
  • 类库和框架有什么区别

    我整天听到术语 类库 基类库 框架 框架的亮点是什么 基类库又是什么 类库和软件框架之间的区别特征是 在框架中 控制流不是由用户的代码决定的 而是由框架决定的 这也被称为好莱坞原则 不要给我们打电话 我们给您打电话 顺便说一下 还有一个不错
  • 如何使用 PowerShell 将文件移至回收站?

    当使用rm在Powershell中使用命令删除文件 它们将被永久删除 相反 我希望将已删除的项目放入回收站 就像通过 UI 删除文件时发生的情况一样 如何在 PowerShell 中执行此操作 2017年答案 使用回收模块 https ww
  • 在 Php PDO 的 bindValue 中使用 $id 之前是否需要使用 (int)$id

    我刚刚开始使用 Php 数据对象 我不确定的一件事是我是否必须在查询中使用某些变量之前验证它是否是整数 例如 像这样 id int POST id is this required query pdo gt prepare SELECT F
  • 如何连接到远程 hashcorpVault 服务器

    让我在这里解释一下我的用例 我想尝试在本地进行保管 所以我配置了VAULT ADDR as echo VAULT ADDR http 127 0 0 1 8200 然后我在开发模式下启动了vault vault server dev 一切正
  • Django Rest 框架中的 Post 请求处理

    我正在使用 Django Rest Framework 当前使用 Get 请求从后端提取一些数据 但由于 URL 限制变高 我们计划实现 Post 请求 为此 首先必须使后端 Django Rest API 能够服务于 post 请求 我是
  • 我如何知道应用内购买收据是否来自沙盒?

    iOS IAP 文档states https developer apple com library ios documentation NetworkingInternet Conceptual StoreKitGuide Develop