问题标签 [auto-renewable]

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 投票
2 回答
976 浏览

ios - 更新后未调用 SKPaymentQueue updatedTransactions 方法

我已经在我的应用程序中实现了自动更新订阅。一切正常。唯一的事情是public func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction])在自动续订发生后没有调用该方法,因为它应该根据文档通知我订阅已续订。仅在我调用时才调用SKPaymentQueue.default().restoreCompletedTransactions()

我知道它只自动更新 5 次,而且我必须创建新的沙盒用户,我尝试了几次。

在我的AppDelegateI do callSKPaymentQueue.default().add(self)方法中。

有任何想法吗?

0 投票
0 回答
987 浏览

in-app-purchase - 无法从苹果的状态更新通知键中获取 original_transaction_id

我正在实施Apple 的应用内购买编程指南中的状态更新通知https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Subscriptions.html

我已经设置了订阅状态 URL,并且收到了来自苹果服务器的响应,但是我无法在文档的表 6-3 中获取original_transaction_id键。使用此密钥,我可以获得单个客户订阅的交易收据吗?

我意识到我得到了 original_transaction_id领域latest_receipt_info。外部键的值是否相同original_transaction_id(与 latest_receipt_info 相同级别的对象键)?

[更新]

这篇文章说我们将使用original_transaction_id来检测客户收据。问题是我无法获得original_transaction_id苹果服务器响应的字段。我怎么了?

在收到自动续订订阅的 Apple statusUpdateNotification 时,您如何确定客户/用户?

我的回应有

缺少original_transaction_id钥匙

0 投票
0 回答
154 浏览

ios - 应用内购买在发布后不起作用,但它在沙盒模式下工作

Apple 拒绝 In APP 购买

在开发应用程序购买自动续订订阅期间,我创建了测试帐户,这些帐户能够获得应用程序内购买的产品以及实际购买它而没有问题。我已将版本提交给 testFlight Beta 并在应用购买中进行测试以及使用测试帐户购买它在沙盒模式环境下运行良好。但是在提交IOS版app到苹果审核后,该版app连商品都检索不出来,按下按钮发送购买请求时什么也没有显示。

IAP 附加到二进制文件,并且 IAP 与我提交的二进制文件一起获得批准。但它没有在生产中显示。在沙盒中,它的列表很好。

请告诉我你是如何解决这个问题的?还是这个因素不是决定性的,申请不会因此而被拒绝?

0 投票
1 回答
1108 浏览

ios - 自动更新订阅和状态更新通知 ios (swift) 的问题

我们遇到了自动续订订阅的问题。首先,我想从一开始就告诉你我的情况,以完全理解我的问题。

所以,我有一个包含自动更新订阅的应用程序。我设法从我的应用程序中购买了产品,但我想验证来自我的服务器的收据。如果我理解得很好,那么我应该将收据数据发送到我的服务器,该服务器会将收据数据发送给 Apple 并验证该收据。

第一个问题是,我是否知道验证意味着我们向https://sandbox.itunes.apple.com/verifyReceipt发送请求?

其次,如果我无法发送服务器的收据数据会怎样?我的意思是,在这种情况下,我是否应该将收据数据保存在本地并尝试在不同的时间再次发送(我的应用程序可以在注册后使用,所以我必须将带有收据数据的用户 ID 发送到我的服务器)?

此外,iTunes Connect 中还有一个用于自动更新订阅的订阅状态 URL。我们为此设置了一个 URL,但我们没有收到来自 Apple 服务器的任何通知。我们按照 Apple 文档(协议等)中的说明配置了服务器,但我们仍然没有收到任何通知。你有什么建议为什么会这样?

我是否很清楚,如果发生任何状态更新更改,通知应该自动发送?如果没有,那么我应该在我的应用程序或服务器上做什么?(例如如何检测用户是否取消订阅?)

我是否必须同时实现这两种逻辑才能获得最佳用户体验?

0 投票
1 回答
467 浏览

ios - iOS IAP paymentQueue:updatedTransactions

SKPaymentTransactionObserver.paymentQueue:updatedTransactions 返回一个交易数组。当我付款时,我如何知道我的付款是哪笔交易?我付款时它总是返回一笔交易吗?

同时,在恢复交易时也会调用这个观察者函数。那么,处理 updatedTransactions 的最佳实践是什么?

顺便说一句,我的订阅产品是自动续订。

0 投票
1 回答
259 浏览

ios - 如何获取自动续订订阅状态,主要在沙盒模式下取消?

我找到了多个建议,但仍然卡住了。不知道取消订阅后我会得到什么。或者我应该在 iTunes 中提供什么 URL 来通知。这是我得到的一个回复:

当订阅被取消时,我应该得到什么?

0 投票
1 回答
1761 浏览

ios - iOS 应用内购买 - 自动续订订阅

亲爱的,

我对应用程序购买中的 iOS 有疑问,具体针对“自动续订订阅”我开发的应用程序包含免费功能和付费功能:基于“每月订阅和用户免费 1 周试用”的付费功能

所有过程都很好:我们将获取产品&用户可以购买&我们将验证收据(我知道配方包含“is_trial..”和“Purchase_date”的标志......)......

请注意:我在购买或恢复后称为“验证配方”

但我有以下问题:我怎么知道以下内容:

1-如果用户第二次打开应用程序,我怎么知道用户是否仍处于试用期?

2-如果用户在 1 个月后打开应用程序:我如何知道订阅是否过期......(所以如果订阅过期,我会再次拨打购买电话......)

, 是每次用户打开应用时我都会调用“验证配方”的解决方案,这样我就可以知道用户是在付费期间还是在付费期(过期)之后……</p>

或者我将在本地保存购买日期(例如:用户默认)&当用户打开应用程序时,我会将当前日期与购买日期进行比较,我真的不认为这是一个真实的答案,因为用户可能会更改设备日期......。

请指教……</p>

代码如下:

所以现在当打开应用程序时:我请求产品:

收到产品时:

现在,当用户按下按钮时:

下面的方法将调用

& 我将验证收据:

0 投票
0 回答
722 浏览

ios - 在生产中不接收自动续订订阅状态通知

我们正在开发具有自动续订订阅的应用程序。我们只有一种选择 - 每月自动续订订阅和一周免费试用。我们还使用“订阅状态 URL”来接收订阅通知。

该应用程序本身类似于“TO DO LIST”应用程序,可以在多个用户之间共享任务。因此,我们将数据保存在服务器上。

每次用户加载应用程序或创建任务时,数据都来自带有 current_subscription_status 参数的服务器,例如,我们通过简单地检查收据到期日期与服务器上的当前日期来在服务器上进行订阅状态验证。

目前我们只有 iOS 版本,但也适用于 Android 版本。并且用户应该能够在具有不同 Apple id 的不同设备上唱歌到他/她的帐户中。

我们遇到的问题是我们没有收到实际的购买(订阅)通知。例如,当用户点击“开始您的免费 1 周试用”按钮并订阅时,我们会收到通知(输入 INITIAL_BUY)。在这个一周的试用期之后,我们应该收到另一份类似“续订”之类的通知,但我们什么也没收到。

我们联系了 Apple 开发人员支持,但没有得到真正的帮助。他们只是发送指向 Apple 文档的链接。我们在哪里找到了以下注释(这里是链接):

“要在处理事件时获取最新信息,您的应用应向 App Store 验证最新收据。”

因此,基于此,我对可能的用例场景有疑问:

用户在 iOS 设备上订阅每月自动续订订阅,例如他/她想从他/她的苹果 iTunes 帐户中收取费用。但是,在初次购买后,他/她会关闭(杀死)应用程序,甚至不再在 iOS 设备上打开它。用户将应用程序下载到 Android 设备并仅在 Android 上使用该应用程序。因此,App Store 应该每月向该用户收费并向服务器发送订阅状态通知,即使用户再也没有在他的 iOS 设备上打开过该应用程序。因此,iOS 应用程序永远不会发生“...最新收据验证...”。如何实施?

技术细节:

我们使用 SwiftyStoreKit。这是应用内购买实现的两个部分:

  1. 在 AppDelegate 中,我们有:

    /li>
  2. 这是用户点击“开始免费试用按钮”时调用的订阅功能:

    /li>
0 投票
0 回答
260 浏览

ios - Are Status Update Notifications returning iOS 6 or iOS 7 style receipts?

I've been consuming the new Apple Status Update Notifications in Sandbox for auto-renewable subscriptions. The latest_receipt_info field, however, doesn't appear to match iOS 7 style receipts (e.g. no in_app field).

Is this unique to only Sandbox or is this how I should expect the notifications to work in Product?

Example receipt received from Status Update Notification after verifying with Apple:

0 投票
0 回答
152 浏览

ios - 自动更新应用内订阅返回多个交易和“需要登录”对话框

我正在我的应用程序中实施自动更新订阅。每当我启动我的应用程序时,都会使用多个交易调用“func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction])”。我不确定为什么会这样。可能是因为“恢复”功能。当用户点击恢复按钮时,我已经实现了“RestoreCompletedTransactions”。我遇到了问题,要么我得到多个“需要登录”对话框和/或我得到这么多交易而没有调用任何东西。我确保完成交易。请帮忙!!