标签: in-app-subscription

如何在inapp v3 android中获取订阅到期日期

嗨,我已经使用android-inapp-billing-v3为一个项目实现了一年订阅的 inapp billing V3。我想在我的应用中显示剩余天数。我打电话是getSubscriptionTransactionDetails为了获取产品的交易详细信息,但它总是返回null。这是我的代码。

  private BillingProcessor startInappCheck(){

         bp = new BillingProcessor(mContext, BASE64ENCODEDPUBLICKEY, new BillingProcessor.IBillingHandler() {
                @Override
                public void onProductPurchased(String productId, TransactionDetails details) {
                    LogUtils.e(TAG, "onProductPurchased :" +productId);
    //              showToast("onProductPurchased: " + productId);

                }
                @Override
                public void onBillingError(int errorCode, Throwable error) {

                    LogUtils.e(TAG, "onBillingError :" +errorCode);


                }
                @Override
                public void onBillingInitialized() {
  //                showToast("onBillingInitialized");
                    readyToPurchase = true;



                    try{
                        SkuDetails subs = bp.getSubscriptionListingDetails(SUBSCRIPTION_ID);


                        LogUtils.d(TAG, "Owned Subscription: " + subs.toString());
                       TransactionDetails tr = bp.getSubscriptionTransactionDetails(SUBSCRIPTION_ID);
                      LogUtils.d(TAG, …
Run Code Online (Sandbox Code Playgroud)

android in-app-purchase in-app-billing in-app-subscription

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

Google Play订阅免费试用版

有什么方法可以检查用户是否已经使用过他的免费试用版?

当我查询sub时,我得到了下一个数据:

[
    SkuDetails:{
        "productId":"...",
        "type":"subs",
        "price":"...",
        "price_amount_micros":0000,
        "price_currency_code":"USD",
        "subscriptionPeriod":"P1M",
        "freeTrialPeriod":"P1W1D",
        "title":"...",
        "description":"..."
    }
]
Run Code Online (Sandbox Code Playgroud)

当用户使用免费试用版时,此字段"freeTrialPeriod":"P1W1D"会消失吗?或者也许有其他方法可以知道它?

我需要显示"免费"而不是订阅价格,然后在用户使用免费试用版后显示实际价格

android in-app-billing google-play in-app-subscription

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

Skproduct 跳过产品,因为没有可用价格

这是我第一次创建购买的经历。我正在开发的应用程序尚未发布。我一直在使用 Configuration.storekit 文件在本地测试订阅。一切正常。\n我最近遇到了一个问题 - 我的订阅不再显示在项目中。我在终端中收到如下错误:\n终端输出的图像

\n

更新:

\n
    \n
  • 我决定在模拟器上检查应用程序,一切正常。据我记得安装 xcode 14 并更新到 ios 16 后一切都崩溃了。
  • \n
  • 在物理设备上,问题仍然存在。
  • \n
\n

我没有更改那些地方的代码。我尝试创建新的 .storekit 文件,但仍然不起作用。\n我尝试通过同步加载 .storekit 文件。在其中,价格被拉高并正确显示,与网站上一样,但在终端中再次写入相同的错误。

\n

这是适用于购买的文件:

\n
import StoreKit\n\ntypealias RequestProductsResult = Result<[SKProduct], Error>\ntypealias PurchaseProductResult = Result<Bool, Error>\n\ntypealias RequestProductsCompletion = (RequestProductsResult) -> Void\ntypealias PurchaseProductCompletion = (PurchaseProductResult) -> Void\n\n\nclass Purchases: NSObject {\n    static let `default` = Purchases()\n    private let productIdentifiers = Set<String>(\n        arrayLiteral: "test.1month", "test.6month", "test.12month"\n    )\n\n    private var products: [String: SKProduct]?\n    private var productRequest: SKProductsRequest?\n    private var productsRequestCallbacks …
Run Code Online (Sandbox Code Playgroud)

storekit in-app-purchase skproduct swift in-app-subscription

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

如何在app game google play中实现自动续订

我正在研究使用Google Play在应用结算中实施自动续订订阅的方法.我阅读了https://developer.android.com/google/play/billing/billing_subscriptions.html并查看

结算以指定的间隔和价格无限期地继续.在每次续订时,Google Play会自动向用户帐户收费,然后通过电子邮件通知用户这些费用.对于月度和年度订阅,结算周期将始终根据购买日期与订阅周期匹配.(季节性订阅每年收费,在季节的第一天.)

订阅付款获得批准后,Google Play会通过应用内结算API向购买应用提供购买代币.您的应用可以在本地存储令牌或将其传递给后端服务器,后端服务器可以使用它来使用Google Play Developer API远程验证或取消订阅.

那么有什么方法可以让我的服务器知道用户的订阅何时更新?而不是谷歌播放发送新的账单订阅到Android应用程序之后,该Android应用程序将此新账单发送到我的服务器只是为了验证.

谷歌播放时可以在用户订阅续订时向我的服务器发送通知,例如通过电子邮件通知用户?我想谷歌播放发送给我一个通知,用户的订阅自动续订,以便我的后端将更新到期应用程序增加他们的订阅.每次用户打开商店时都不需要Android应用程序检查账单来检查是否有来自goole的新账单充电自动化.它实施吗?

我的工作跟进

  1. Google收取新的周期订阅并通知我的服务器{body,例如bundId,bill,product_id或订阅包名称,到期日期......),还向用户发送有关其续订订阅自动化的邮件.
  2. 我的服务器确定用户的更改订阅,并通过google play api验证应用购买,并在验证有效时更改应用中的expire包订阅.
  3. 在我的数据库中存储最新的账单

那可能吗?

[更新]推荐来自goolge play api doc

建议:在您的应用中包含业务逻辑,以通知您的后端服务器订阅购买,令牌以及可能发生的任何计费错误.您的后端服务器可以使用服务器端API查询和更新您的记录,并在需要时直接跟进客户.

如何实施谷歌API,任何文档或教程的推荐?

in-app-billing in-app-subscription

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

有没有办法检索用户是否已取消Android In App订阅

我正在使用谷歌应用内结算v-3来实施订阅.

我的订阅有一周的跟踪期,UI显示"Avail A Week Free"视图.
如果用户因任何原因订阅和取消,我需要显示"UpGrade"视图.

据我搜索,我了解到如果用户在活动订阅期间取消订阅,INAPP_PURCHASE_DATA_LIST autoRenewing标志将返回false.在订阅期结束后,getPurchase()可能返回空.

在这种情况下,我如何知道要显示哪个UI,因此当订阅到期和用户未订阅时,getPurchase()将为两者返回空.

android in-app-subscription

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

Google Play订阅始终为“待付款”

我很难理解为什么我在Google Play开发者控制台中几乎所有(90%)的活动订阅都处于“待付款”状态,尽管订阅已超出试用期和宽限期,并且订阅状态为“活性”。

我尝试自己支付订阅费用,并且一切正常。

有谁知道是什么原因造成的?任何提示都欢迎。

android subscriptions google-play in-app-subscription developer-console

8
推荐指数
0
解决办法
511
查看次数

获得有效的订阅,应用内结算Android

我已使用应用内结算库在应用中添加订阅。一切正常,但是我找不到如何获得用户当前有效的订阅?

根据docs,该方法queryPurchaseHistoryAsync将返回用户针对每个SKU进行的最新购买,即使该购买已过期,取消或消费了。因此,我不知道当前的订阅是否处于活动状态。

根据帖子,如果我们取消订阅,则该订阅仍将被视为当天有效。但是我得到的响应中的订阅已在15天之前被取消。

任何帮助将不胜感激。提前致谢。

android in-app-billing google-play in-app-subscription play-billing-library

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

是否需要使用自动更新的Android应用程序内订阅?

在阅读了有关Android应用程序内产品和订阅的文档后,我仍然停留在询问有关应用程序内自动续订的消费过程的问题。

Google对消费的评价

由您决定是否要将被管理产品作为非消耗品或消耗品处理

非消耗品

通常,您不会为只能在应用程序中购买一次并提供永久利益的被管理产品实施消费。购买后,这些产品将与用户的Google帐户永久关联。非消耗型被管理产品的一个示例是高级升级或级别包。

消费品

相反,您可以对可以多次购买的产品实施消费。通常,这些产品会提供某些临时效果。例如,用户的游戏角色可能会获得生命点或在其库存中获得额外的金币。在您的应用程序中分配所购买产品的收益或影响称为供应被管理产品。您负责控制和跟踪如何将被管理产品配置给用户。


另一方面,Google Play结算告诉我们,我们提供以下类型的应用内商品:

  • 一次性产品(被管理产品)
  • 奖励产品
  • 订阅内容

阅读此书,我们可能认为订阅不是托管产品。

我正在尝试重新开发应用程序的一部分,目前,当前版本获取库存(使用IabHelper),获取最近一次的每月购买量(由Google自动进行),将信息发送到我们的API以再次获得用户溢价,在API结果之后消耗最后一次购买。

因为我现在直接从我们的API检查每月付款,所以要从Android应用程序中删除此部分: 我们是否绝对必须通过自动更新Google应用程序内来自动使用每月购买程序?

java android in-app in-app-subscription

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

使用服务器到服务器通知和 Firebase Cloud Functions 对 iOS 和 Android 自动续订订阅进行服务器端验证

我已成功为 Google Play 实施订阅验证,但我很难理解 iOS 自动续订订阅的验证流程,想寻求您的帮助。以下是 Google Play 的高级逻辑:

新订阅验证

  1. 用户在应用程序中购买订阅。
  2. 在我的 Firestore 数据库中创建了一个SubscriptionRequest,其中包括UserID和交易令牌
  3. 云函数获取该SubscriptionRequest并使用令牌查询相关的 Google API以获取订阅详细信息。这是使用googleapis Node.js 库完成的。
  4. 最新的订阅详细信息作为Subscription保存在 Firestore 中,包括令牌(作为linkedPurchaseToken)和UserID
  5. 认购的截止日期进行评估,如果它没有过期,该用户在火力地堡被更新,标志hasActiveSubscription设置相应(包括订阅的谷歌播放标识,如monthly_sub,或annual_sub和平台,在这个案例安卓)。

Google Play 开发者通知

  1. 通过发布/订阅云功能接收通知。
  2. 将使用相关的 Google API 和通知中的令牌获取相应的订阅详细信息。
  3. 如果数据库中不存在具有该令牌的订阅(如linkedPurchaseToken),我们将尝试使用在(2)中获取的订阅详细信息中的linkedPurchaseToken在我们的数据库中查找现有订阅
  4. 如果在数据库中仍然找不到订阅,这显然意味着它是一个新订阅,它将通过上述新订阅验证过程专门处理。这样做的原因是我无法链接我的用户 ID和订阅。
  5. 如果找到订阅,它会更新为最新的详细信息。 …

notifications server-to-server ios firebase in-app-subscription

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

每个应用有多个应用内订阅

我们正在开发一个应用程序,其中一些经过验证的用户可以通过订阅来销售他们的内容。


内容是由视频、照片和提示组成的数字内容。

我们想提供按月订阅的付费内容。我研究了一些应用程序,通常你有所有付费内容的自动更新订阅。

但是,我们的客户希望为每个提供付费内容的用户提供单独的订阅


这意味着每个内容消费者(用户)将能够拥有无限数量的并发订阅,因为他们将能够订阅他们想要的任何内容提供商。


我的问题:

  1. 我描述的内容提供商的内容是否符合订阅数字内容类型?因为内容提供者是创建它的人,而不是我们。我们也不能保证新内容的任何形式的定期发布。
  2. 对于苹果来说,非消耗性产品不是更好的选择吗?我研究过我们应该为每个内容提供者使用单独的订阅组,这样用户可以一次订阅多个用户。但是我在其他应用程序中没有找到类似的模型。苹果不会将其视为滥用应用程序类型并要求我们使用例如非消耗性产品吗?来源因为前段时间我们误解了指南并使用了错误的产品类型,重做整个流程以发布应用程序真的很痛苦。此外,我没有得到苹果对我们应用程序内设计的验证,因为除非应用程序正在审核中,否则他们无法咨询此类内容。

我们目前正在研究的其他选项:我们正在考虑允许用户访问特定数量用户的付费内容的层数:

  • $x 用于访问 1 个选定提供商的内容
  • $x 用于访问 5 个选定提供商的内容
  • $x ....
  • $x 用于访问所有付费内容

所有订阅都在同一个组中,每个订阅都有不同的级别。当用户购买产品时,他们可以选择访问哪些付费内容(不切换/或每月切换)。

最后的问题:

  1. 苹果可以接受这个选项吗?我认为这是有风险的,并且向用户解释所有条件可能会很痛苦。然而,用户不必管理几十个订阅,并且只有一个。此外,我们不必为每个内容提供商手动创建订阅产品。

in-app-purchase ios in-app-subscription

7
推荐指数
0
解决办法
336
查看次数