React-native-iap: buySubscription tidak menyelesaikan saat mengubah langganan di iOS

Dibuat pada 26 Sep 2018  ·  14Komentar  ·  Sumber: dooboolab/react-native-iap

Versi react-native-IAP

2.2.2

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

iOS

Perilaku yang diharapkan

buySubscription harus diselesaikan saat mengubah dari langganan Bulanan ke Tahunan, daripada menolak dan mengembalikan kesalahan, yang memaksa klausa tangkap.

Perilaku sebenarnya

Jika saat ini berlangganan ke satu paket, mengubah ke paket lain menyebabkan buySubscription menangkap dan mengembalikan kesalahan berikut:
screen shot 2018-09-27 at 1 21 10 am

Lingkungan yang diuji (Emulator? Perangkat Nyata?)

Perangkat nyata, iPhone 6

Langkah-langkah untuk mereproduksi perilaku

Ini terjadi ketika kotak dialog modifikasi langganan muncul di dalam aplikasi, menanyakan apakah Anda ingin mengubah dari langganan Anda saat ini ke yang baru dipilih. Setelah mengetuk dialog ini, kesalahan dilemparkan alih-alih janji terselesaikan yang diharapkan. Tampaknya kasus penggunaan ini belum diperhitungkan atau semacamnya.

Ini mengganggu bagi saya sekarang karena tidak ada cara untuk mengonfirmasi bahwa mereka benar-benar membeli atau memvalidasi tanda terima untuk kasus ini. Beri tahu saya jika Anda mengetahui solusi atau perbaikan, atau jika ada yang bisa saya lakukan untuk membantu (meskipun saya tidak memiliki pengalaman Obj-C). Satu-satunya solusi yang mungkin dapat saya pikirkan untuk saat ini adalah jika buySubscriptions mengembalikan kesalahan, memeriksa kesalahan ini dan jika cocok dengan kesalahan ini, maka konfirmasi pembelian. Tetapi ini sangat berbahaya karena membuat validasi tanda terima tidak mungkin dan beberapa kesalahan lainnya (seperti ketidakmampuan untuk terhubung ke server atau sesuatu) dapat menghasilkan kode kesalahan yang sama, memberi pengguna langganan tanpa benar-benar harus membayarnya. Jadi dengan kata lain, saya tidak dapat memikirkan solusi yang layak saat ini. Apakah saya melewatkan sesuatu di sini? Apakah ada alasan mengapa saya tidak ingin janji dari buySubscriptions diselesaikan? Akan sangat berterima kasih mendengar dari seseorang.

EDIT : Ini mungkin konsekuensi yang jelas dari apa yang telah saya jelaskan, tetapi setelah mencoba mengubah langganan Anda, pembelian ini tidak ditambahkan ke riwayat pembelian Anda. Tidak ada indikasi di sisi pengguna bahwa pembelian ini tidak berhasil — pengguna berhasil melanjutkan alur pembelian melalui kotak dialog, diakhiri dengan pesan "Anda sudah siap".

EDIT2 : Kadang-kadang berhasil tetapi saya belum yakin bagaimana mereproduksi, akan melaporkan kembali jika saya menemukan cara. Ketika berfungsi, kotak dialog pertama meminta kata sandi saya kemudian berjalan secara normal seolah-olah saya belum memiliki langganan lain, berlawanan dengan ketika kotak dialog pertama adalah "Konfirmasi Pembelian" dan menanyakan apakah saya ingin mengubah langganan saya, yaitu apa yang muncul saat tidak berfungsi. Saat berfungsi, langganan yang dibeli ditambahkan ke riwayat pembelian saya seperti yang diharapkan.

EDIT3 : Saya mengambil gambar dari pesan kesalahan yang salah sebelumnya. Sekarang saya sudah memperbaikinya. Pesan kesalahan tersebut berbunyi: "Kesalahan: Terjadi kesalahan yang tidak diketahui atau tidak terduga. Coba lagi nanti." Anda juga mungkin ingin mempertimbangkan untuk melihat metode yang digunakan untuk membeli produk di react-native-in-app-utils. Mereka menggunakan metode yang berbeda dan perbedaannya dapat membantu menjelaskan mengapa hal ini terjadi, meskipun saya belum menggunakan pustaka itu sehingga tidak dapat memastikan bahwa hal itu tidak akan terjadi di sana.

🍗 enhancement 🐛 bug 📱 iOS

Komentar yang paling membantu

Memeriksa lagi beberapa hari ini dan saya pikir saya telah menemukan sesuatu yang perlu diperhatikan. Yang sepertinya terjadi adalah apa yang ditemukan dalam kesalahan ini: https://github.com/bizz84/SwiftyStoreKit/issues/269. Saat beralih di antara langganan perpanjangan otomatis dalam grup yang sama, transaksi tidak berjalan karena pengguna tidak akan ditagih hingga langganan saat ini berakhir. Tapi itu telah berhasil didaftarkan dan pembayaran akan diproses setelah langganan saat ini habis, tetapi tidak sampai saat itu. Dengan demikian, pengembalian transaksi gagal karena belum ada transaksi yang benar-benar terjadi. Jadi saya tidak berpikir ada yang salah dalam proses pembayaran, hanya saja transaksi yang terpental terdaftar sebagai kesalahan. Tapi saya belum mengujinya karena saya baru saja menemukannya dan debugger saya bermasalah dan sudah larut jadi saya tidak akan mencoba menyelesaikannya sampai besok. Akan lebih bagus jika seseorang dapat mencoba mengonfirmasi sementara itu (yaitu dengan beralih di antara langganan dan kemudian melihat apakah transaksi untuk yang kedua muncul di riwayat pembelian Anda setelah yang pertama kedaluwarsa, atau sesuatu seperti ini). Jika ini ADALAH yang terjadi, alangkah baiknya jika kita dapat menemukan cara untuk menanganinya. Jika kesalahan yang dihasilkannya khusus untuk proses ini, kita bisa meneruskannya sebagai nilai kembalian dari janji sehingga kita dapat menangani dengan benar (mis. Tidak membuat pesan kesalahan untuk pengguna, memperbarui info langganan pengguna). Akan sangat senang mendengar pendapat siapa pun tentang apakah ini memeriksa dan bagaimana melanjutkan.

Semua 14 komentar

Bisakah Anda mencoba versi terbaru sekarang yaitu 2.3.15 ?

Ya, saya akan mencobanya di beberapa titik hari ini

@kevinEsherick Apa hasil Anda untuk yang satu ini?

Masih tidak bekerja. Jika saya berlangganan bulanan dan beralih ke tahunan, itu menyentuh klausul tangkapan. Ada beberapa waktu di mana itu telah bekerja secara acak tetapi belum menemukan cara untuk mereproduksi. Saya akan terus mengabari Anda tentang apa yang saya temukan dan tolong lakukan hal yang sama untuk saya. Terima kasih!

@kevinEsherick Bagaimana Anda "mengalihkan" langganan? Saya rasa Anda "membatalkan" langganan bulanan, dan "membeli lagi" langganan tahunan. Apakah itu benar?

Di iOS, tidak bisakah Anda beralih langganan dengan masuk ke aplikasi pengaturan untuk mengelola langganan Anda, lalu memilih produk yang berbeda dalam grup yang sama?

@JJMoon Tidak, saya cukup membeli langganan Bulanan dalam aplikasi, lalu membeli langganan Tahunan dalam aplikasi. Mereka memperpanjang otomatis langganan dalam grup langganan yang sama. Jika dua langganan (A dan B) berada dalam grup yang sama di iTunes Connect, membeli B saat berlangganan ke A seharusnya secara otomatis membatalkan A dan membuat Anda berlangganan ke B. Apakah menurut Anda ada masalah dengan paket ini yang tidak mendukung fungsi ini? Jika ya, dapatkah kita menemukan cara untuk menerapkan ini?

Saya juga mengalami masalah ini. Adakah peningkatan?

Tidak. Belum punya banyak waktu untuk mengatasinya akhir-akhir ini. Saya akan segera memeriksanya lagi.

Melihat beberapa hal dan saya menyadari bahwa tampaknya Apple mengakui perubahan dalam langganan setidaknya sampai batas tertentu. Jika saya beralih dari, katakanlah, bulanan ke tahunan, ini menunjukkan modal yang sesuai dengan bahasa tentang mengubah langganan Anda. Ketika saya membeli setiap tahun, ada kesalahan dan buySubscription tidak menyelesaikannya. TAPI, ketika saya kembali melakukan pembelian, kali ini kembali ke langganan bulanan, API Apple mengetahui bahwa saya menggunakan langganan tahunan dan menunjukkan modal "Apakah Anda ingin mengubah langganan Anda ..." lagi. Bagaimana ini terwujud dalam produksi, saya belum yakin, karena ini semua dalam kotak pasir. Saya akan melihat ini lebih jauh di beberapa titik malam ini, tetapi ini mungkin berarti bahwa semuanya baik-baik saja di pihak Apple dan itu hanya kesalahan di sisi klien. Jika ini masalahnya, ini mungkin bukan lagi bug kritis, tetapi masih memerlukan perbaikan.

Memeriksa lagi beberapa hari ini dan saya pikir saya telah menemukan sesuatu yang perlu diperhatikan. Yang sepertinya terjadi adalah apa yang ditemukan dalam kesalahan ini: https://github.com/bizz84/SwiftyStoreKit/issues/269. Saat beralih di antara langganan perpanjangan otomatis dalam grup yang sama, transaksi tidak berjalan karena pengguna tidak akan ditagih hingga langganan saat ini berakhir. Tapi itu telah berhasil didaftarkan dan pembayaran akan diproses setelah langganan saat ini habis, tetapi tidak sampai saat itu. Dengan demikian, pengembalian transaksi gagal karena belum ada transaksi yang benar-benar terjadi. Jadi saya tidak berpikir ada yang salah dalam proses pembayaran, hanya saja transaksi yang terpental terdaftar sebagai kesalahan. Tapi saya belum mengujinya karena saya baru saja menemukannya dan debugger saya bermasalah dan sudah larut jadi saya tidak akan mencoba menyelesaikannya sampai besok. Akan lebih bagus jika seseorang dapat mencoba mengonfirmasi sementara itu (yaitu dengan beralih di antara langganan dan kemudian melihat apakah transaksi untuk yang kedua muncul di riwayat pembelian Anda setelah yang pertama kedaluwarsa, atau sesuatu seperti ini). Jika ini ADALAH yang terjadi, alangkah baiknya jika kita dapat menemukan cara untuk menanganinya. Jika kesalahan yang dihasilkannya khusus untuk proses ini, kita bisa meneruskannya sebagai nilai kembalian dari janji sehingga kita dapat menangani dengan benar (mis. Tidak membuat pesan kesalahan untuk pengguna, memperbarui info langganan pengguna). Akan sangat senang mendengar pendapat siapa pun tentang apakah ini memeriksa dan bagaimana melanjutkan.

Saya harap masalah ini dapat ditangani dengan metode yang saya sebutkan.
Penutupan...

Punya perilaku yang sama, langkah apa saja untuk mengatasinya?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat