从 OSP 迁移到 SDK 集成
概述
本次迁移将 一步支付(OSP) 集成替换为新的 Android Billing SDK 集成。该 SDK 将基于 URL 的计费流程和外部网页回调,替换为直接连接到 Aptoide Wallet 的、集成度更高的客户端。
开始之前,请查阅 Android Billing SDK 文档,以正确实现所有必要的代码更改。
集成规范
OSP 集成(当前实现)
- 计费流程:
- 在你的服务器上生成已签名的 OSP URL。
- 使用该 URL 启动 Intent。
- Aptoide Wallet 处理支付。
- 向你的 Web 服务端点发送 POST 回调。
- 你的服务器验证交易后再发放商品。
- 主要特征:
- 使用基于 URL 的支付调用。
- 需要服务器端端点和 URL 签名生成。
- 钱包通过外部方式(通过 Intent)调用,并通过回调通知应用。
- 简单的用户获取,不具备任何主要功能。
- 除 Consumables(消耗型) 外,不支持任何商品类型。
Android Billing SDK 集成(新实现)
- 计费流程:
- 通过
AppcoinsBillingClient与 Android Billing SDK 建立连接。 - 直接从 Aptoide Connect 查询
products。 - 通过 SDK 启动 Aptoide Wallet,开始购买流程。
- 使用应用内回调(
PurchasesUpdatedListener)处理购买结果。 - 验证购买以确保其合法性并避免欺诈。
- 消耗购买,以便在需要时可以重新购买该商品。
- 通过
- 主要特征:
- 提供无缝的应用内计费体验。
- 消除了对外部 URL 生成和网页回调的需求。
- 使用原生 Android 组件和异步回调。
- 具备用于改进用户获取和奖励的 D2C 功能。
- 无缝支持 Subscription(订阅) 类型的商品。
OSP 集成与 SDK 集成之间的主要区别
OSP 集成与 SDK 集成之间的主要区别如下:
| 方面 | OSP 集成 | Android Billing SDK 集成 |
|---|---|---|
| 支付调用 | 使用已签名的 URL 启动 Intent | 使用 Billing client 开始购买流程 |
| 交易处理 | 交易完成时的 Web 服务回调 | 通过 PurchasesUpdatedListener 的应用内回调 |
| 服务器参与 | 必须在服务器上生成已签名的 URL | 服务器端逻辑极少;公钥通过 Console 提供;可使用 RTDN 在服务器端通知购买状态 |
| 商品查询 | 不需要;商品详情在 Aptoide Connect 中注册或手动获取 | 通过 querySkuDetails 直接从 Aptoide Connect 查询商品 |
| 购买消耗 | 不适用(通过回调处理) | 必须使用 consumeAsync 显式消耗购买 |
| 维护 | 对于含破坏性更改的功能,需要手动更新和调整 | 由 SDK 内部管理,减少维护工作量 |
其他注意事项
待处理的购买
为了正确处理任何待处理的购买,在与 Billing Client 建立连接后,立即使用 queryPurchases 方法检查任何待处理的购买,并消耗那些已通过验证的购买。这可确保任何未完成的交易得到妥善处理。
线程
Android Billing SDK 要求某些调用(尤其是网络调用)在 IO 线程中执行。请特别注意那些需要此更改的调用,以使你应用的 UI 保持流畅和响应。
购买识别
在购买流程中使用 developerPayload(例如,用户 ID 或内部订单 ID),以进一步将购买与用户关联。
测试
使用提供的测试凭据和示例实现(例如 Diceroll SDK sample),在将新集成推广到生产环境之前验证其是否正常工作。
常见问题
如果计费服务尚未就绪会发生什么?
SDK 在 billing client 上提供了 isReady 方法,用于确认 Billing Client 的就绪状态。在发起任何购买流程或查询购买/Sku Details 之前,请务必检查此项。
我是否仍需管理服务器端回调?
不需要。Android Billing SDK 通过 PurchasesUpdatedListener 在应用内处理交易更新。这消除了对单独的服务器端回调端点的需求。你可以使用 RTDN 来验证 Subscriptions 和 Voided Purchases 中的变更。
我该如何消耗购买?
使用 SDK 提供的 consumeAsync 方法来消耗购买。如果购买未在 48 小时内被消耗,它将被自动退款。
我应该多久更新一次 SDK 的版本?
更新 SDK 版本不是强制性的,但请记住,每个新版本都会为 SDK 带来重要的功能和改进。请尽量保持版本为最新,因为这在大多数情况下只需提升版本号即可。
我该如何避免欺诈并确保购买的合法性?
为确保你在客户端应用程序中收到的购买是合法的,请遵循应用内购买验证页面中的指南。