React-native-iap: Tidak membiarkan membeli kembali item Android di akun pengujian

Dibuat pada 13 Apr 2018  ·  16Komentar  ·  Sumber: dooboolab/react-native-iap

Versi react-native-IAP

0.3.10

Platform yang Anda hadapi kesalahan (IOS atau Android atau keduanya?)

Android

Perilaku yang diharapkan

Harus dapat membeli kembali item sebanyak yang saya butuhkan karena saya hanya menguji

Perilaku sebenarnya

Kembali

Error: You already own this item.
    at createErrorFromErrorData (59522b9c-ca17-4e00-9e00-05cc989b1199:2016)
    at 59522b9c-ca17-4e00-9e00-05cc989b1199:1968
    at MessageQueue.__invokeCallback (59522b9c-ca17-4e00-9e00-05cc989b1199:2410)
    at 59522b9c-ca17-4e00-9e00-05cc989b1199:2155
    at MessageQueue.__guardSafe (59522b9c-ca17-4e00-9e00-05cc989b1199:2323)
    at MessageQueue.invokeCallbackAndReturnFlushedQueue (59522b9c-ca17-4e00-9e00-05cc989b1199:2154)
    at t (RNDebuggerWorker.js:1)

Langkah-langkah untuk mereproduksi behabior

Beli item lebih dari sekali menggunakan akun pengujian

🙏 help wanted

Komentar yang paling membantu

Saya mengalami masalah yang sama dengan @ilyakar , dan menggunakan kode di bawah ini saya dapat menghapus pembelian yang tidak dapat dikonsumsi dan mengujinya lagi.


async componentDidMount() {
    const { itemSkus } = this.props;
    try {
      const result = await RNIap.initConnection()
      console.log('initiated connection?', result)
      const consumed = await RNIap.consumeAllItems();
      console.log('consumed all items?', consumed)
      let products = await RNIap.getProducts(itemSkus);
      console.log('loaded products', products)
    } catch (err) {
      console.warn(err);
    }
  };

Semua 16 komentar

@ilyakar Apakah ini produk yang dapat dikonsumsi? Anda harus mengkonsumsi Item untuk membelinya kembali. Harap baca beberapa panduan tentang cara kerja IAP di android.

Hai @dooboolab , ini bukan produk yang dapat dikonsumsi. Pengguna memilikinya selamanya. Ada cara untuk memulihkan produk jadi sebaiknya beri tahu pengguna dalam produksi bahwa mereka tidak dapat membeli produk yang sama lagi karena mereka sudah membelinya. Tetapi untuk tujuan pengujian, sangat tidak nyaman harus menggunakan akun yang berbeda setiap kali semua pembelian telah dibeli.

Saya rasa saya tidak mengalami masalah ini di 0.2.17

@ilyakar Ah .. Maaf saya bingung. Sebenarnya, jika itu adalah produk non-consumable , Anda sebenarnya tidak dapat membelinya kembali. Jika itu mungkin dalam 0.2.17 itu pasti bekerja dengan canggung .. Hanya produk habis pakai yang dapat membelinya kembali. Itu sama di kedua platform (ios dan android). Jika pengguna ingin memulihkan item, mereka harus melakukannya secara opsional tetapi seperti di LINK , itu tidak akan menagih pengguna lagi. Oleh karena itu, jika Anda merancang produk dalam aplikasi yang ingin Anda kenakan biaya kepada pengguna dengan membangun kembali, saya pikir Anda harus membuat produk consumable .

@ilyakar Saya mendapat umpan balik dari teman pengembang saya dan dia juga menghadapi masalah yang sama. Oleh karena itu, saya menemukan solusi untuk menggunakan metode refreshItems yang hanya terjadi pada android . Anda dapat menggunakan ini di [email protected] . Coba gunakan setelah metode prepare . Teman saya menghadapi masalah ini karena dia tidak dapat menemukan token produk yang dibeli untuk dikonsumsi. Oleh karena itu, method ini hanya untuk kemudahan Anda jika Anda tidak peduli dengan riwayat pembelian yang mengandalkan playstore . Saat Anda memiliki backend sendiri yang mengumpulkan riwayat pembelian, ini akan membantu Anda menyelesaikan masalah. Saya harus melihat yang satu ini lebih sulit. Juga, mengikuti readme akan membantu Anda. Terima kasih atas laporan Anda!

PS Saya pikir metode di atas akan bekerja pada produk non-consumable juga. Juga artikel ini akan membantu Anda memahami apa yang akan menyelesaikan refeshItems Anda.

Saya rasa ini sudah diselesaikan karena menurut saya IAP tidak berfungsi dengan Akun Uji

Dan solusi @dooboolab dari refreshItems adalah caranya

Satu pertanyaan noob @dooboolab karena saya hanya menerapkan IAP sekali di Aplikasi Android tetapi tidak pernah mencoba jika berfungsi 😂

Bisakah kita membeli produk tanpa mengeluarkan uang seperti $ 0❓

Ya @ deadcoder0904 , itulah keseluruhan konsep akun uji Android (https://developer.android.com/google/play/billing/billing_testing.html). Yang berfungsi dengan baik dengan plugin, tetapi seperti yang saya tunjukkan, Anda tidak dapat melakukan pembelian yang sama dua kali.

@ilyakar Anda mengatakan bahwa itu masih tidak berfungsi. Apakah Anda mencoba menelepon refreshItems setelah membeli produk? Seperti yang dijelaskan di sini , ini mungkin menyebabkan beberapa penundaan di playstore. Namun, Anda dapat memaksa mengkonsumsi produk tersebut untuk dapat membeli kembali. Saya juga ingin tahu mengapa ini berhasil .. Juga hati-hati jika Anda mengandalkan pembelian di riwayat google play dan tidak mengumpulkannya di backend Anda.

Hai @dooboolab , saya baru saja menanggapi @ deadcoder0904 dengan pengetahuan saya sebelumnya. Saya khawatir saya belum mencoba solusi Anda dan mungkin tidak akan untuk beberapa waktu karena ini bukan perbaikan yang mendesak. Tapi saya akan memberi tahu Anda di masa depan ketika saya punya.

@ilyakar hati-hati menggunakan refreshItems karena akan menghabiskan semua produk yang telah dibeli pengguna. Anda hanya dapat menggunakannya jika Anda tidak peduli dengan informasi yang disimpan di playstore karena Anda memiliki server yang dimenangkan. Juga, masalah ini digunakan untuk terjadi seperti yang saya posting 13 hari yang lalu dari sini , jika pengguna telah mengembalikan item tersebut, pengguna tidak dapat membeli kembali item yang sama selama 24 jam.

Saya mengalami masalah yang sama dengan @ilyakar , dan menggunakan kode di bawah ini saya dapat menghapus pembelian yang tidak dapat dikonsumsi dan mengujinya lagi.


async componentDidMount() {
    const { itemSkus } = this.props;
    try {
      const result = await RNIap.initConnection()
      console.log('initiated connection?', result)
      const consumed = await RNIap.consumeAllItems();
      console.log('consumed all items?', consumed)
      let products = await RNIap.getProducts(itemSkus);
      console.log('loaded products', products)
    } catch (err) {
      console.warn(err);
    }
  };

@TylerNoblett Solusi ini tidak bekerja sekarang.

  • Saya mencoba dengan consumeAllItemsAndroid alih-alih consumeAllItems .
    Bantuan lebih lanjut sangat dihargai.

Output konsol adalah:

setUpDeveloperTools.js:73 TypeError: _reactNativeIap.default.consumeAllItems is not a function
    at loadPurchases$ (NewGameScreen.js:167)
    at tryCatch (runtime.js:45)
    at Generator.invoke [as _invoke] (runtime.js:271)
    at Generator.prototype.<computed> [as next] (runtime.js:97)
    at tryCatch (runtime.js:45)
    at invoke (runtime.js:135)
    at runtime.js:145
    at tryCallOne (core.js:37)
    at core.js:123
    at JSTimers.js:289

Di:

    "react": "16.9.0",
    "react-native": "0.61.3",
    "react-native-iap": "^4.3.0",

@tulpn Sepertinya Anda tidak memasang modul kami dengan benar karena consumeAllItemsAndroid seharusnya berfungsi dengan baik.

@hyochan Tidak bekerja untuk saya.

@ root-ai Versi apa yang Anda gunakan? Juga, harap mengacu pada kode yang kami berikan di example juga.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat