DEV Community

Cover image for Monnify Payment Gateway with Golang v1.4.0
Mathias Jiya
Mathias Jiya

Posted on • Edited on

Monnify Payment Gateway with Golang v1.4.0

There have been a lot of updates to the monnify-go library since the last time I published an article on this subject.
Today' article is on the updates in the library as the previous methods in the library were updated alongside their request payload and some other new methods were added to the library as well.
The monnify-go library is now in its v1.4.0 and it contains all the API endpoints made available by monnify. This library (monnify-go) is properly documented as there is an example code for each of the methods available in the package to make it easy for anyone to use. You can visit the monnify-go github repo for the complete documentation of all the methods in the library.
Here are some code sample below:

Get Disburstment Wallet Balance

Use this to get disburstment wallet balance

package main import ( "fmt" monnify "github.com/iqquee/monnify-go" "github.com/iqquee/monnify-go/transaction" ) func main() { apiKey := "" secretKey := "" baseUrl := "https://sandbox.monnify.com" monnify.Options(apiKey, secretKey, baseUrl) walletId := "123" res, status, err := transaction.GetDisburstmentWalletBal(walletId) if err != nil { fmt.Println(err) } fmt.Println(status) fmt.Println(res) } 
Enter fullscreen mode Exit fullscreen mode

Accept Payment

Use this to accept payments from customers

Use this object payload to implement the AcceptPayment() method

Note: CurrencyCode should be "NGN" for naira

type AcceptPaymentReq struct { PaymentReference string `json:"paymentReference"` Amount int `json:"amount"` CurrencyCode string `json:"currencyCode"` ContractCode string `json:"contractCode"` CustomerEmail string `json:"customerEmail"` CustomerName string `json:"customerName"` CustomerPhoneNumber string `json:"customerPhoneNumber"` RedirectUrl string `json:"redirectUrl"` PaymentDescription string `json:"paymentDescription"` } 
Enter fullscreen mode Exit fullscreen mode
package main import ( "fmt" monnify "github.com/iqquee/monnify-go" "github.com/iqquee/monnify-go/transaction" ) func main() { apiKey := "" secretKey := "" baseUrl := "https://sandbox.monnify.com" // for test monnify.Options(apiKey, secretKey, baseUrl) payload := transaction.AcceptPaymentReq{} res, status, err := transaction.AcceptPayment(payload) if err != nil { fmt.Println(err) } fmt.Println(status) fmt.Println(res) } 
Enter fullscreen mode Exit fullscreen mode

Get Accepted Payment Status

Use this to get accepted payment status

package main import ( "fmt" monnify "github.com/iqquee/monnify-go" "github.com/iqquee/monnify-go/transaction" ) func main() { apiKey := "" secretKey := "" baseUrl := "https://sandbox.monnify.com" // for test monnify.Options(apiKey, secretKey, baseUrl) paymentReference := "ref123" res, status, err := transaction.GetTransactionStatus(paymentReference) if err != nil { fmt.Println(err) } fmt.Println(status) fmt.Println(res) } 
Enter fullscreen mode Exit fullscreen mode

Initiate Single Transfer

Use this to initiate single transfers

Use this object payload to implement the InitiateSingleTransfer() method

type InitiateSingleTransferReq struct { Amount int `json:"amount"` Reference string `json:"reference"` Narration string `json:"narration"` BankCode int `json:"bankCode"` Currency string `json:"currency"` AccountNumber int `json:"accountNumber"` WalletId string `json:"walletId"` } 
Enter fullscreen mode Exit fullscreen mode
package main import ( "fmt" monnify "github.com/iqquee/monnify-go" "github.com/iqquee/monnify-go/transaction" ) func main() { apiKey := "" secretKey := "" baseUrl := "https://sandbox.monnify.com" // for test monnify.Options(apiKey, secretKey, baseUrl) payload := transaction.InitiateSingleTransferReq{} res, status, err := transaction.InitiateSingleTransfer(payload) if err != nil { fmt.Println(err) } fmt.Println(status) fmt.Println(res) } 
Enter fullscreen mode Exit fullscreen mode

Single Transfer Details

Use this to get the initiated single transfer details

package main import ( "fmt" monnify "github.com/iqquee/monnify-go" "github.com/iqquee/monnify-go/transaction" ) func main() { apiKey := "" secretKey := "" baseUrl := "https://sandbox.monnify.com" // for test monnify.Options(apiKey, secretKey, baseUrl) paymentReference := "ref123" res, status, err := transaction.GetSingleTransferDetails(paymentReference) if err != nil { fmt.Println(err) } fmt.Println(status) fmt.Println(res) } 
Enter fullscreen mode Exit fullscreen mode

Initiate Bulk Transfer

Use this to initiate bulk transfer

Use this object payload to implement the InitiateBulkTransfer() method

Note: Use BREAK to tell Monnify to reject the entire batch and use CONTINUE to tell Monnify to process the valid transactions for the OnValidationFailure field

type InitiateBulkTransferReq struct { Title string `json:"title"` BatchReference string `json:"batchReference"` Narration string `json:"narration"` WalletId string `json:"walletId"` OnValidationFailure string `json:"onValidationFailure"` NotificationInterval int `json:"notificationInterval"` TransactionList []InitiateBulkTransferReqTransactionList `json:"transactionList"` } type InitiateBulkTransferReqTransactionList struct { Amount string `json:"amount"` Reference string `json:"reference"` Narration string `json:"narration"` BankCode string `json:"bankCode"` AccountNumber string `json:"accountNumber"` Currency string `json:"currency"` } 
Enter fullscreen mode Exit fullscreen mode
package main import ( "fmt" monnify "github.com/iqquee/monnify-go" "github.com/iqquee/monnify-go/transaction" ) func main() { apiKey := "" secretKey := "" baseUrl := "https://sandbox.monnify.com" // for test monnify.Options(apiKey, secretKey, baseUrl) payload := transaction.InitiateBulkTransferReq{} res, status, err := transaction.InitiateBulkTransfer(payload) if err != nil { fmt.Println(err) } fmt.Println(status) fmt.Println(res) } 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)