2.2.2
iOS
await RNIap.buyProduct(MIXED_PACK);
seharusnya tidak gagal
Saya mendapatkan kesalahan Cannot connect to iTunes Store
meskipun saya menggunakan pengguna kotak pasir
Perangkat nyata, iPad dan iPhone 7
Coba saja jalankan potongan kode itu. Saya telah membaca Blog secara menyeluruh untuk membuat lingkungan kotak pasir di sini https://medium.com/@dooboolab/react -native-in-app-purchase-121622d26b67
Saya pikir ini adalah tautan lama. https://developer.apple.com/system-status/
@ raynor85 Apakah Anda masih menghadapi masalah ini?
@dooboolab Saya masih menghadapi masalah, tapi menurut saya ini adalah masalah Apple. Saya telah mencoba membeli produk dengan pengguna ID Apple pribadi saya (yang sebelumnya telah digunakan untuk pembelian nyata), dan saya bisa mendapatkan respons yang berhasil setelah mengeksekusi RNIap.buyProduct(“my.sku.product”)
.
Lucunya dalam modal yang muncul tepat sebelum pembelian tertulis environment: sandbox
, mungkin karena saya menjalankan build dev, dan yang terpenting saya pikir saya tidak dikenakan biaya sama sekali untuk pembelian tersebut. Memeriksa riwayat pembelian tidak ada yang berhubungan dengan itu, dan jika saya mengeksekusi RNIap.getAvailablePurchases()
dan RNIap.getPurchaseHistory()
saya mendapat tanggapan kosong dari keduanya. Mengapa demikian?
@ dooboolab dapatkah Anda membantu saya dengan itu? Apakah ada alasan mengapa dengan ID apel asli saya berhasil membeli barang habis pakai tanpa dikenakan biaya, tetapi RNIap.getPurchaseHistory()
selalu berupa larik kosong?
@ raynor85 Apakah Anda menghubungkan hasil transaksi ke server Anda?
@dooboolab Saya telah mencoba menggunakan RNIap.buyProduct(sku)
dan RNIap.buyProductWithoutFinishTransaction(sku)
dengan RNIap.finishTransaction()
, dan untuk keduanya saya telah menggunakan RNIap.validateReceiptIos(receiptBody, true);
, dengan const receiptBody = {'receipt-data': purchase.transactionReceipt, password: '[apple-id-password]'};
, tetapi tidak beruntung. Juga perlu dicatat bahwa kata sandi mana pun yang saya masukkan ke dalam '[apple-id-password]', validateReceiptIos
respon selalu sama.
Ini contohnya:
{ receipt:
{ receipt_type: 'ProductionSandbox',
adam_id: 0,
app_item_id: 0,
bundle_id: 'io.fantastec.swap',
application_version: '8',
download_id: 0,
version_external_identifier: 0,
receipt_creation_date: '2018-10-09 19:16:09 Etc/GMT',
receipt_creation_date_ms: '1539112569000',
receipt_creation_date_pst: '2018-10-09 12:16:09 America/Los_Angeles',
request_date: '2018-10-09 19:16:10 Etc/GMT',
request_date_ms: '1539112570436',
request_date_pst: '2018-10-09 12:16:10 America/Los_Angeles',
original_purchase_date: '2013-08-01 07:00:00 Etc/GMT',
original_purchase_date_ms: '1375340400000',
original_purchase_date_pst: '2013-08-01 00:00:00 America/Los_Angeles',
original_application_version: '1.0',
in_app:
[ { quantity: '1',
product_id: 'basic_pack',
transaction_id: '1000000455003078',
original_transaction_id: '1000000455003078',
purchase_date: '2018-10-09 19:16:09 Etc/GMT',
purchase_date_ms: '1539112569000',
purchase_date_pst: '2018-10-09 12:16:09 America/Los_Angeles',
original_purchase_date: '2018-10-09 19:16:09 Etc/GMT',
original_purchase_date_ms: '1539112569000',
original_purchase_date_pst: '2018-10-09 12:16:09 America/Los_Angeles',
is_trial_period: 'false' } ] },
status: 0,
environment: 'Sandbox' }
Seperti yang mungkin telah Anda perhatikan, receipt_type: 'ProductionSandbox'
, yang seharusnya disebabkan oleh fakta bahwa saya menggunakan nama pengguna ID Apple asli di lingkungan kotak pasir (saya tidak dapat membuat pengguna kotak pasir uji yang berfungsi, terima kasih Apple telah membuat hidup kita seperti neraka).
@ raynor85 Sebenarnya, saya tidak tahu mengapa ini terjadi. Saya mungkin harus mencobanya dalam waktu dekat. Juga, apakah Anda mencoba mengujinya melalui uji terbang? Jika Anda belum mengunggah aplikasi ke test flight
Saya pikir itu mungkin terjadi. Juga, saya setuju dengan kutipan terakhir Anda!
Saya belum mencoba mengupload aplikasi di testFlight, karena saya ingin memiliki versi dev untuk digunakan sebelum berpotensi mengupload versi beta yang rusak. Mungkin codepush bisa berguna dalam kasus ini. Bagaimanapun, bisakah Anda menjelaskan arti dari const receiptBody = {'receipt-data': purchase.transactionReceipt, password: '[apple-id-password]'}
? Saya telah mencoba memasukkan kata sandi apa pun, dan saya masih mendapatkan hasil yang sama. Apakah password
mewakili kata sandi id apel pengguna? Jika demikian, bagaimana saya bisa mendapatkan informasi itu tanpa meminta pengguna untuk memasukkannya?
Juga, bagaimana dengan accessToken
dibutuhkan untuk validateReceiptAndroid
? Saya telah memeriksa posting luar biasa tentang stack overflow yang Anda sebutkan, tetapi tidak ada panduan yang jelas tentang bagaimana saya bisa mendapatkan accessToken, apakah Anda merekomendasikan cara sederhana yang mati untuk mendapatkan access_token tanpa perlu membangun server? Dokumen tersebut mengatakan bahwa dimungkinkan untuk melakukan acceptVerification pada perangkat secara langsung: https://developer.android.com/google/play/billing/billing_library_overview
@ rayon_dewi
accessToken
melalui konsol bermain. Anda bisa mendapatkan ini dengan mengikuti proses.Juga, coba 2.3.5
sebagai tanda terima di android. Parameter mengirim identitas yang salah di transactionReceipt
untuk android. Saya harap Anda dapat berlatih dengan yang ini dan berbagi kisah sukses Anda di readme kami. Bersulang!
@ raynor85 Saya juga tidak bisa mendapatkan respons dari purchaseHistory () atau getAvailablePurchases (). Saya bertanya-tanya apakah fungsi-fungsi itu tidak akan berfungsi sampai aplikasi dalam produksi. @JJMoon Haruskah fungsi tersebut bekerja dalam mode sandbox?
Mengetahui itu, saya tidak memanggil "finishTransaction ()" jadi saya terjebak dalam lingkaran di akun pengujian kotak pasir saya "Pembelian berhasil" tetapi tidak sepenuhnya diproses di pihak Apple mereka menyebutnya sebagai loop mati.
Utas ini sedikit keluar jalur, tetapi saya melihat kesalahan asli yang sama saat menjalankan aplikasi melalui xcode di perangkat saya dengan akun kotak pasir ( Error: Cannot connect to iTunes Store
). Saya menggunakan 2.3.19, yang saya yakini sebagai yang terbaru.
Catatan dari apel terkait kesalahan ini: https://developer.apple.com/library/archive/technotes/tn2413/_index.html#//apple_ref/doc/uid/DTS40016228 -CH1-ERROR_MESSAGES-CANNOT_CONNECT_TO_ITUNES_STORE
Saya rasa dalam kasus saya, saya mendapatkan kesalahan ini saat mencoba berlangganan produk ketika saya sudah berlangganan. Tampaknya juga muncul saat saya berlangganan dan mencoba mengubah langganan saya (dengan memulai permintaan RNIAP.buySubscription
.
Untuk orang lain yang mengalami masalah ini, perhatikan juga "Aplikasi Anda berjalan di Simulator, yang tidak mendukung pembelian dalam aplikasi". adalah alasan lain mengapa Anda mendapatkan kesalahan ini. Harus melakukan ini di perangkat nyata.
Saya rasa dalam kasus saya, saya mendapatkan kesalahan ini saat mencoba berlangganan produk ketika saya sudah berlangganan. Tampaknya juga muncul saat saya berlangganan dan mencoba mengubah langganan saya (dengan memulai permintaan RNIAP.buySubscription baru.
Jadi, apa yang harus Anda lakukan dalam kasus ini? Bagaimana saya tahu jika produk tersebut benar-benar dibeli oleh pengguna? .. Saya mencoba memulihkan pembelian, tetapi tidak ada yang berubah
Komentar yang paling membantu
Untuk orang lain yang mengalami masalah ini, perhatikan juga "Aplikasi Anda berjalan di Simulator, yang tidak mendukung pembelian dalam aplikasi". adalah alasan lain mengapa Anda mendapatkan kesalahan ini. Harus melakukan ini di perangkat nyata.