Use request host for Stripe redirect URLs

This commit is contained in:
Ian Gulliver
2026-01-17 08:25:02 -07:00
parent dd1e20dc1f
commit 5ddb6f75bc

11
main.go
View File

@@ -310,7 +310,7 @@ func handleRSVPPost(w http.ResponseWriter, r *http.Request) {
resp := map[string]any{"numPeople": numPeople, "donation": donation} resp := map[string]any{"numPeople": numPeople, "donation": donation}
if req.DonationCents > 0 { if req.DonationCents > 0 {
stripeURL, err := createCheckoutSession(eventID, email, req.DonationCents, numPeople) stripeURL, err := createCheckoutSession(getBaseURL(r), eventID, email, req.DonationCents, numPeople)
if err != nil { if err != nil {
log.Println("[ERROR] failed to create checkout session:", err) log.Println("[ERROR] failed to create checkout session:", err)
http.Error(w, "failed to create checkout session", http.StatusInternalServerError) http.Error(w, "failed to create checkout session", http.StatusInternalServerError)
@@ -339,7 +339,7 @@ func handleDonate(w http.ResponseWriter, r *http.Request) {
return return
} }
stripeURL, err := createCheckoutSession(eventID, "", req.DonationCents, 0) stripeURL, err := createCheckoutSession(getBaseURL(r), eventID, "", req.DonationCents, 0)
if err != nil { if err != nil {
log.Println("[ERROR] failed to create checkout session:", err) log.Println("[ERROR] failed to create checkout session:", err)
http.Error(w, "failed to create checkout session", http.StatusInternalServerError) http.Error(w, "failed to create checkout session", http.StatusInternalServerError)
@@ -350,8 +350,11 @@ func handleDonate(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(map[string]any{"url": stripeURL}) json.NewEncoder(w).Encode(map[string]any{"url": stripeURL})
} }
func createCheckoutSession(eventID, email string, amountCents int64, numPeople int) (string, error) { func getBaseURL(r *http.Request) string {
baseURL := os.Getenv("BASE_URL") return "https://" + r.Host
}
func createCheckoutSession(baseURL, eventID, email string, amountCents int64, numPeople int) (string, error) {
params := &stripe.CheckoutSessionParams{ params := &stripe.CheckoutSessionParams{
Mode: stripe.String(string(stripe.CheckoutSessionModePayment)), Mode: stripe.String(string(stripe.CheckoutSessionModePayment)),
LineItems: []*stripe.CheckoutSessionLineItemParams{ LineItems: []*stripe.CheckoutSessionLineItemParams{