stripe.go (709B)
1 package main 2 3 import ( 4 "github.com/gin-gonic/gin" 5 "github.com/stripe/stripe-go/v72" 6 "github.com/stripe/stripe-go/v72/webhook" 7 ) 8 9 func (e *Env) StripeEventHandler(c *gin.Context) { 10 ev := stripe.Event{} 11 12 payload, err := c.GetRawData() 13 if err != nil { 14 RespondError(c, 500, "%s: Unable to read payload", err.Error()) 15 return 16 } 17 18 ev, err = webhook.ConstructEvent(payload, c.GetHeader("Stripe-Signature"), 19 e.backend.Config.Stripe.WebhookKey) 20 if err != nil { 21 RespondError(c, 400, "%s: Unable to validate event", err.Error()) 22 return 23 } 24 25 if err := e.backend.StripeEventHandler(&ev); err != nil { 26 RespondError(c, 400, "%s: Unable to process event", err.Error()) 27 return 28 } 29 30 Respond(c, 200, nil) 31 }