标签: auto-renewing

iOS沙箱环境自动续订订阅

关于iOS自动续订订阅,我有以下问题

a)自动续订订阅是否真的在沙箱环境中自动续订?问题似乎是订阅不会自动更新,尽管文档说即使在沙盒环境中它也应该发生6次.

b)我们是否需要调用restoreCompletedTransactions来获取自动扩展订阅的新收据,或者是-paymentQueue:updatedTransactions:iOS自动调用的方法?(我猜它会自动调用'启动'和'旋转出背景'不确定)

c)您如何在多个设备上处理相同的订阅?这可以通过restoreCompletedTransactions来处理,但是调用它会提示用户输入密码,因此每次启动应用程序时调用它都不是很方便.

iphone storekit in-app-purchase auto-renewing

27
推荐指数
2
解决办法
1万
查看次数

我可以完全在服务器端验证Google Play应用内订阅续订吗?

当用户首次从Google Play商店购买订阅时,我的应用会向我的服务器发送一张收据,其中包含包裹名称,订阅/产品ID和购买令牌.然后,我可以调用Purchases.subscriptions.get API来验证订阅.

我不清楚的是,一旦更新发生,我是否可以完全验证订阅服务器端?文档对此非常不清楚.

据我了解,使用V3购买API,应用程序需要轮询以查看订阅是否已续订,然后将新收据转发到服务器上.我假设购买令牌在续订时会有所不同,这表明不可能完全在服务器端实施续订检查.

我错过了什么吗?

android subscription in-app-purchase auto-renewing google-play

22
推荐指数
1
解决办法
1963
查看次数

iOS自动续订订阅:收据验证流程

我正在实现一个自动更新的订阅方案,其中收据验证将由我的服务器端代码处理.根据Apple的文档,我将从中获取收据数据NSBundle,并将该数据传递给我的服务器,该服务器将联系Apple以验证收据并通知应用程序结果.

现在我的问题与收据验证相关的必要流程有关:

  1. 如果用户购买了订阅,我的收据将自动更新来自该购买的信息?如果是这样,是否有必要在购买后立即验证收据,还是应该立即"解锁"应用程序?

  2. 在什么情况下我的收据会丢失NSBundle?如果发生这种情况,我想我应该使用SKReceiptRefreshRequest刷新收据,并将其发送到服务器进行验证.

  3. 如果用户在不同的设备上安装应用程序并恢复购买restoreCompletedTransactions,我是否会同时自动获取收据?我想我需要在恢复后验证收据,以确保有一个有效的订阅,对吗?

  4. 当我的服务器尝试验证收据,并且该收据无效时,应用程序端会发生什么?刷新收据(将要求用户提供凭据)并再次将其传递给服务器以进行新的重新验证?

subscription in-app-purchase ios auto-renewing receipt-validation

13
推荐指数
1
解决办法
1829
查看次数

关闭沙盒中iOS设备上的自动续订订阅

我已经在沙箱环境中成功设置并测试了应用内购买.但我有一个问题:

  • 在实际的应用内购买中,我可以通过以下链接关闭iOS设备上的自动续订订阅:http://support.apple.com/kb/HT4098? viewlocale = en_US&locale = en_US

  • 我想知道如何在沙盒环境中做同样的事情.我认为我们必须在App Store中登录以关闭自动续订下标,但测试用户帐户无法登录App Store.所以我认为我们无法关闭沙盒环境中的自动续订下标.

  • 如果是这样,我还需要一个简单的解释,为什么我们不能.

  • 感谢阅读,任何帮助或指示将不胜感激.

sandbox ios auto-renewing

11
推荐指数
1
解决办法
3494
查看次数

无法通过订阅优惠购买

我正在尝试使In-App Purchase订阅提供工作。因此,我从服务器获取了编码的签名,随机数,时间戳和密钥标识符。我创建一个SKPaymentDiscount对象并将其设置paymentDiscountSKMutablePayment对象。

在第一个弹出窗口中,它显示了预期的修改价格->输入密码,然后继续->第二个弹出窗口:确认订阅:确定->第三个弹出窗口:显示以下错误无法购买 与开发商联系以获取更多信息。

我尝试传递产品的不适用的商品标识。然后它抛出了正确的错误说:这不能应用于此。

PromoOfferAPI.prepareOffer(usernameHash: "name", productIdentifier: "bundleid.product", offerIdentifier: "TEST10") { (result) in
            switch result {

            case let .success(discount):
                // The original product being purchased.
                let payment = SKMutablePayment(product: option.product)
                // You must set applicationUsername to be the same as the one used to generate the signature.
                payment.applicationUsername = "name"
                // Add the offer to the payment.
                payment.paymentDiscount = discount
                // Add the payment to the queue for purchase.
                SKPaymentQueue.default().add(payment) …
Run Code Online (Sandbox Code Playgroud)

in-app-purchase node.js ios auto-renewing swift

11
推荐指数
1
解决办法
356
查看次数

iOS可再生订阅expires_date字段

在验证可更新订阅收据时,我试图获取最新收据的到期日期.

根据收据字段中的apple文档,"expires_date"字段应包含一个数字,该数字是自1970年1月1日00:00:00 GMT以来的毫秒数.(https://developer.apple.com/library/ios /releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1)

当我获取字段但是我收到一个带有来自"expires_date"字段的格式化日期的字符串.还有一个名为"expires_date_ms"的字段似乎提供了正确的数据.Apple声明"以下未记录的密钥保留供Apple使用,必须由您的应用程序忽略."

这是我收据的一个例子:

{"quantity":"1", 
 "product_id":"com.testapp.test",
 "transaction_id":"1000000135676121", 
 "original_transaction_id":"1000000135134855", 
 "purchase_date":"2014-12-15 06:53:54 Etc/GMT",  
 "purchase_date_ms":"1418626434059", 
 "purchase_date_pst":"2014-12-14 22:53:54 America/Los_Angeles",  
 "original_purchase_date":"2014-12-15 06:51:12 Etc/GMT",  
 "original_purchase_date_ms":"1418626272000",  
 "original_purchase_date_pst":"2014-12-14 22:51:12 America/Los_Angeles",  
 "expires_date":"2014-12-15 06:56:10 Etc/GMT",  
 "expires_date_ms":"1418626570000",  
 "expires_date_pst":"2014-12-14 22:56:10 America/Los_Angeles",  
 "web_order_line_item_id":"1000000028947356",  
 "is_trial_period":"false"
}]
Run Code Online (Sandbox Code Playgroud)

我应该使用哪个字段来获取最佳实践的过期日期?

subscription in-app-purchase auto-renewing

10
推荐指数
1
解决办法
2288
查看次数

如何使用 certbot 自动续订 TLS 证书?

我有一个带有 Nginx docker 容器的应用程序,在部署应用程序的主机(使用 Ubuntu 操作系统)中使用以下命令手动生成 TLS 证书:

certbot certonly --manual --manual-public-ip-logging-ok --preferred-challenges dns -d my.app.com
Run Code Online (Sandbox Code Playgroud)

当证书过期时,我必须更新它们。

但我不能certbot renew为此目的使用以下命令,因为它会给出错误:

$ sudo certbot renew

Failed to renew certificate my.app.com with error: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.')
Run Code Online (Sandbox Code Playgroud)

因此,我现在要做的是再次创建证书(使用certbot certonly之前使用的相同命令)而不是更新它们。

如何使用certbot renew命令修复错误?

我怎样才能自动化这个设置?

ubuntu manual ssl-certificate auto-renewing certbot

9
推荐指数
1
解决办法
2万
查看次数

如何确定iOS版本是否支持自动续订购买?

我今天特别密集吗?我正在开发一个应用程序,它需要为旧的iOS版本提供旧版订阅,并自动续订新版iOS的订阅.

通常情况下,我会使用respondsToSelector测试检查我想要使用的类中的适当的东西,但是我看不到storekit中有任何改变的东西可以让我进行测试.

那么我应该如何检查设备是否支持自动更新子设备?我知道我可以查看明确的iOS版本号,但我真的不想这样做.

我可以做一个更明智的检查吗?

iphone in-app-purchase ios auto-renewing

8
推荐指数
1
解决办法
359
查看次数

自动续订订阅:尽管未调用finishTransaction,app-store也会完成事务

我正在模拟在iPhone上的应用程序中购买自动续订订阅.我的问题是,购买被认为是由App商店完成的,而不是.

这是正在发生的事情:

  1. 用户按下按钮以购买续订订阅
  2. 用户提供其iTunes密码并确认购买
  3. 该应用程序将从应用商店收到的收据提交给我的服务器以检查有效性
  4. 服务器返回"ok"或"not ok"字符串.该应用仅在"ok"上调用finishTransaction

我在第3步出现网络故障时遇到问题.我无法验证收据.但是如果用户试图再次购买,应用商店会告诉他他已经订阅了,即使我没有调用该finishTransaction方法来完成购买!

这是预期的行为吗?app-store不应该将未完成的交易视为未完成交易,还是我错过了什么?我欢迎任何解决这个问题的建议.

-(void) userPurchase:(SKProduct*) product{
    SKPayment *payment = [SKPayment paymentWithProduct:product];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
}

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
    NSLog(@"paymentQueue updatedTransaction");
    for (SKPaymentTransaction * transaction in transactions) {
        switch (transaction.transactionState) {
            case SKPaymentTransactionStatePurchasing:
                break;
            case SKPaymentTransactionStatePurchased:
                [self recordSubscription:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                break;
            case SKPaymentTransactionStateRestored:
                [self recordSubscription:transaction];
                break;
            default: NSLog(@"Default");
                break;
        }
    };
}


-(void) recordSubscription:(SKPaymentTransaction*)transaction{
    NSString *jsonObjectString = [self encode:(uint8_t *)transaction.transactionReceipt.bytes length:transaction.transactionReceipt.length];
    NSMutableDictionary *params = [[NSMutableDictionary alloc] initWithObjectsAndKeys:jsonObjectString,@"receiptdata", …
Run Code Online (Sandbox Code Playgroud)

iphone in-app-purchase ios auto-renewing

8
推荐指数
1
解决办法
1455
查看次数

如何为免费续订订阅(iOS)授予免费月份?

我有不同的自动续订订购可能性iOS应用程序,我想提供它的用户,赚取免费一个月的时候,他们邀请朋友到应用程序的机会.

我知道如何处理我给一个尚未订阅的用户免费月份的情况,但我想知道如何处理一年中付费订阅中的用户并应该获得免费月份..

iphone subscription in-app-purchase ios auto-renewing

8
推荐指数
1
解决办法
289
查看次数