android - 应用内结算 (Android) 中的恢复交易如何运作?

标签 android transactions restore billing in-app

我试图搜索那个问题,但没有得到很多信息。我只知道:
- 在用户第一次安装应用程序或用户卸载/删除数据时重新安装时恢复。
- 恢复交易仅适用于被管理产品。
我试图阅读 Dungeon Example,关于恢复事务的代码很少,例如:何时调用恢复请求,何时获得恢复响应......但我不知道:
- 如何获取返回信息? (如您购买的商品编号)

请大侠再次解释一下In-App billing中恢复交易的流程。

非常感谢!!!

编辑:很抱歉,我很久没有在 Android 上工作了,现在我不知道这个问题的正确答案是什么,所以我不能标记答案:P

最佳答案

典型流程如下:

  1. 用户安装您的应用。

  2. 首次加载您的应用时,您检查是否需要恢复 购买。

  3. 如果您这样做,请向 Google 发送 RESTORE_TRANSACTION 同步请求。

  4. Google 将对您的回复做出确认回复 RESTORE_TRANSACTION 请求。 (这只是承认 他们收到了你的请求。)

  5. 此时,您应该标记您已经向 Google 发送了恢复请求,并且不需要从该应用发送进一步的恢复。

  6. 现在,对于用户之前购买的每次应用内购买,Google 将开始异步向您的应用发送“PURCHASE_STATE_CHANGED”事件。此调用与用户首次购买时 Google 发送的调用相同

  7. 由于是同一个调用,您的应用会接收事件并正常处理它,就好像用户刚刚购买了应用内产品(从而“恢复”购买的功能)。

关于第 2 步和第 5 步,我为我的应用所做的是保留名为“APP_INITIALISED”的 SharedPreference 值,该值默认为 false。每次我的应用程序启动时,如果“APP_INITIALISED”为 false,我会告诉 Google RESTORE_TRANSACTION(第 2 步),然后我将 APP_INITIALISED 设置为 true(第 5 步)。

关于android - 应用内结算 (Android) 中的恢复交易如何运作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7924696/

相关文章:

sql-server - 版本与此服务器版本不兼容。如何升级?

spring - 了解 Spring Test 中的事务

c# - 在数据库上执行 "atomic"操作 "IncreaseIf"

android - 检查 Recyclerview Adapter 中的单选按钮状态并从 MainActivity 对其应用更改

java - Android - 时钟滞后

python - 如果引发异常,如何使 Flask-SQLAlchemy 自动回滚 session ?

android - 安装应用程序是否会删除 SQLite 数据库或 SharedPreferences

installation - 从命令 : ado dir 生成的列表中重新安装软件包

android - DrawerLayout 的 item click - 什么时候替换 Fragment 合适?

android - 使用 paypal 进行应用内购买 [android]