如何处理 Google Play 中的待处理购买

2024-03-20

我们的大多数购买在 3 天 30 分钟后不断被取消,我认为这是待购买状态的结果。然而,关于如何准确处理待处理购买的文档却很少。而且,由于某种原因,即使我自己是测试人员,我也无法测试它,因为购买方式上没有“慢卡”选项。此外,我们没有后端服务器来支持我们。

这是我从官方文档中找到的解释:

void handlePurchase(Purchase purchase) {
    if (purchase.getPurchaseState() == PurchaseState.PURCHASED) {
        // Acknowledge purchase and grant the item to the user
    } else if (purchase.getPurchaseState() == PurchaseState.PENDING) {
        // Here you can confirm to the user that they've started the pending
        // purchase, and to complete it, they should follow instructions that
        // are given to them. You can also choose to remind the user in the
        // future to complete the purchase if you detect that it is still
        // pending.
    }
}

看一下上面的解释PENDING状态。 “要完成购买,他们应该遵循向他们提供的说明”是什么意思?这些指令到底是什么?我们需要将用户重定向到 Google Play 还是什么?它并没有具体说明要做什么,而且让我很烦恼,因为购买无缘无故地被取消,或者因为这个原因。如何完成待定购买?没有任何关于它的东西,或者我找不到它,所以我最终来到了这里。

我希望你能帮我解决这个问题。谢谢。


我同意文档很差,特别是因为你想确切地知道发生了什么是当你处理别人的钱时!

看起来“慢卡”交易实际上是“待购买”,谷歌一直在这样做推出 https://9to5google.com/2019/05/09/google-play-store-cash/2019 年。这是可能的流程......

  • 在您的应用中,用户点击“立即购买”
  • 他们看到 Google 结账叠加层
  • 他们选择“在阿克拉 Freddina's Grocery 付款”(已签约处理 Google 待处理购买的当地商店)
  • Google 结账时会显示一个代码以向 Freddina 展示
  • 用户向 Freddina 支付现金,Freddina 使用该代码处理付款
  • 大约 10 分钟后,购买更新将登陆您的应用程序

至于处理不可预测的定时更新事件,我们有一个应用程序handlePurchaseUpdated方法从应用程序启动的那一刻起监听,并根据Purchase随之而来的对象。这是一个示例流程:

  • 应用程序启动后,我们会立即监听购买更新
  • 用户购买缓慢
  • 我们收到购买更新
  • 已通过的Purchase对象的购买状态为 PENDING
  • 我们告诉用户,购买完成后我们会通知他们
  • 在未来的某个时刻(例如应用程序重新启动后的第二天),购买更新将会出现
  • 如果购买状态现在为“已购买”,我们将完成购买并告诉用户

注意:我们的应用程序是 React Native 应用程序,不是原生 java,但流程应该是相同的。

实施起来很复杂,因为您必须选择时间进行购买更改并在有意义的时间显示购买结果,而不一定是在启动后 5 秒(或任何其他奇怪的时间)购买更新到达时。如果在授予权利或确认步骤期间出现错误,事情会变得更加复杂,呃。

此外,您可能看不到“慢卡”测试仪选项,因为您没有allow it https://developer.android.com/google/play/billing/billing_library_overview#pending?


2022 年更新:就我个人而言,我觉得文档仍然很差,而且复杂性很大,我建议使用类似的服务IAPHUB https://www.iaphub.com/管理 iap 和订阅。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理 Google Play 中的待处理购买 的相关文章

  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • 在 Android 中长按时从操作模式中删除后退/主页按钮

    我已经在里面长按实现了上下文操作模式recycler view 为此我打电话给ActionModeCallback从创建动作模式开始 创建动作模式时 默认显示后退箭头 检查如下 单击后退箭头 操作模式将关闭 现在我想要hide or rem
  • FileNotFoundException:/存储/模拟/0/Android

    我尝试这个文件写入器 读取器代码段进行测试 File file new File Environment getExternalStorageDirectory LM lm lisdat 01 txt FileOutputStream ou
  • Retrofit-2 内容类型问题

    我的 Api 接受 Content Type application json 作为标头 我按照改造文档中所述完美设置了标题 Headers Content Type application json POST user classes C
  • Youtube 退出全屏模式 TextView 可见性问题

    我正在全屏模式下播放视频 当我单击后退按钮时 我可以退出全屏模式 但无法显示我在全屏情况下隐藏的 TextView 要在全屏模式下隐藏 textView 我使用以下代码 Override public void onInitializati
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • 应用内结算错误

    我的 UNMANAGED 应用内购买无法正常工作 在它完美运行之前 我可以使用测试帐户成功购买 但它突然不起作用了 因为我记得我对商家帐户所做的只是添加更多 2 4 个测试帐户 添加后 我的应用内购买将不起作用 所以我更新了公钥并上传了一个
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • 如何持续更新MPAndroidChart中的Y轴值

    我希望 LineChart 中的轴能够实时调整其最大值和最小值 当新数据的 Y 值增加 正值和负值 时 像 ResetAxisMaxValue 和 ResetAxisMinValue 这样的函数可以很好地工作 但是 一旦信号再次变低 Y 值
  • 如何使用 Firebase UI 在 recyclerView 中显示时从 Firebase 数据库中的子级引用父级

    我目前正在引用 quote text 子项 这些数据显示在recyclerview using firebase用户界面 我想获取 quote text 的父名称 如何获取 quote text 孩子的父母姓名 When user clic
  • 导航抽屉默认片段

    我是一名新手开发人员 我正在将导航抽屉与 android support v7 集成到我的应用程序中 我有一个问题 当我启动应用程序时 主要布局是这样的
  • 以编程方式将 TextView 添加到主屏幕小部件

    我想以编程方式将文本视图控件添加到我的主屏幕小部件 在下面的示例中 我使用 TextView 填充 Linearlayout 但是这里应该如何使用 RemoteView 它只接受 xml 资源布局作为参数 public class MyWi
  • 在 Jetpack Compose 中跨可组合函数重复使用一组预览注释

    在 Jetpack Compose 中迈出第一步 这非常令人惊奇 除了一个恼人的问题 我有一组固定的预览 正常 深色和 RTL Preview name Normal group Screen showBackground true Pre
  • 从 TextView 中显示的数字中删除小数点[重复]

    这个问题在这里已经有答案了 对于我的简单计算器 我将结果显示在TextView 但它总是显示小数 我怎样才能删除它们 这是我的代码 public class MainActivity extends Activity implements
  • JavaDoc 在 Android 项目中不起作用

    我在 Ubuntu 10 04 上使用 Eclipse 3 5 2 进行 Android 开发 我安装了 来自 Ubuntu 存储库的 Sun JDK Eclipse 3 5 2 经典 来自 eclipse org 解压到 opt ecli
  • BottomSheetDialog get Behavour 始终返回 null

    我与底部表单对话框我必须获得行为才能设置setBottomSheetCallback 来处理一些事情 As 谷歌说 https android developers googleblog com 2016 02 android suppor
  • Android 从命令行停止模拟器

    这个问题与如何通过命令行关闭Android模拟器 https stackoverflow com questions 5912403 how to shut down android emulator via cmd 但是 在尝试第一个答案
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi

随机推荐

  • Python 中的视频和语音聊天可操作性

    我正在尝试寻找有关 Python 中视频和语音聊天可操作性的资源 有人知道一些好的资源或示例项目吗 任何帮助将不胜感激 如果你想要更高层次的东西你可以尝试Empathy http live gnome org Empathy 它具有 pyt
  • ElasticSearch 映射不起作用

    我正在尝试为各个字段使用不同的分析器设置 ElasticSearch 索引 但是 我似乎找不到设置特定领域分析器的方法 这是我创建 测试 索引的方法 curl XPOST localhost 9200 twitter curl XPUT h
  • 标记活动 Clear Top 会破坏目标活动而不是创建它

    我正在观察 Intent FLAG ACTIVITY CLEAR TOP 的行为 例如我有三项活动 A B C 现在流程是A gt B gt C 现在 当我使用以下代码从 C 开始使用此标志时 Intent intent to a new
  • hadoop和hbase的最新兼容版本

    我必须在4台机器上安装hadoop和hbase 我找到了最新版本hadoop 2 6 0 and hbase 0 98 9 hadoop2 bin 1 它们兼容吗 2 我应该如何在4台机器上安装hbase和hadoop 即有多少个maste
  • 组合枚举 C++

    在我的项目中 我有几个与此类似的枚举声明 enum Comparison LT lt GT gt EQ LTEQ lt GTEQ gt NEQ enum Arithmetic ADD SUB MUL DIV MOD 我想将其中的几个组合成一
  • 如何注入 jQuery 并在同一个书签中使用它?

    我可以使用以下书签成功地将 jQuery 注入到页面中 javascript void function doc if typeof jQuery undefined var script jQuery document createEle
  • Scala/Java 枚举

    我读了this https stackoverflow com questions 1321745 scala doesnt have enums what to use instead of an enum and this https
  • 将 Matplotlib 图转换为 NumPy 数组,没有任何边框/框架或轴

    我正在尝试将 Python 生成的图像与文件中的图像 照片进行比较 到目前为止 最好的方法是在 Matplotlib 中生成一个图形 然后将其转换为 numpy 数组 并将这些值与我从图像中获得的值进行比较 我得到了以下代码 将 Matpl
  • 对不完整类型的引用

    根据 C 03 标准 引用不完整类型是否有效 我不知道有任何实现将引用实现为非空指针以外的任何其他实现 因此这样的代码应该可以工作 但是 我想知道对不完整类型的引用是否符合标准 我希望得到带有引用和 C 标准参考的答案 据我所知 C 标准没
  • jQuery 下一个有特殊类型子元素的兄弟

    我的 HTML 有一个包含许多同级元素的容器元素div元素 每个元素包含一个contenteditable p 这些兄弟姐妹div然而 被其他人 打断 div其中不包含可编辑元素 目前对我来说挑战的是如何 跳过 这些干扰div使用左右箭头键
  • 如何使用单个删除从对象中删除多个属性?

    我有以下对象 var myArr one 1 two 2 three 3 four 4 five 5 我想立即从该对象中删除三个属性 例如 delete myArr one three five 但它正在失败 我是否必须对每个属性执行独立删
  • 获取创建的表名

    我正在尝试创建一个event trigger 每当表已创建 当发生这种情况时 我想插入到一个表中 该表有 2 列id and tablename 创建的表的名称 阅读文档我无法找到如何获取表名 到目前为止我有这个 CREATE OR REP
  • 使用facet_grid将“标题”添加到我的因素中

    我想使用 ggplot2 为我的因素添加文本 标题 例如 对于来自 reshape2 库的数据 library reshape2 library ggplot2 ggplot tips aes x total bill y tip tota
  • 如何将Java时间戳转换为ms access Date?

    我想将 java 时间戳插入到 msaccess 数据库中 但收到下面列出的错误 ms access 字段已设置为 DATE 数据类型 任何建议将不胜感激 谢谢 这是我的 DAO 类方法 public void addSale String
  • 将用户定义的表传递给存储过程

    我有一个用户定义表 我正在将其从存储过程中传递到存储过程中 DECLARE tmpInput MyTableType Table is populated from an INPUT XML exec ValidateInputXML SE
  • 向下滚动时标题会发生变化(jQuery)

    TechCrunch 最近重新设计了他们的网站 他们有一个可爱的标题 当你向下滚动时 它会缩小为更薄的品牌版本 你可以在这里明白我的意思 http techcrunch com http techcrunch com 我将如何创建这样的东西
  • 如何将原始二进制数据转换为 blob 并将其显示在 img 标记中?

    我正在 Electron 和 Svelte 中制作梦想日记应用程序 我有一种自定义文件格式 其中包含标题 描述和一张或多张图像 看 程序输入 文件输出 当我需要的时候 我可以打电话ipcRenderer invoke 在主进程中读取文件 然
  • 通过 REST API Java 从 URL 获取 ObjectID

    我尝试将讨论添加到用户故事中 部分代码 QueryResponse storyQueryResponse restApi query storyRequest JsonObject storyJsonObject storyQueryRes
  • 如何在 matplotlib 等高线图中设置虚线长度

    我正在 matplotlib 中制作一些等高线图 但破折号的长度太长 虚线也不好看 我想手动设置破折号的长度 当我使用 plt plot 制作简单的绘图时 我可以设置精确的破折号长度 但是我无法弄清楚如何使用等高线图做同样的事情 我认为以下
  • 如何处理 Google Play 中的待处理购买

    我们的大多数购买在 3 天 30 分钟后不断被取消 我认为这是待购买状态的结果 然而 关于如何准确处理待处理购买的文档却很少 而且 由于某种原因 即使我自己是测试人员 我也无法测试它 因为购买方式上没有 慢卡 选项 此外 我们没有后端服务器