Tutorial Lengkap Integrasi Payment Gateway dari Midtrans menggunakan Go (Golang)

Cecep Aprilianto
4 min readNov 14, 2022

--

Midtrans love 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:

  1. Sudah punya akun midtrans. Daftar atau masuk.
  2. Sudah install Go. Lihat cara install golang pada dokumentasinya.
  3. 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

Struktur Proyek Backend API — Golang

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:

Dashboard Sanbox 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

Postman

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:

Sandbox Redirect Url

Mungkin postingan selanjutnya kita akan membuat endpoint URL Notification untuk menerima status pembayarannya, error, sukses ataupun pending.

Terimakasih…

Source Code

--

--

Cecep Aprilianto
Cecep Aprilianto

Written by Cecep Aprilianto

Web and Backend Developer at Internet

No responses yet