api.spaceplanner.app

Spaceplanner API
git clone git://jacobedwards.org/api.spaceplanner.app
Log | Files | Refs

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 }