Payments — Go SDK
Create a transaction
tx, err := client.Transactions.Create(&simiz.TransactionParams{
Amount: 5000,
Currency: "XAF",
PaymentMethod: "ORANGE_MONEY",
Payer: &simiz.Payer{
Phone: "237690000000",
Name: "John Doe",
Email: "john@example.com",
},
Description: "Order #12345",
Reference: "ORDER-123",
Metadata: map[string]string{
"order_id": "123",
},
CallbackURL: "https://your-site.com/webhooks/simiz",
ReturnURL: "https://your-site.com/success",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Transaction ID: %s\n", tx.ID)
fmt.Printf("Status: %s\n", tx.Status)
Retrieve a transaction
tx, err := client.Transactions.Retrieve("tx_xxx")
if err != nil {
log.Fatal(err)
}
if tx.Status == "COMPLETED" {
fmt.Println("Payment successful!")
}
List transactions
transactions, err := client.Transactions.List(&simiz.ListParams{
Limit: 20,
Status: "COMPLETED",
CreatedAfter: "2024-01-01",
})
for _, tx := range transactions.Data {
fmt.Printf("%s: %d %s\n", tx.ID, tx.Amount, tx.Currency)
}
Create a refund
refund, err := client.Refunds.Create(&simiz.RefundParams{
TransactionID: "tx_xxx",
Amount: 2500,
Reason: "Item returned",
})
Webhook verification
func webhookHandler(w http.ResponseWriter, r *http.Request) {
payload, _ := io.ReadAll(r.Body)
signature := r.Header.Get("X-Simiz-Signature")
ok := client.Webhooks.VerifySignature(payload, signature, webhookSecret)
if !ok {
http.Error(w, "Invalid signature", http.StatusUnauthorized)
return
}
var event simiz.WebhookEvent
json.Unmarshal(payload, &event)
switch event.Type {
case "payment.succeeded":
fmt.Printf("Payment received: %s\n", event.Data.ID)
case "payment.failed":
fmt.Printf("Payment failed: %s\n", event.Data.ID)
}
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(map[string]bool{"received": true})
}

