# My Thoughts about Fast Checkout
https://shop.biggreenegg.com/big-green-egg-face-mask/
**case: pilih2 barang add to cart pilih barang lain kemudian fast checkout**
nyobain menambahkan item A >> add to cart
pilih item B >> add to cart
pilih item C >> fast checkout
di list checkout hanya item C yang muncul, tidak ada item A dan B yang sudah ada di cart
berbeda dengan menambahkan item A >> add to cart
pilih item B >> add to cart
buka cart >> fast checkout
analisa:
1. berarti items yang muncul saat melakukan fast checkout bisa berbeda tergantung dari page mana tombol tersebut di klik
**case: isi form tidak lengkap atau tidak sesuai**
jika semua form tidak diisi maka semua text box akan berwarna merah dan muncul alert `Email is required`
jika email sudah diisi maka text box lain tetap berwarna merah dan muncul alert `First Name is required`
begitu seterusnya sampai isi card zip code akan muncul alert berwarna hijau `validating payment information`
sudah isi semua form ketika `Complete Purchase` masih keluar alert error `Plese select a different shipping option or mailing address for this item`
analisa:
1. saat klik button `Complete Purchase` ada validasi di FE nya tentang keterisian required field, kesesuaian field (misal email harus benar), validasi shipping option
2. validasi yang dilakukan di nomor 1 hanya mengeluarkan alert error 1 saja sesuai urutan
3. di bagian `shipping address` sepertinya menggunakan api google untuk auto complete address nya
4. misal list item di checkout lebih dari 1 error mengenai shipping tetep sama yaitu `Plese select a different shipping option or mailing address for this item` saya sebagai user tidak tahu item mana yang tidak bisa dikirim ke alamat saya atau malah semuanya?
5. alert hijau `validating payment information` menurut saya tidak perlu karena masih bisa diisi dengan nilai yang salah baru ketika klik `Complete purchase` akan muncul error `cvc number is incorrect` padahal tadi keluar alert hijaunya jadi tidak singkron
**case: checkout belum selesai sudah keluar dari web**
dapet email notification yang didalamnya ada:
* cart items (disini cart nya belum yang terupdate, sempat ubah2 quantity tapi yg tercatat di email adalah quantity pertama kali masuk cart)
* url untuk complete your oder (kalau di klik linknya kemudian pilih fast checkout semua form nya kosong hanya terisi cart items)
analisa:
1. saat menambahkan items ke dalam cart maka ada penyimpanan sementara di FE (sepertinya memanfaatkan local storage/ session storage / cookies)
2. saat membuka url dan form nya kosong, kita bisa isi kembali dengan email yang berbeda dengan email pengiriman notif berarti payload yang tersimpan di dalamnya sepertinya hanya orderId
3. dari orderId bisa dicari kembali data cart items yang tersimpan di server (belum tahu pakai apa penyimpanannya apakah redis? no sql? karena ini isinya bisa dynamic dan cuma data cart dan email aja yang disimpan jadi kayaknya ga pakai sql)
**case: bolak balik buka url complete order kemudian isi form**
setelah bolak balik buka url untuk menyelesaikan order isi form dapet error shipping address akhirnya ketika buka url kembali keluar 1 page yang menyatakan alamat yang baru saja dimasukkan tidak disupport apakah mau menambahkan alamat lain atau cancel order?
pilih cancel order, buka email masih bisa klik url, dan bisa klik fast checkout cuma akan keluar page pilihan untuk cancel kembali
analisa:
1. saat cancel order di fast checkout tidak ada callback ke web biggreennya untuk invalidate url makanya masih bisa dibuka link nya dan di klik button fast checkout nya
2. setiap klik `fast checkout` berarti dia ambil dari local storage dulu untuk ambil data-data terakhir makanya kalo dibuka di window yang lain tetap aman
**analisa tambahan**
1. saat keluar dari web, email notif untuk menyelesaikan order tidak langsung didapat jadi sepertinya job nya dikumpulin di worker dulu menggunakan queue
2. dari sisi tampilan lebih nyaman digunakan di device laptop daripada mobile
3. lebih cepat pakai fast checkout daripada checkout normal karena ga perlu buat akun ataupun login
4. cuma karena aq ga bisa nyobain sampe berhasil karena error shipping tadi jadi penasaran kalo beneran berhasil checkout nanti tracking pesanannya bagaimana ya? apakah lewat email? atau nanti dikasih email notif lagi yang isinya sejenis nomer resi begitu?
**ringkasan**
1. saat klik fast checkout check dia ada di page mana
2. ambil dari penyimpanan sementara items sesuai page misal items dari cart atau halaman tertentu
3. user mengisi form
4. FE melakukan beberapa validasi
5. items dan email akan disimpan terlebih dahulu di penyimpanan sementara serta generate order id
6. FE juga melakukan cek status user apakah masih berada di fast checkout atau sudah keluar sebelum payment selesai
7. jika case nya user keluar sebelum payment selesai maka data di penyimpanan sementara berupa order id, items, dan email akan di kirim ke BE untuk masuk ke sumber data queue
8. BE menjalankan queue kemudian mengirimkan email notification
9. user membuka email, klik url, isi form seperti step 3
10. jika semua validasi terpenuhi maka user bisa melakukan payment