React-native-iap: Bagaimana cara membatalkan pembelian yang tertunda secara manual?

Dibuat pada 29 Jul 2019  ·  8Komentar  ·  Sumber: dooboolab/react-native-iap

Versi react-native-IAP

3.3.7

Versi react-native

0.59.8

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

Android

Perilaku yang diharapkan

ketika saya meminta pembelian, maka saya memvalidasi tanda terima di server saya, jika validasi gagal saya ingin dapat secara manual membatalkan pembelian, alih-alih fungsi purchaseUpdatedListener dipicu setiap saat, jika tidak memanggil acknowledgepurchase atau konsumsi pembelian.

Perilaku sebenarnya

ketika tidak menyelesaikan pembelian, saya tidak bisa membatalkan pembelian yang tertunda. Di android saya harus menunggu itu dibatalkan secara otomatis.

Lingkungan yang diuji (Emulator? Perangkat Nyata?)

Perangkat nyata

Langkah-langkah untuk mereproduksi perilaku

Lakukan pembelian dan jangan panggil confirmgepurchase atau Consumepurchase.

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

Komentar yang paling membantu

@hyochan , Apakah ada fungsi seperti itu di iOS, untuk membatalkan pembelian yang belum diselesaikan dengan menelepon finishTransactionIOS dan kemudian menghapus pembelian itu dari riwayat pembelian. Saya tidak tahu apakah ada cara lain untuk memeriksa apakah langganan masih aktif, tetapi yang saya lakukan sekarang adalah memeriksa tanggal kedaluwarsa untuk transaksi terakhir dalam riwayat penerimaan. Jadi jika pembelian belum selesai, saya tidak ingin itu tercatat dalam riwayat pembelian. Sayangnya saat ini, itulah yang terjadi. Dan tidak seperti Android, pembelian yang belum selesai tidak akan dibatalkan setelah beberapa waktu dan tidak akan pernah berhenti dipicu oleh purchaseUpdateListener .

Jadi saya memiliki masalah yang sama di ios dan android, saya perlu membatalkan pembelian yang belum selesai. Dan khususnya di iOS, pembelian tersebut tidak dicatat dalam riwayat kecuali jika ada cara yang lebih efisien untuk memeriksa validitas langganan.

Semua 8 komentar

Bahkan jika terjadi kegagalan, Anda tetap harus memanggil acknowledgePurchase dan consumePurchase untuk transaksi yang sudah selesai. Anda hanya tidak melanjutkan logika seperti tidak memberikan hadiah pada database Anda sendiri. Selain itu, Anda harus consmePurchase agar tidak tetap ada di aplikasi Anda.

@hyochan jika saya melakukan itu, pembayaran akan disetujui dan akun pengguna akan dikenakan biaya tanpa mendapatkan hadiah.

@tmjordan Oh, saya mengerti apa yang Anda maksud. Bagaimana jika Anda melanjutkan logika dengan memberi hadiah?

@hyochan ketika pengguna membeli produk, tanda terima yang diberikan dikirim ke server google untuk memvalidasi tanda terima dan untuk mendapatkan status pembelian (jika pembayaran telah disetujui, atau tertunda, atau dibatalkan).
Katakanlah saya mengalami kesalahan selama proses validasi tidak datang dari server google (backend saya misalnya), jadi saya tidak dapat memvalidasi tanda terima dan saya ingin membatalkan pembelian secara manual daripada menunggu untuk dibatalkan oleh google ( selama waktu itu saya tidak bisa melakukan pembelian lagi) jika saya tidak menelepon aknowledgepurchase atau Consumepurchase.
Tidak tahu apakah itu mungkin, mungkin begitulah proses pembelian bekerja di google.

Alangkah baiknya, jika kita bisa secara manual membatalkan pembelian yang belum diakui atau dikonsumsi. Dalam skenario itu pengguna akan dikembalikan jika pembayaran telah disetujui.
Alih-alih membuat pembelian yang sama dipicu setiap kali sampai dibatalkan oleh Google.

@ tmjordan Terima kasih atas sudut pandang Anda yang baik. Kedengarannya masuk akal tetapi saya tidak yakin bahwa pembelian pending sebenarnya ditagih. Saya pikir pembelian pending seharusnya tidak ditagih ketika acknowledged dan sebaliknya ini harus dihapus. Semoga kami dapat membahas lebih detail tentang pengalaman lain.

@hyochan , Apakah ada fungsi seperti itu di iOS, untuk membatalkan pembelian yang belum diselesaikan dengan menelepon finishTransactionIOS dan kemudian menghapus pembelian itu dari riwayat pembelian. Saya tidak tahu apakah ada cara lain untuk memeriksa apakah langganan masih aktif, tetapi yang saya lakukan sekarang adalah memeriksa tanggal kedaluwarsa untuk transaksi terakhir dalam riwayat penerimaan. Jadi jika pembelian belum selesai, saya tidak ingin itu tercatat dalam riwayat pembelian. Sayangnya saat ini, itulah yang terjadi. Dan tidak seperti Android, pembelian yang belum selesai tidak akan dibatalkan setelah beberapa waktu dan tidak akan pernah berhenti dipicu oleh purchaseUpdateListener .

Jadi saya memiliki masalah yang sama di ios dan android, saya perlu membatalkan pembelian yang belum selesai. Dan khususnya di iOS, pembelian tersebut tidak dicatat dalam riwayat kecuali jika ada cara yang lebih efisien untuk memeriksa validitas langganan.

Saya ingin menangani skenario serupa

  1. Pengguna Memulai pembelian produk (waktu sensitif). Produk ini harus segera dikembalikan
  2. Server gagal mengembalikan produk. dan mungkin akan terlambat untuk mengembalikan produk dengan mencoba kembali
  3. purchaseUpdateListener dipicu berkali-kali hingga finishTransactionIOS dipanggil namun ini bukan hasil yang diinginkan. Transaksi harus dibatalkan pada tahap ini.

Apakah ada metode untuk membatalkan transaksi.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat