React-native-iap: 如何手动取消待处理的购买?

创建于 2019-07-29  ·  8评论  ·  资料来源: dooboolab/react-native-iap

版本的react-native-iap

3.3.7

本机版本

0.59.8

您遇到错误的平台(IOS或Android还是两者兼有?)

安卓系统

预期行为

当我请求购买时,然后我在服务器上验证收据,如果验证失败,则我希望能够手动取消购买,而不是每次都不触发函数purchaseUpdatedListener(如果不调用确认购买或消费购买)。

实际行为

当未完成购买时,我无法取消待处理的购买。 在android上,我必须等待它被自动取消。

经过测试的环境(仿真器?真实设备?)

真实设备

重现行为的步骤

进行购买,请勿致电确认购买或消费购买。

1️⃣ good first issue ❓ question 🙏 help wanted 🤖 android

最有用的评论

@hyochan ,是否有类似iOS的功能,以便通过调用finishTransactionIOS取消未完成的购买,然后从购买历史记录中删除该购买。 我不知道是否还有另一种方法来检查订阅是否仍处于活动状态,但是我现在要做的是检查收据历史记录中最后一笔交易的到期日期。 因此,如果购买尚未完成,我不希望将其记录在购买历史中。 不幸的是,目前正是如此。 与Android不同,未完成的购买将在一段时间后被取消,并且永远不会因purchaseUpdateListener触发而停止。

所以我在ios和android上也遇到了同样的问题,我需要取消尚未完成的购买。 特别是在ios上,除非有更有效的方法来检查订阅的有效性,否则不会在历史记录中记录该购买。

所有8条评论

即使失败的结果,您仍然应该调用acknowledgePurchaseconsumePurchase来完成事务。 您仅不执行逻辑,例如不对自己的数据库给予奖励。 另外,您应该consmePurchase以便它不会保留在您的应用程序中。

@hyochan如果我这样做,付款将被批准,并且将向用户收取费用,而不会得到奖励。

@tmjordan哦,我明白你的意思了。 如果您通过给予奖励来进行逻辑处理呢?

@hyochan,当用户购买产品时,给定的收据会发送到google服务器,以验证收据并获取购买状态(如果付款已批准,待付款或已取消)。
假设我在验证过程中遇到的错误不是来自Google服务器(例如,我的后端),所以我无法验证收据,我想手动取消购买,而不是等待Google取消购买(在此期间,如果我不致电aknowledgepurchase或不消费,则无法再购买。
不知道是否有可能,也许这就是Google上购买过程的工作方式。

如果我们可以手动取消尚未确认或消费的购买,那就太好了。 在那种情况下,如果付款被批准,用户将被退款。
而不是每次都触发相同的购买,直到被Google取消为止。

@tmjordan感谢您的良好观点。 听起来很合理,但我不太确定实际要收取pending费用。 我认为, pending购买时应该甚至不收取acknowledged和,而这些都应该被删除。 希望我们能详细介绍其他经验。

@hyochan ,是否有类似iOS的功能,以便通过调用finishTransactionIOS取消未完成的购买,然后从购买历史记录中删除该购买。 我不知道是否还有另一种方法来检查订阅是否仍处于活动状态,但是我现在要做的是检查收据历史记录中最后一笔交易的到期日期。 因此,如果购买尚未完成,我不希望将其记录在购买历史中。 不幸的是,目前正是如此。 与Android不同,未完成的购买将在一段时间后被取消,并且永远不会因purchaseUpdateListener触发而停止。

所以我在ios和android上也遇到了同样的问题,我需要取消尚未完成的购买。 特别是在ios上,除非有更有效的方法来检查订阅的有效性,否则不会在历史记录中记录该购买。

我想处理类似的情况

  1. 用户开始购买(时间敏感)产品。 该产品应立即退货
  2. 服务器无法退回产品。 并且通过重试返回产品可能为时已晚
  3. purchaseUpdateListener被多次触发,直到调用finishTransactionIOS为止,但这不是理想的结果。 该交易应在此阶段被取消。

是否有取消交易的方法。

此页面是否有帮助?
0 / 5 - 0 等级