git-svn-id: svn://losandesgames.com/alfheim-website@16 15359d88-9307-4e75-a9c1-e5686e5897df
This commit is contained in:
parent
e9597984fd
commit
eb397a1c90
49
handlers.go
49
handlers.go
@ -387,3 +387,52 @@ func managebilling(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
http.Redirect(w, r, result.URL, http.StatusSeeOther);
|
http.Redirect(w, r, result.URL, http.StatusSeeOther);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func webhook(w http.ResponseWriter, r *http.Request) {
|
||||||
|
const MaxBodyBytes = int64(65536);
|
||||||
|
req.Body = http.MaxBytesReader(w, req.Body, MaxBodyBytes);
|
||||||
|
payload, err := ioutil.ReadAll(req.Body);
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "Error reading request body: %v\n", err);
|
||||||
|
w.WriteHeader(http.StatusServiceUnavailable);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
event := stripe.Event{};
|
||||||
|
|
||||||
|
err := json.Unmarshal(payload, &event);
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "Failed to parse webhook body json: %v\n", err.Error());
|
||||||
|
w.WriteHeader(http.StatusBadRequest);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unmarshal the event data into an appropriate struct depending on its Type
|
||||||
|
switch event.Type {
|
||||||
|
case "payment_intent.succeeded":
|
||||||
|
var paymentIntent stripe.PaymentIntent;
|
||||||
|
err := json.Unmarshal(event.Data.Raw, &paymentIntent);
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "Error parsing webhook JSON: %v\n", err);
|
||||||
|
w.WriteHeader(http.StatusBadRequest);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Then define and call a func to handle the successful payment intent.
|
||||||
|
// handlePaymentIntentSucceeded(paymentIntent)
|
||||||
|
case "payment_method.attached":
|
||||||
|
var paymentMethod stripe.PaymentMethod;
|
||||||
|
err := json.Unmarshal(event.Data.Raw, &paymentMethod);
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "Error parsing webhook JSON: %v\n", err);
|
||||||
|
w.WriteHeader(http.StatusBadRequest);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Then define and call a func to handle the successful attachment of a PaymentMethod.
|
||||||
|
// handlePaymentMethodAttached(paymentMethod)
|
||||||
|
// ... handle other event types
|
||||||
|
default:
|
||||||
|
fmt.Fprintf(os.Stderr, "Unhandled event type: %s\n", event.Type)
|
||||||
|
}
|
||||||
|
|
||||||
|
w.WriteHeader(http.StatusOK)
|
||||||
|
})
|
||||||
|
|||||||
11
main.go
11
main.go
@ -79,17 +79,8 @@ func main() {
|
|||||||
mux.HandleFunc("/deleteaccount", require_authenticated_user(deleteaccount));
|
mux.HandleFunc("/deleteaccount", require_authenticated_user(deleteaccount));
|
||||||
mux.HandleFunc("/subscribe", require_authenticated_user(subscribe_stripe));
|
mux.HandleFunc("/subscribe", require_authenticated_user(subscribe_stripe));
|
||||||
mux.HandleFunc("/managebilling", require_authenticated_user(managebilling));
|
mux.HandleFunc("/managebilling", require_authenticated_user(managebilling));
|
||||||
|
mux.HandleFunc("/webhook", webhook);
|
||||||
|
|
||||||
|
|
||||||
log.Fatal(http.ListenAndServe(*addr, secure_headers(mux)));
|
log.Fatal(http.ListenAndServe(*addr, secure_headers(mux)));
|
||||||
}
|
}
|
||||||
|
|
||||||
//cookie := http.Cookie{;
|
|
||||||
// Name: "exampleCookie",;
|
|
||||||
// Value: "Hello world!",;
|
|
||||||
// Path: "/",;
|
|
||||||
// HttpOnly: true,;
|
|
||||||
// Secure: true,;
|
|
||||||
// SameSite: http.SameSiteLaxMode,;
|
|
||||||
//};
|
|
||||||
//http.SetCookie(w, &cookie);
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user