React-native-iap: [Android] acceptPurchaseAndroid()Google表示我们在付款方面存在问题。

创建于 2019-09-18  ·  32评论  ·  资料来源: dooboolab/react-native-iap

版本的react-native-iap> 3.4.12

本机版本> 0.58.3

您遇到错误的平台> Android

实际行为

我有一个
Google is indicating that we have some issue connecting to payment.错误
在logcat中,我得到了E/DoobooUtils: Error Code : 5

我以前使用的是2.5.5版本,它运行良好。
唯一不起作用的是acceptPurchaseAndroid调用

经过测试的环境>真实设备

这是我的代码:

  handleServerSubscribe = async purchase => {
    const {
      productId,
      transactionReceipt,
    } = purchase
    if (transactionReceipt) {
      try {
          // FIXME it fails right here
          await acknowledgePurchaseAndroid(purchase.purchaseToken)

      } catch (e) {
        console.log('subscription error ', e)
      }
    }
  }


componentDidMount() {
    this.purchaseUpdateSubscription = purchaseUpdatedListener(purchase => {
      this.handleServerSubscribe(purchase)
    })
  }
🙏 help wanted 🤖 android

最有用的评论

我知道了:我只是为Android制作了这些特定的行,但是这样做的需要在文档中并不很明显。 现在,它可以在Android和iOS上使用:
// on Android we need to acknowledge purchase or finishTransaction fails
// if we do not acknowledge, purchase will roll back in 5 min
RNIap.acknowledgePurchaseAndroid(purchase.purchaseToken).then(() => {
RNIap.finishTransaction(purchase, true).catch(err => {
console.log(err.code, err.message);
});
});

所有32条评论

如果acknowledgePurchase无法正常工作,则感觉您没有正确将android中的billingClient更新2.0.3 。 您可以检查build.gradle吗?

@hyochan好吧,看来我没有它,但是我不知道在哪里可以得到正确的语法。
它应该在自述文件中吗?

尝试通过搜索找到行com.android.billingclient:billing

好吧,我没有,我只有

 implementation project(':react-native-iap')

我需要两个实现吗?

 implementation 'com.android.billingclient:billing:2.0.3'
 implementation project(':react-native-iap')

我仍然有相同的错误

@MeisterTea我希望您检查已安装的react-native-iap项目中billingclient的版本。 检入node_modules/react-native-iap/android/build.gradle

哦,我的糟糕...是的,它的版本正确

  implementation 'com.android.billingclient:billing:2.0.3'

任何的想法 ?

@MeisterTea我想我发现了对您有用的链接

@MeisterTea这有帮助吗?

好吧,我仍然有错误:
js网桥: Google is indicating that we have some issue connecting to payment.
logcat: E/DoobooUtils: Error Code : 5

await acknowledgePurchaseAndroid(purchase.purchaseToken)

, 我有一些问题:

  • 您是否还有其他想法可以解决此问题?
  • 如何调试和使用发布密钥? 即使将我的发布密钥库复制为debug.keystore并在build.gradle中指向它之后,react-native run-android似乎总是会安装通用调试密钥。

编辑:与react-native-iap的示例项目都是一样的。
我将versionCode更改为我在beta轨道上上传的最新代码,为其提供了发布密钥,添加了我的订阅ID,更改了代码以加载订阅,完成了react-native run-android variant = release

我可以购买订阅,但仍然出现错误5

有同样的问题。 有什么解决办法吗?

是的,这是由于已确认待付款。
IMO,许可测试人员无论如何都不应该处于PENDING状态,因此Google可能在此出错。

对于状态purchaseStateAndroid 1(已购买)的付款,我也遇到同样的问题

是的,这是由于已确认待付款。

我确认这一点。 当purchaseState为1时,我永远不会出错。

编辑:

然而购买仍然被承认。 换句话说,有一个错误,但仍在工作。

我有同样的问题,我意识到问题是PurchaseToken已被确认。 所以我解决了控制呼叫await acknowledgePurchaseAndroid(purchase.purchaseToken). @hyochan的问题

因此,我不得不检查从RNIap.getAvailablePurchases() purchases [0] .isAcknowledgedAndroid是否为假,以调用acceptPurchaseAndroid。

希望能帮助到你。

嘿,看来这个问题最近没有任何活动。 问题是否已解决,还是仍然需要社区的关注? 如果没有其他活动,则可能已关闭此问题。 您也可以将此问题标记为“供讨论”或“良好的第一期”,我将其保留为开放状态。 感谢你的贡献。

我最近有同样的错误信息。 所以我说这应该保持活跃。

我在RNIap.finishTransaction遇到了相同的错误

@ creativemind1您正在使用什么版本? finishTransaction应该同时在iOSandroid

我正在使用"react-native-iap": "^4.4.1" ,当我在Android中调用finishTransaction时,我从Google Google is indicating that we have some issue connecting to payment得到了错误。 因此,从我的服务器获得成功的响应后,我正在调用正在运行的RNIap.acknowledgePurchaseAndroid ,但没有调用finishTransaction

同样的错误,但在getProducts上

同样的错误,但是在消耗产品上。

订阅时出错:
Error: Google is indicating that we have some issue connecting to payment. at Object.fn [as consumeProduct] (VM4 index.bundle:2143)

购买产品时出错:
Error: Purchase failed with code: 8 at Object.fn [as consumeProduct] (NativeModules.js:99)

反应本机:0.61
react-native-iap版本:4.4.9

我想如果您在.google play的测试用户中添加电子邮件地址
您将要设置的设置会看到tgat问题

2020年6月6日,星期六,下午8:41 rafaeelrf [email protected]写道:

同样的错误,但是在消耗产品中:
错误:Google表示我们在付款方面遇到了一些问题。
在Object.fn上[作为消费产品](VM4 index.bundle:2143)


您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/dooboolab/react-native-iap/issues/721#issuecomment-640075737
或退订
https://github.com/notifications/unsubscribe-auth/ABH54CL5FLAY4C7CTL2V3V3RVJMA7ANCNFSM4IX5EJQA

我已经添加了,但是问题没有解决

如果我没记错的话,在测试服务器上时,不能在客户端执行此操作,因为在付款和服务器验证之间存在一些延迟。
我们不得不移动逻辑服务器端

嗨,我在RNIap.acknowledgePurchaseAndroid(purchase.purchaseToken);时遇到了同样的错误。 API。 有人可以帮忙吗

我在RNIap.finishTransaction遇到了相同的错误

我也有使用最新版本和测试卡的问题

同样的问题,在我的purchaseUpdatedListener中调用RNIap.finishTransaction(purchase,true),它在我的RNIap.requestSubscription之后被调用。 这导致错误。 5分钟后,我从Google收到取消邮件“此测试购买已取消,因为未确认,”。 当然,我使用的是测试帐户,但这应该可以。
相同的代码在iOS上就像一个超级按钮。

@MeisterTea您在后端做了什么,是否发现Google对RNIap.finishTransaction(purchase,true)的要求是什么? 您可以共享一些代码段或其他信息,以便我们其余的人可以使用该解决方案,直到该插件再次起作用为止?

我的问题是,我打电话给finishtransaction 2次。 当我删除它时,工作正常

我知道了:我只是为Android制作了这些特定的行,但是这样做的需要在文档中并不很明显。 现在,它可以在Android和iOS上使用:
// on Android we need to acknowledge purchase or finishTransaction fails
// if we do not acknowledge, purchase will roll back in 5 min
RNIap.acknowledgePurchaseAndroid(purchase.purchaseToken).then(() => {
RNIap.finishTransaction(purchase, true).catch(err => {
console.log(err.code, err.message);
});
});

我不知道这是否为您工作(消耗产品的此代码):

await RNIap.finishTransaction(purchase).then(async () => { await RNIap.consumePurchaseAndroid(purchase.purchaseToken).then(async () => { console.log('purchase :', purchase) }).catch(err => { console.log('consume error: ', err.code, err.message) Alert.alert('consume finish error: ', err.message) }); }).catch(err => { console.log('finish error: ', err.code, err.message) Alert.alert('purchase finish error: ', err.message) })

我需要先完成交易,然后再按上面的代码,将consumperPurchaseAndroid()取消,以撤销购买。 希望能帮助到你。

我知道了:我只是为Android制作了这些特定的行,但是这样做的需要在文档中并不很明显。 现在,它可以在Android和iOS上使用:
// on Android we need to acknowledge purchase or finishTransaction fails
// if we do not acknowledge, purchase will roll back in 5 min
RNIap.acknowledgePurchaseAndroid(purchase.purchaseToken).then(() => {
RNIap.finishTransaction(purchase, true).catch(err => {
console.log(err.code, err.message);
});
});

这似乎也对我有用,我正在使用v5.0.0

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