如何使用 Stripe 在 Web 上配置订阅并在 iOS 和 Android 上授予用户访问权限

实施可更新订阅是一项艰巨的任务,尤其是如果您之前没有处理过第三方支付处理器的 API,例如 StoreKit、Google Billing Library、Stripe。当您需要同时支持多个平台时,它变得更加困难。您会发现管理跨平台订阅具有挑战性,因为您需要解决技术集成的复杂性、考虑不同平台的政策和要求、找到管理订阅状态(取消、升级、降级等)和分析的正确方法.

同时,跨平台订阅管理为您的用户提供随时随地在任何设备上的最佳用户体验,并让您降低平台费用(应用商店为 15-30%,Stripe 为 2-3%——感受不同)。

现在让我们深入研究 Web 部件并探索如何配置 Stripe 支付并授予您的用户在 iOS 和 Android 应用程序上的高级访问权限。

将 Stripe 连接到 Qonversion

第一步是将 Qonversion 连接到您的 Stripe 帐户。导航到您的 Qonversion 项目设置。选择 Stripe 并打开 Stripe 开关。

这将带您进入 Stripe 登录页面。如果您有现有的 Stripe 帐户,请单击连接,如果需要,请创建一个新帐户。如果您的 Stripe 帐户尚未激活,您需要激活它(添加业务详细信息、银行信息等)。

设置 Stripe 产品和权限

假设您已经拥有包含 Apple 和 Google 产品商店标识符的 Qonversion产品。如果您想使用 Stripe 销售类似产品,请使用 Stripe 产品 ID 更新 Qonversion 中的现有产品。

Stripe 产品 ID 可以在 Stripe Dashboard 的 Products 选项卡中找到。只需选择产品并复制页面右上角显示的 ID。

确保您的 Qonversion 产品与指示用户高级状态的权限相关联。

如果您只想在网络上销售订阅,您可以将 Qonversion 产品详细信息中的 Apple Store 和 Google Play 产品 ID 字段留空。

将 Stripe 购买数据发送到 Qonversion

您可以直接调用API 方法或在您的 Web 应用中使用我们的Web SDK将 Stripe 订阅数据发送到 Qonversion。选择最适合您的方法。如果您以前从未使用过 API 端点,我们的建议是使用 Qonversion Web SDK 发送 Stripe 购买数据。

1. API 方法

Qonversion 提供高性能 REST API,允许您创建和识别用户、发送购买数据、获取用户权利等。本文的这一部分介绍了您应该使用的方法,以便基于 Stripe 购买获得跨平台访问。

1.1 创建用户

在开始发送 Stripe 购买数据之前,您需要创建一个用户。用户是具有以下端点的用户对象的跨平台实体:

POST https://api.qonversion.io/v3/users/:user_id

User_id是将为该用户注册的 Qonversion 用户 ID。让我们在此示例中aa47b6fa使用以下标识符。user_id

1.2 识别用户

用户身份允许跨平台的用户识别和访问管理。身份管理基于跨不同平台的支付的用户访问。您可以在我们的文档中找到有关身份的更多信息。

使用Identity方法识别用户:

POST https://api.qonversion.io/v3/identities/:identity_id

identity_id始终使用唯一的 ID 值。否则,用户可以匹配到另一个用户的高级状态。您可以将内部系统中的用户 ID 用作identity_id. 在我们的示例中,我们将使用stripe_aa47b6faas identity_id

1.3 发送购买

在这里,我们进入了最有趣的部分。现在一切准备就绪,可以将用户购买数据发送到 Qonversion。为此使用购买端点

POST https://api.qonversion.io/v3/users/:user_id/purchases

下面是带有您应该与方法体一起转发的参数的示例:

{
"currency": "USD",
"price": "100",
"purchased": 1659428809,
"stripe_store_data": {
   "subscription_id": "sub_1LSGVgL9K6ILzohYq5GCbktn",
   "product_id": "prod_MAbVQQaljmF6gm"
 }
}

为了授予用户有效权限,product_id必须与您在上一步中提供给 Qonversion 产品年鉴的 Stripe 产品标识符相同。Subscription_id是Stripe Subscription 对象的标识符。其余参数的描述可以在我们将 Stripe 购买数据发送到 Qonversion 的指南中找到。

如果购买成功创建,响应将如下:

{
   "currency": "USD",
   "price": "100",
   "purchased": 1659008000,
   "stripe_store_data": {
       "product_id": "prod_MAbVQQaljmF6gm",
       "subscription_id": "sub_1LSGVgL9K6ILzohYq5GCbktn"
   },
   "user_id": "aa47b6fa"
}

您现在可以检查您的 Qonversion 帐户中的客户选项卡来寻找您的客户。搜索可通过 Qonversionuser_id(aa47b6fa)identity_id(stripe_aa47b6fa):

以下是您可以在 Qonversion 仪表板中快速查看的客户级别详细信息,包括购买产品的价格和日期:

成功发送购买后,Qonversion 基础架构会处理所有订阅更改,例如续订、试用转换、退款等。这会影响用户权限并反映在我们的分析仪表板中。

1.4 获取权利

此时,您应该能够收到在上一步中配置的活动权限(设置 Stripe 产品和权限)。在我们的示例中,这是具有高级 ID 的权限。调用以下方法检查权限:

GET https://api.qonversion.io/v3/users/:user_id/entitlements

您可以在下面看到带有权利响应的示例:

{
   "data": [
       {
           "active": true,
           "expires": 1690965033,
           "id": "premium",
           "product": {
               "product_id": "annual",
               "subscription": {
                   "current_period_type": "normal",
                   "renew_state": "will_renew"
               }
           },
           "started": 1659429033
       }
   ]
}

2.网络SDK

Web SDK 是一个 TypeScript 浏览器客户端 SDK,它在底层与 Qonversion API 交互。使用 Qonversion 的 Web SDK,您可以轻松识别用户、发送购买、自定义用户属性、检查授权状态,但仍然需要在后端接收授权状态。您会发现 SDK 是一种更灵活、更方便的方式,可以将数据从您的 Web 应用程序共享到 Qonversion。

2.1 启动Qonversion Web SDK

您可以在此处的文档中找到有关如何启动 SDK 的详细信息。您需要调用该方法并作为参数Qonversion.initialize传递:QonversionConfigBuilder

const qonversionInstance = Qonversion.initialize(config);

2.2 使用Qonversion Web SDK识别用户

用户身份允许跨平台的用户识别和访问管理。身份管理基于跨不同平台的支付的用户访问。您可以在此处的文档中找到有关身份的更多信息。

使用方法识别用户identify

await qonversionInstance.identify('identity_id');

始终使用唯一的 ID 值identity_id。否则,用户可以匹配到另一个用户的高级状态。您可以将系统中的内部用户 ID 用作identity_id. 在本例中,我们将使用stripe_aa47b6faas identity_id

2.3 发送购买

收集条带购买数据并调用sendStripePurchase method

сonst stripePurchaseData: PurchaseCoreData & StripeStoreData = {
  currency: 'USD',
  price: '100',
  productId: 'prod_MAbVQQaljmF6gm',
  purchased: 1659008486,
  subscriptionId: 'sub_1LSGVgL9K6ILzohYq5GCbktn'
};

const purchase = await qonversionInstance.sendStripePurchase(stripePurchaseData);

为了授予用户有效权限,product_id必须与 Qonversion 产品中的 Stripe 产品标识符相同annual(请参阅上一步设置 Stripe 产品和权限)。Subscription_id是Stripe Subscription 对象的标识符。

如果购买创建成功,响应如下:


{
  currency: 'USD',
  price: '100',
  purchased: 1659008486,
  stripeStoreData: {
    subscriptionId: 'sub_1LSGVgL9K6ILzohYq5GCbktn',
    productId: 'prod_MAbVQQaljmF6gm'
  }
}

您可以查看 Qonversion 帐户中的客户选项卡以查看该用户的详细信息。您可以使用identity_id(stripe_aa47b6fa)以下方式查找客户:

您可以查看用户级别的详细信息,包括购买的产品价格和购买日期:

成功发送购买后,Qonversion 基础架构会处理所有订阅状态,例如续订、试用转换、退款等。它会影响用户权限并显示在分析中。

2.4 获取权利

此时,您应该获得在上一步中配置的活动权限(设置条纹产品和权限)。在我们的示例中,这是一个带有premium ID. 调用getEntitlements方法:

const entitlements = await qonversionInstance.getEntitlements();

在移动应用上获取订阅状态并解锁高级访问权限

最后一步是在 iOS 或 Android 移动应用上获取订阅状态以处理用户访问。启动应用程序并调用identify方法:

iOS

Qonversion.identify("identity_id")

安卓

Qonversion.identify("identity_id")

Identity ID必须与您在网络上识别用户时使用的相同。

然后调用checkPermissions方法:

iOS

Qonversion.checkPermissions { (permissions, error) in
  if let error = error {
    // handle error
    return
  }
  if let premium: Qonversion.Permission = permissions["premium"], premium.isActive {
    // handle the permission
  }
}

安卓

Qonversion.checkPermissions(object: QonversionPermissionsCallback {
    override fun onSuccess(permissions: Map<String, QPermission>) {
        val premiumPermission = permissions["premium"]
        if (premiumPermission != null && premiumPermission.isActive()) {
        // handle the permission
        }
    }
    override fun onError(error: QonversionError) {
        // handle error here
    }
})

正如您在此处看到的,移动应用程序用户具有基于他的条带订阅的权利(访问级别)。

结论

本文演示了如何根据用户的 Web 订阅来管理用户对移动应用程序的访问。实施快速而直接。

实施跨平台订阅管理后,您可以在 Qonversion 分析仪表板中轻松跟踪每个平台的性能。此外,Qonversion 提供了一组工具来利用您的订阅数据,包括集成、Apple Search Ads 归因和推送通知。

链接:https://dev.to/qonversion/how-to-configure-subscriptions-on-the-web-with-stripe-and-grant-users-access-on-ios-and-android-1pfb

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容