‫-: Baiklah.
‫Jadi sekarang mari kita buat dokumen pemesanan baru di database
‫kita setiap kali pengguna berhasil membeli tur.
‫Jadi kita kembali ke sini di
‫pengontrol pemesanan dan
‫dalam tender mentah, yang menciptakan sesi checkout, bukan?
‫Dan ingat bahwa di sini kita memiliki url sukses ini
‫dan url ini adalah dasar dari fungsionalitas yang
‫akan kita terapkan dalam kuliah ini.
‫Jadi setiap kali check out
‫berhasil, browser akan secara otomatis masuk ke url
‫ini, yang saat ini pada dasarnya hanyalah beranda kami, bukan?
‫Ini juga pada saat ini,
‫jadi ketika checkout berhasil, kami ingin membuat
‫pemesanan baru, bukan?
‫Jadi pada dasarnya kami ingin
‫membuat pemesanan baru setiap kali url ini diakses.
‫Sekarang kita bisa membuat rute baru untuk kesuksesan ini, tapi
‫kemudian kita harus membuat halaman baru dan itu
‫tidak terlalu berharga dalam kasus ini.
‫Dan itu karena apa yang akan kita
‫lakukan dalam kuliah ini hanyalah
‫solusi sementara karena tidak terlalu aman, oke?
‫Jadi ingat bagaimana kami mengatakan beberapa
‫kuliah yang lalu dan diagram yang bagus bahwa
‫nanti ketika sebuah situs web benar-benar digunakan di server
‫kami akan mendapatkan akses ke objek sesi setelah
‫pembelian selesai menggunakan Stripe Webhooks.
‫Jadi, webhook ini akan sempurna bagi
‫kami untuk membuat pemesanan baru.
‫Oke?
‫Tapi untuk saat ini, karena kita
‫belum bisa melakukannya, mari
‫kita gunakan solusi, yang hanya menempatkan data yang kita
‫butuhkan untuk membuat pemesanan baru langsung ke url ini sebagai string kueri.
‫Oke?
‫Dan kita perlu membuat string kueri karena Stripe
‫hanya akan membuat permintaan get ke url ini di sini,
‫jadi kami tidak dapat benar-benar mengirim badan atau data apa
‫pun dengannya kecuali untuk string kueri.
‫Baiklah?
‫Jadi mari kita lakukan dan apa yang kita butuhkan di sini pada
‫dasarnya adalah tiga bidang wajib dalam model pemesanan kita.
‫Jadi tur,
‫pengguna, dan harga.
‫Jadi tur
‫sama dengan req.
‫param
‫wisata kan?
‫Jadi apa yang saya lakukan di sini?
‫Jadi itu benar.
‫Selanjutnya kita membutuhkan pengguna.
‫Jadi pengguna, yang sesuai
‫permintaan. pengguna. Indo.
‫Dan yang terakhir kita butuh
‫harga,
‫yaitu pada saat tour. harga.
‫Baiklah.
‫Sekarang seperti yang saya katakan
‫sebelumnya, ini tentu saja tidak
‫aman sama sekali karena
‫sekarang siapa pun yang mengetahui struktur url ini di
‫sini dapat dengan mudah memanggilnya tanpa melalui proses checkout, bukan?
‫Jadi siapa pun
‫benar-benar bisa memesan tur tanpa harus membayar.
‫Yang harus mereka lakukan adalah membuka url ini
‫dengan tur, pengguna, dan harga,
‫lalu mereka akan secara otomatis membuat pemesanan baru
‫bahkan tanpa membayar, oke?
‫Jadi sekali lagi, tidak benar-benar aman, tetapi untuk
‫saat ini sebagai solusi bekerja
‫dengan baik karena tidak banyak orang tentu akan
‫tahu bahwa ini url sukses kami.
‫Oke?
‫Karena sebenarnya kita akan menyembunyikan
‫fakta itu sebentar lagi, oke?
‫Jadi sekarang mari kita buat fungsi yang benar-benar akan membuat pemesanan
‫baru di database.
‫Jadi itu akan mengekspor dot create
‫booking checkout dan itu
‫disebut create booking checkout karena nanti kita juga
‫akan membuat booking, yang
‫kemudian akan dapat diakses
‫dari API
‫pemesanan
‫kita.
‫Baiklah.
‫Bagaimanapun.
‫Di sini seperti biasa.
‫Dan mari kita mulai dengan mendapatkan data kita dari string kueri.
‫Dan untuk itu saya akan menggunakan structuring.
‫Jadi
‫tur, pengguna,
‫dan harga tersedia berdasarkan permintaan. pertanyaan.
‫Jadi ingat itu adalah string kueri.
‫Kemudian kita sebenarnya hanya ingin membuat
‫pemesanan baru jika semua ini di sini ditentukan.
‫Jadi pada dasarnya kami mengatakan bahwa jika mereka tidak ada maka kami beralih
‫dan pergi ke middleware berikutnya.
‫Jadi itu prosedur standar kami, kan?
‫Jadi kami katakan bahwa
‫jika tidak ada
‫tur dan tidak ada pengguna
‫dan tidak ada harga.
‫Jadi pada dasarnya kami mengharuskan semua itu ada.
‫Dan dalam hal ini, kita pergi ke
‫middleware berikutnya.
‫Sekarang apa sebenarnya middleware berikutnya?
‫Ingatlah bahwa kami
‫ingin membuat pemesanan baru di url beranda ini.
‫Jadi yang ini di sini.
‫Karena sekali lagi itulah
‫url yang dipanggil setiap kali pembelian berhasil dengan Stripe.
‫Jadi yang perlu kita lakukan adalah menambahkan fungsi middleware yang sedang kita
‫buat sekarang ke tumpukan middleware dari
‫route handler ini.
‫Jadi apa pengendali rute itu?
‫Nah itu di view route
‫dan yang ini, kan?
‫Jadi itu mungkin terdengar agak membingungkan.
‫Namun lagi-lagi inilah rute
‫yang akan dilalui ketika kartu kredit berhasil di-charge.
‫Dan ini juga merupakan titik waktu di mana kami ingin membuat
‫pemesanan baru.
‫Jadi di sinilah kita perlu menambahkan fungsi
‫middleware itu jadi mari kita lakukan itu dan memerlukan
‫pengontrol kita dan sekarang kita
‫hanya akan menduplikasi ini di sini.
‫Jadi pengontrol pemesanan dan
‫sekarang saya akan benar-benar mengedit di sini di awal karena tidak masalah
‫jika kita masuk atau tidak untuk ini.
‫Jadi pengontrol pemesanan. dapatkan, atau
‫benar-benar membuat
‫pemesanancheckout.
‫Berikan save dan
‫oke.
‫Dan sekali lagi ini hanya sementara sampai
‫kami benar-benar memiliki situs web kami dikerahkan
‫ke server di
‫mana kami kemudian dapat membuat solusi yang lebih baik untuk ini.
‫Oke?
‫Jadi di sini, di pengontrol pemesanan,
‫sekarang saatnya untuk benar-benar membuat pemesanan baru itu.
‫Jadi sebenarnya kita sekarang perlu mengimpor model itu.
‫Jadi mari kita lakukan itu di sini.
‫Pemesanan dan
‫model pemesanan di sini juga.
‫Dan untuk beberapa alasan di sini saya memiliki jalan yang aneh ini.
‫Jadi ini tidak masuk akal sama sekali.
‫Saya tidak yakin mengapa saya menulis mereka seperti ini saat itu.
‫Jadi apa yang kita miliki di sana persis sama dengan ini.
‫Tapi tentu saja ini lebih mudah dibaca.
‫Bagaimanapun.
‫Sekarang mari kita buat pemesanan itu.
‫Dan untuk itu kita
‫harus menunggu pemesanan. buat dengan
‫objek
‫wisata, pengguna, dan harga.
‫Dan itu saja.
‫Sekarang kita juga perlu menandai
‫yang ini di sini sebagai async dan
‫seperti biasa catchasync.
‫Oke?
‫Dan kami tidak menyimpan ini ke
‫variabel apa pun dengan baik karena kami tidak benar-benar membutuhkannya.
‫Kami tidak akan mengirimkan ini kembali sebagai respons API.
‫Pada titik ini semua yang ingin kita lakukan di sini
‫adalah membuat dokumen baru itu, oke?
‫Selanjutnya
‫kita bisa mengatakan selanjutnya, seperti ini.
‫Dan itu akan
‫menjadi middleware berikutnya tetapi itu tidak terlalu ideal.
‫Jadi sekali lagi perlu diingat bahwa middleware berikutnya
‫dalam stack tentu saja yang ini
‫dan mendapatkan gambaran umum.
‫Jadi pada dasarnya
‫fungsi yang akan membuat halaman kita.
‫Tapi ingat bahwa url ini adalah semua ini.
‫Jadi semua ini dengan semua data ini di sini.
‫Dan sekali lagi itu tidak aman sama sekali.
‫Jadi setidaknya mari kita
‫membuatnya sedikit lebih aman, oke?
‫Jadi yang
‫bisa kita lakukan di sini adalah mengarahkan ulang
‫aplikasi sekarang hanya ke url ini.
‫Jadi pada dasarnya Anda
‫menghapus string kueri dari url asli.
‫Jadi sebenarnya kita
‫sekarang akan menggunakan sesuatu yang tidak pernah kita gunakan sebelumnya.
‫Jadi itu bagus, kan?
‫Jadi kita akan menggunakan redirect.
‫Baiklah?
‫Jadi sekarang yang
‫kita inginkan adalah seluruh url, tetapi tanpa string kueri.
‫Jadi apa yang bisa kita
‫lakukan adalah hanya
‫melakukan cheat dan menyalin ini di sini.
‫Tapi mari kita membuatnya sedikit lebih elegan.
‫Jadi yang kami lakukan adalah permintaan. theoriginalurl, yang sudah kita gunakan
‫sebelumnya.
‫Dan itulah seluruh url yang
‫pada dasarnya dari mana permintaan itu datang.
‫Dan sekarang yang
‫perlu kita lakukan adalah membaginya dengan tanda tanya.
‫Benar?
‫Karena itulah pembatas antara bagian yang sebenarnya
‫kita inginkan dan string kueri.
‫Jadi jika kita membaginya dengan tanda tanya,
‫maka kita akan memiliki array di
‫mana elemen pertama adalah ini dan elemen kedua adalah sisanya.
‫Jadi string kueri itu sendiri.
‫Jadi di
‫sini kita mengambil elemen pertama dan itu adalah beranda kita.
‫Jadi url rute kami.
‫Dan apa yang dilakukan redirect di sini pada dasarnya adalah membuat permintaan
‫baru tetapi ke url baru yang kami lewati di sana.
‫Baiklah?
‫Jadi ini sekarang akan
‫membuat permintaan lain ke url rute kami.
‫Jadi kita akan kembali ke rute ini.
‫Dan sekali lagi kita akan membahas middleware ini di sini.
‫Jadi yang baru saja kita buat.
‫Jadi untuk kedua kalinya kami akan membahasnya tetapi sekarang tur, pengguna, dan harga
‫tidak lagi ditentukan.
‫Dan kemudian kita akan pergi ke middleware berikutnya,
‫yang terakhir adalah
‫fungsi get Overview Handler, yang kemudian kita akan merender homepage, oke?
‫Masuk akal?
‫Jadi ini semacam lingkaran.
‫Jadi pada dasarnya pada
‫awalnya kita akan mencapai rute ini di sini.
‫Kemudian pemesanan baru di
‫sini dibuat dan kami mengarahkan aplikasi lagi
‫ke rute ini, kali ini tanpa string kueri.
‫Jadi tanpa
‫string kueri dan middleware ini, kami
‫langsung beralih ke yang berikutnya.
‫Dan baru kemudian
‫kita bisa masuk dan mendapatkan gambaran umum.
‫Baiklah?
‫Dan jadi itu sebenarnya, oke?
‫Nah itu di sini saja
‫yang ini hanya sementara
‫karena tidak aman.
‫Semua orang dapat melakukan pemesanan
‫tanpa membayar.
‫Jadi sekali lagi itu akan mengerikan bagi bisnis.
‫Oke, sekarang saatnya untuk menguji ini.
‫Dan sebenarnya saya ingin melakukannya dengan pengguna lain yang kami buat
‫yaitu jonas@mailsac.
‫Dan itu karena
‫saya ingin melihat apakah kita benar-benar mendapatkan tanda terima email itu dari Stripe.
‫Jadi mari
‫kita masuk dengan pengguna itu ke situs web kita.
‫Jadi logout.
‫Nah itu tidak bekerja.
‫Itu aneh.
‫Ayo isi ulang.
‫Dan itu seharusnya berfungsi jadi mari kita lihat apakah kita memiliki beberapa kesalahan
‫dalam javascript kita.
‫Karena itu sebenarnya yang dihadapi klien dan kami
‫mendapatkan Stripe tidak ditentukan.
‫Mari kita lihat apakah kita memiliki kesalahan yang sama
‫di halaman ini, yang seharusnya tidak, bukan?
‫Dan sebenarnya
‫itu tidak ada di sana, tetapi kembali ke semua tur.
‫Ya, itu ada.
‫Jadi solusinya adalah memindahkannya
‫dari tur pada dasarnya ke semua halaman.
‫Baiklah?
‫Jadi untuk beberapa alasan bundler paket
‫melakukannya sehingga perlu berada di sini dalam lingkup utama
‫untuk mereka semua.
‫Jadi untuk semua halaman, oke?
‫Jadi sebenarnya mari kita letakkan itu di bagian bawah di
‫sini sebelum bundel kita.
‫Baiklah?
‫Coba lagi dan sekarang kami siap melakukannya.
‫Jadi
‫logout dan itu berhasil.
‫Sekarang masuk.
‫Tentu saja sekarang salinan kami hilang.
‫Satu dua tiga empat.
‫Tidak, itu tidak benar.
‫Tes satu dua tiga empat.
‫Jadi saya kira saya mengubah kata sandi di beberapa titik, jadi mari kita
‫coba kata sandi
‫baru, yang juga tidak berfungsi.
‫Mari kita coba melewati satu dua tiga empat
‫dan itu berhasil.
‫Jadi bukan tes satu dua tiga
‫empat, tapi lulus satu dua tiga empat.
‫Setidaknya di sini dalam kasus saya.
‫Jadi yuk coba booking katakanlah para
‫pecinta olahraga.
‫Baiklah.
‫Dibawah sini.
‫Pesan tur dan itu
‫masih berfungsi dan itu yang
‫mahal.
‫(tertawa) Jadi empat dua empat dua
‫dan kemudian empat dua
‫sampai akhir.
‫Lalu inilah beberapa bulan dan ini adalah beberapa angka.
‫Katakanlah seluruh nama saya
‫di sini dan sekarang mari kita bayar.
‫Dan saya akan melihat bilah url.
‫Dan memang kami mendapatkan
‫homepage kami sehingga url rute kami tanpa string kueri yang kami tentukan sebelumnya.
‫Jadi itu berarti ada sesuatu yang berhasil.
‫Jadi mari kita lihat kompas dan klik di sini untuk memuat
‫ulang dan kami mendapatkan koleksi pemesanan kami.
‫Dan itu pertanda baik.
‫Dan memang di sini kita pergi.
‫Dokumen pertama kami dibuat.
‫Jadi ingat itu harga itu.
‫Mari kita lihat juga id
‫pengguna yang satu ini berakhiran delapan E tiga B.
‫Jadi delapan E tiga B, itu benar.
‫Dan saya berasumsi bahwa turnya juga akan benar.
‫Begitu sempurna.
‫Itu juga berhasil dan sekarang kami benar-benar memiliki
‫cara untuk membuat pemesanan
‫setiap kali pemesanan terjadi dengan Stripe.
‫Mari kita juga cepat memeriksa dasbor kita di sini lagi.
‫Itu sangat menyenangkan.
‫Dan saya kira saya hanya perlu memuat ulang di sini.
‫Jadi mari kita lihat.
‫Ini jonas di apapun yang kami beri nama itu.
‫Kami punya
‫pecinta
‫olahraga dan sempurna.
‫Itu bekerja sekarang.
‫Dan tugas akhir.
‫Sekarang mari kita periksa mailsac.
‫Kantong surat.
‫com dan lihat apakah saya mendapatkan
‫email saya di sana.
‫Dan sebenarnya saya tidak melakukannya, tapi
‫itu bukan masalah besar.
‫Saya tidak yakin mungkin itu tidak berfungsi dengan data uji.
‫Jadi untuk sekarang itu saja yang
‫harus saya tunjukkan kepada Anda tentang integrasi Stripe.
‫Sekarang sekali
‫lagi setelah situs web diterapkan, kami kemudian akan benar-benar menggunakan
‫Stripe Webhooks untuk
‫membuat pemesanan dengan cara yang lebih aman dan jauh lebih baik.
‫Baiklah?
‫Jadi mari kita luangkan waktu sebentar untuk merangkum apa yang telah kita lakukan di sini.
‫Jadi pada dasarnya kami
‫menambahkan semua variabel yang kami butuhkan
‫untuk membuat pemesanan baru ke url sukses.
‫Kemudian kami menambahkan fungsi middleware baru
‫di sini ke tumpukan rute yang tepat itu.
‫Jadi yang ini di sini.
‫Jadi seperti
‫ini setiap kali url ini diklik, kami akan mencoba membuat pemesanan baru.
‫Baiklah?
‫Tetapi pemesanan baru itu tentu saja hanya dibuat ketika tur, pengguna, dan
‫harga ditentukan dalam kueri.
‫Jadi dalam fungsi middleware ini, jika mereka ditentukan pada kueri
‫dengan baik maka kami membuat pemesanan
‫baru di sini.
‫Kemudian setelah itu selesai, kami menghapus string kueri dari
‫url untuk membuat seluruh proses sedikit kurang transparan
‫bagi pengguna.
‫Pada dasarnya agar seluruh string
‫kueri tidak muncul di bilah url browser kami.
‫Dan kemudian di sini kita
‫mengarahkan aplikasi kita ke url rute baru ini di sini, oke?
‫Jadi dengan cara ini middleware di
‫sini akan dilewati dan kemudian beranda normal kita akan dirender.
‫Baiklah?
‫Mari kita singkirkan kesalahan aplikasi ini di
‫sini dan pabrik yang sebenarnya akan kita butuhkan di kuliah berikutnya.
‫Jadi dalam kuliah berikutnya kami akan
‫benar-benar menerapkan satu bagian terakhir dari situs web kami, yang
‫pada dasarnya adalah halaman ini di sini untuk pemesanan saya.
‫Dan apa yang akan dilakukan halaman ini pada dasarnya adalah menampilkan
‫satu kartu tur untuk setiap tur yang telah kami pesan.
‫Jadi terlihat
‫sangat mirip dengan beranda ini, tetapi hanya dengan
‫tur yang telah dipesan oleh pengguna yang saat ini masuk, oke?
‫Jadi itu fitur yang bagus untuk sebuah situs web, bukan?
‫Jadi mari kita urus itu di yang berikutnya.