loginWithOtp menyatukan langkah 2 dan 3 dengan penanganan ambiguitas.
Alur tiga langkah
Langkah 1: requestOtp
send_otp melaporkan sukses tetapi kode ditahan diam-diam. Bila akun tak berpassword, langkah kedua faktor dilewati.
ShopeeOtpChallenge membawa channel, availableChannels, deviceFingerprint, dan cookie. Bila channel yang diminta tidak tersedia, requestOtp melempar ConfigError. Lihat Device risk.
Langkah 2: verifyOtp
verifyOtp mengembalikan ShopeeOtpVerification berisi state akun-sesi dan daftar merchants. Objek verification dapat dipakai ulang untuk memilih merchant tanpa OTP kedua.
Langkah 3: completeLogin
completeLogin menukar hasil verifikasi menjadi ShopeeSession, membaca merchant credential dari cookie, lalu mengambil profil dan seluruh store. Bila merchantId tidak diberikan dan hanya satu merchant yang dapat dipakai, merchant itu dipilih otomatis; bila ambigu, ia melempar ConfigError dengan availableMerchants.
loginWithOtp untuk multi-merchant
loginWithOtp menggabungkan langkah 2 dan 3 dalam satu panggilan dan mengembalikan ShopeeLoginOutcome.
ShopeeLoginOutcome adalah union:
{ status: "complete", session }- merchant tidak ambigu (merchantIddiberikan, atau hanya satu merchant usable).{ status: "merchant-selection-required", verification, merchants }- akun mengakses lebih dari satu merchant usable dan tak adamerchantId. Bawaverificationreusable dan daftarmerchantsagar picker dapat ditampilkan lalu diselesaikan dengancompleteLogin- tanpa OTP kedua.
Perilaku ini menggantikan lemparan lama pada ambiguitas. Caller yang membaca
sesi langsung harus switch pada
outcome.status lebih dulu. Helper
usableMerchants(merchants) dan resolveSingleMerchant(merchants) diekspor
untuk mendeteksi ambiguitas sebelum berkomitmen pada login.Login lewat CLI
set-qris shopee. Lihat Ikhtisar CLI.
CAPTCHA
Bila Shopee meminta CAPTCHA, library melemparCaptchaRequiredError dengan code CAPTCHA_REQUIRED:
Referensi
Lihat Referensi API ShopeeProvider untuk tanda tangan lengkap dan tipe untukShopeeOtpChallenge, ShopeeOtpVerification, ShopeeSession, dan ShopeeLoginOutcome.