github.com/stripe/stripe-go/v76@v76.25.0/webhook/client_handler_test.go (about) 1 package webhook_test 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "log" 7 "net/http" 8 9 "github.com/stripe/stripe-go/v76/webhook" 10 ) 11 12 func Example() { 13 http.HandleFunc("/webhook", func(w http.ResponseWriter, req *http.Request) { 14 // Protects against a malicious client streaming us an endless request 15 // body 16 const MaxBodyBytes = int64(65536) 17 req.Body = http.MaxBytesReader(w, req.Body, MaxBodyBytes) 18 19 body, err := ioutil.ReadAll(req.Body) 20 if err != nil { 21 w.WriteHeader(http.StatusBadRequest) 22 return 23 } 24 25 // Pass the request body & Stripe-Signature header to ConstructEvent, along with the webhook signing key 26 event, err := webhook.ConstructEvent(body, req.Header.Get("Stripe-Signature"), "whsec_DaLRHCRs35vEXqOE8uTEAXGLGUOnyaFf") 27 28 if err != nil { 29 w.WriteHeader(http.StatusBadRequest) // Return a 400 error on a bad signature 30 fmt.Fprintf(w, "%v", err) 31 return 32 } 33 34 fmt.Fprintf(w, "Received signed event: %v", event) 35 }) 36 log.Fatal(http.ListenAndServe(":8080", nil)) 37 }