Merchant SDK for Go
Official Golang SDK for Longswipe merchant integrations.
A Go SDK for interacting with the Longwipe Merchant Platform API. This library simplifies API integration by providing an easy-to-use, idiomatic interface for managing merchants, vouchers, and payments.
Purpose
The purpose of this SDK is to:
- Abstract away the complexity of direct API interactions.
- Provide Go developers with a clean and consistent interface for the Merchant Platform.
- Ensure robust error handling, retry logic, and authentication.
Scope
The SDK supports the following features:
-
Authentication
- Support for API keys
-
Core Functionality
- Fetch_api: Fetch API keys
- Voucher: Manage voucher catalogs (verify voucher, fetch voucher redemption charges, redeem voucher, fetch admin charges, update admin charges).
- Invoice: Create and fetch invoices.
- Customer: Manage customer catalogs (CRUD operations for customers).
- Others: Fetch supported currencies and supported crypto-networks.
-
Utility Features
- Pagination: Simplified handling of paginated API responses.
- Retry Logic: Automatic retry for transient network errors.
- Custom HTTP Client: Support for custom HTTP configurations.
- Logging: Built-in support for request and error logging.
-
Developer Experience
- Thorough inline documentation.
- Easy-to-understand examples.
Installation
To install the SDK, use go get
:
go get github.com/Telktia-LTD/longswipe-go-sdk
Examples
Initialization
Here’s an example of how to initialize the SDK and perform basic operations:
package main
import (
"fmt"
"log"
"longswipe-go-sdk"
"time"
)
func main() {
client := longswipe.NewClient(longswipe.ClientConfig{
BaseURL: longswipe.PRODUCTION, // longswipe.SANDBOX
PublicKey: "YOUR_PUBLIC_API_KEY",
Timeout: 5 * time.Second,
PrivateKey: "YOUR_SECRET_API_KEY",
})
status, err := client.HealthCheck()
if err != nil {
log.Fatalf("Health check failed: %v", err)
}
fmt.Println("Service status:", status)
// FETCH ALL NETWORKS
networks, err := client.GetAllNetwork()
if err != nil {
log.Fatalf("network check failed: %v", err)
}
fmt.Println("Service status:", networks)
// FETCH ALL NETWORKS
currencies, err := client.GetAllCurrency()
if err != nil {
log.Fatalf("network check failed: %v", err)
}
fmt.Println("Service status:", currencies)
}
This example demonstrates:
- Initializing the SDK with custom configurations.
- Making an API request.
- Utilizing the service layer for fetching an API key.
Further Example
Here’s an example of how to work around the SDK and perform voucher operations:
package main
func main() {
client := longswipe.NewClient(longswipe.ClientConfig{
BaseURL: longswipe.PRODUCTION,
PublicKey: "YOUR_PUBLIC_API_KEY",
Timeout: 5 * time.Second,
PrivateKey: "YOUR_SECRET_API_KEY",
})
// VERIFY VOUCHER
res, err := client.VerifyVoucher(&longswipe.VerifyVoucherCodeRequest{VoucherCode: "LS3130635050"})
if err != nil {
log.Fatalf("verify voucher failed: %v", err)
}
fmt.Println("Service status:", res.Data.Balance)
// FETCH VOUCHER CHARGES
res, err := client.GetVoucherRedeemptionCharges(&longswipe.RedeemRequest{
VoucherCode: "LS3130635050",
Amount: 200,
LockPin: "",
ToCurrencyAbbreviation: "NGN",
})
if err != nil {
log.Fatalf("verify voucher failed: %v", err)
}
fmt.Println("Service status:", res.Data.Charges.TotalDeductable)
// REDEEM VOUCHER CHARGES
res, err := client.RedeemVoucher(&longswipe.RedeemRequest{
VoucherCode: "LS3130635050",
Amount: 100,
LockPin: "",
ToCurrencyAbbreviation: "NGN",
ReferenceId: "123456789",
MetaData: map[string]string{
"username": "YOUR USERNAME",
"email": "Your users email"
},
})
if err != nil {
log.Fatalf("verify voucher failed: %v", err)
}
fmt.Println("Service status:", res)
}
This example demonstrates:
- Initializing the SDK with custom configurations.
- Fetching customer with pagination.
- Adding new customer.
- Updating customer.
- Deleting customer.
You can refrence the example file for more examples