Integrating Stripe with Golang
Stripe is a powerful payment processing platform that offers robust APIs for managing payments, subscriptions, and customers. In this blog post, we'll walk you through how to integrate Stripe with Golang to manage customers and subscriptions, including checking if a subscription is valid.
Setting Up the Stripe Go Client
Before you start, you'll need to install the Stripe Go library. Run the following command to add it to your project:
go get -u github.com/stripe/stripe-go/v72
Next, import the necessary Stripe packages and set up your API key:
package main
import (
"fmt"
"log"
"github.com/stripe/stripe-go/v72"
"github.com/stripe/stripe-go/v72/customer"
"github.com/stripe/stripe-go/v72/sub"
)
func main() {
// Set your Stripe secret key
stripe.Key = "sk_test_your_secret_key"
}
Retrieving a Customer from Stripe
To retrieve a customer using their customer ID, use the following code:
package main
import (
"fmt"
"log"
"github.com/stripe/stripe-go/v72"
"github.com/stripe/stripe-go/v72/customer"
)
func main() {
stripe.Key = "sk_test_your_secret_key"
// Retrieve a customer by ID
c, err := customer.Get("cus_Jz4a7Rl9KD1A4c", nil)
if err != nil {
log.Fatalf("Error retrieving customer: %v", err)
}
fmt.Printf("Customer: %v\n", c)
}
Retrieving a Subscription
To retrieve a subscription for a customer, use the following code:
package main
import (
"fmt"
"log"
"github.com/stripe/stripe-go/v72"
"github.com/stripe/stripe-go/v72/sub"
)
func main() {
stripe.Key = "sk_test_your_secret_key"
// Retrieve a subscription by ID
subscription, err := sub.Get("sub_Jz4a5cde9KD1A2b", nil)
if err != nil {
log.Fatalf("Error retrieving subscription: %v", err)
}
fmt.Printf("Subscription: %v\n", subscription)
}
Checking if a Subscription is Valid
To check if a subscription is active or valid, you can examine the status of the subscription:
package main
import (
"fmt"
"log"
"github.com/stripe/stripe-go/v72"
"github.com/stripe/stripe-go/v72/sub"
)
func main() {
stripe.Key = "sk_test_your_secret_key"
// Retrieve a subscription by ID
subscription, err := sub.Get("sub_Jz4a5cde9KD1A2b", nil)
if err != nil {
log.Fatalf("Error retrieving subscription: %v", err)
}
// Check if the subscription is active
if subscription.Status == stripe.SubscriptionStatusActive {
fmt.Println("Subscription is active")
} else {
fmt.Printf("Subscription status: %v\n", subscription.Status)
}
}
Conclusion
Integrating Stripe with Golang is straightforward, allowing you to manage customers and subscriptions with ease. By following the steps outlined in this post, you can quickly set up a Stripe integration in your Go applications, enabling powerful payment processing capabilities. Whether you're retrieving customer details, managing subscriptions, or checking the validity of a subscription, the Stripe Go library provides the tools you need to build robust and scalable payment systems.