Tutorial Lengkap Integrasi Payment Gateway dari Midtrans menggunakan Go (Golang)
Payment gateway mungkin terdengar asing bagi kebanyakan orang pada zaman dahulu, dimana saat itu belum mengenal istilah ecommerce ataupun toko online. Namun, sekarang saat tulisan ini dibuat sudah bisa dibilang “wajib” bagi pelaku usaha (khususnya toko online) untuk menerapkan sistem payment bagi customer yang ingin membeli produknya.
Apa itu Payment Gateway?
Payment gateway adalah suatu sistem tentang cara otorisasi proses pembayaran dari pembeli ke penjual dalam transaksi elektronik. Saat ini banyak sekali penyedia layanan payment gateway yang mudah sekali untuk di terapkan didalam sistem yang sudah kita punya dari aplikasi yang sudah kita buat.
Midtrans
Salah satu penyedia payment gateway yang umumnya sudah mendukung banyak sekali channel pembayaran yang memudahkan pembeli untuk melakukan pembayaran ke penjual. Dari E-Wallet, Kartu Kredit sampai Cicilan tanpa kartu.
Requirement untuk Payment Gateway
persyaratan yang dibutuhkan sebelum melanjutkan postingan ini:
- Sudah punya akun midtrans. Daftar atau masuk.
- Sudah install Go. Lihat cara install golang pada dokumentasinya.
- Midtrans Server Key, yang akan dijelaskan pada bagian environment variable.
Pada saat tulisan ini dibuat saya menggunakan versi golang go1.19.3. Kalian bisa menyesuaikan dengan environment pada laptop masing-masing.
Membuat proyek baru
Kita akan membuat sebuah proyek baru sebagai backend API dan pada postingan ini kita tidak membutuhkan frontend karena akan memanfaatkan Snap API dari Midtrans
Membuat backend API
Buka command prompt atau terminal dan buat folder baru, lalu ubah ke folder proyek dengan menjalankan perintah berikut; Saya sendiri memberi nama folder midtrans-go:
mkdir midtrans-go
cd midtrans-go
Inisialisasi modul baru dengan menjalankan perintah berikut. Nama modulnya terserah saja, tetapi saya menggunakan nama midtrans-go:
go mod init midtrans-go
Install library yang dibutuhkan
go get -u github.com/gin-gonic/gin
go get -u github.com/midtrans/midtrans-go
go get github.com/joho/godotenv
go get github.com/go-playground/validator/v10
Struktur proyek
Struktur proyek yang aka kita buat terlihat seperti ini
Disini kita juga akan sedikit belajar tentang cara membuat RESTful API. Bagi kalian yang ingin mendalami atau mengetahui lebih lanjut tentang RESTful API dapatkan kursus gratisnya dari Eko Kurniawan Khannedy di website udemy
https://www.udemy.com/course/belajar-restful-api-untuk-pemula/
Atau tonton video youtubenya di channel Programmer Zaman Now
Membuat Model
Pertama kita akan membuat beberapa model atau struct di golang untuk request dan response juga error model
buka web/web_response.go dan paste kode berikut:
buka web/error_response.go dan paste kode berikut:
buka web/midtrans_request.go dan paste kode berikut:
buka web/midtrans_response.go dan paste kode berikut:
Membuat Helper
Helper yang kita buat sederhana, hanya utilitas yang membantu untuk catch error
buka helper/util_helper.go dan paste kode berikut:
Membuat Initializer
Fungsinya untuk inisialisasi kode secara global
buka initializer/load_env.go dan paste kode berikut:
Membuat Service
Selanjutnya membuat service sebagai logic bussines API kita
buka service/midtrans_service.go dan paste kode berikut:
buka service/midtrans_service_impl.go dan paste kode berikut:
Membuat Controller
Kita akan membuat controller yang dibutuhkan untuk menerima request detail pembayaran
buka controller/midtrans_controller.go dan paste kode berikut:
buka controller/midtrans_controller_impl.go dan paste kode berikut:
Membuat Middleware
Middleware yang akan kita gunakan adalah error middleware untuk menerima error secara global saat request
buka middleware/error_middleware.go dan paste kode berikut:
Main function
Berikutnya tambahkan main function sebagai core API yang kita buat
buka main.go dan paste kode berikut:
Env Variable
Terakhir tambahkan variable pada env untuk seting kredensial dan port
buka file .env dan paste kode berikut:
PORT=8181
MIDTRANS_SERVER_KEY=<<SERVER_KEY>>
Ganti <<SERVER_KEY>> dengan server key yang didapat pada sandbox midtrans disini. Berikut tampilan pada dashboard sandbox midtrans:
Testing API
Testing API yang sudah kita buat dengan Postman
Pertama kita run proyek terlebih dahulu
cd midtrans-go
go run main.go
Lalu API akan berjalan pada http://localhost:8181 dan portnya bisa kita sesuaikan di file .env. Buka postman lalu isikan seperti berikut, jika berhasil akan terlihat response token dan redirect_url
Karena kita menggunakan Snap API dari Midtrans, maka response token yang muncul akan kita gunakan hanya jika ingin membuat tombol ‘Bayar Sekarang’ secara manual di frontend seperti pada panduan integrasi snap payment page.
Namun, ada cara yang lebih mudah yaitu dengan redirect_url yang bisa kita berikan kepada end-user.
Jika redirect_url kita buka di browser, hasilnya akan seperti berikut:
Mungkin postingan selanjutnya kita akan membuat endpoint URL Notification untuk menerima status pembayarannya, error, sukses ataupun pending.
Terimakasih…