Generating a receipt page
This commit is contained in:
		@ -9,3 +9,33 @@ func (app *application) VirtualTerminal(w http.ResponseWriter, r *http.Request)
 | 
			
		||||
		app.errorLog.Println(err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (app *application) PaymentSucceeded(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	err := r.ParseForm()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		app.errorLog.Println(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// read posted data
 | 
			
		||||
	cardHolder := r.Form.Get("cardholder_name")
 | 
			
		||||
	email := r.Form.Get("cardholder_email")
 | 
			
		||||
	paymentIntent := r.Form.Get("payment_intent")
 | 
			
		||||
	paymentMethod := r.Form.Get("payment_method")
 | 
			
		||||
	paymentAmount := r.Form.Get("payment_amount")
 | 
			
		||||
	paymentCurrency := r.Form.Get("payment_currency")
 | 
			
		||||
 | 
			
		||||
	data := make(map[string]interface{})
 | 
			
		||||
	data["cardholder"] = cardHolder
 | 
			
		||||
	data["email"] = email
 | 
			
		||||
	data["pi"] = paymentIntent
 | 
			
		||||
	data["pm"] = paymentMethod
 | 
			
		||||
	data["pa"] = paymentAmount
 | 
			
		||||
	data["pc"] = paymentCurrency
 | 
			
		||||
 | 
			
		||||
	if err := app.renderTemplate(w, r, "succeeded", &templateData{
 | 
			
		||||
		Data: data,
 | 
			
		||||
	}); err != nil {
 | 
			
		||||
		app.errorLog.Println(err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,7 @@ var functions = template.FuncMap{}
 | 
			
		||||
var templateFS embed.FS
 | 
			
		||||
 | 
			
		||||
func (app *application) addDefaultData(td *templateData, r *http.Request) *templateData {
 | 
			
		||||
	return nil
 | 
			
		||||
	return td
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (app *application) renderTemplate(
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,7 @@ func (app *application) routes() http.Handler {
 | 
			
		||||
	mux := chi.NewRouter()
 | 
			
		||||
 | 
			
		||||
	mux.Get("/virtual-terminal", app.VirtualTerminal)
 | 
			
		||||
	mux.Post("/payment-succeeded", app.PaymentSucceeded)
 | 
			
		||||
 | 
			
		||||
	return mux
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										14
									
								
								cmd/web/templates/succeeded.page.gohtml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								cmd/web/templates/succeeded.page.gohtml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
{{ template "base" . }}
 | 
			
		||||
{{ define "title" }}
 | 
			
		||||
Payment Succedded!
 | 
			
		||||
{{ end }}
 | 
			
		||||
{{ define "content" }}
 | 
			
		||||
<h2 class="mt-5">Payment Succeeded</h2>
 | 
			
		||||
<hr>
 | 
			
		||||
<p>Payment Intent: {{ index .Data "pi" }}</p>
 | 
			
		||||
<p>Cardholder: {{ index .Data "cardholder" }}</p>
 | 
			
		||||
<p>Email: {{ index .Data "email" }}</p>
 | 
			
		||||
<p>Payment Method: {{ index .Data "pm" }}</p>
 | 
			
		||||
<p>Payment Amount: {{ index .Data "pa" }}</p>
 | 
			
		||||
<p>Currency: {{ index .Data "pc" }}</p>
 | 
			
		||||
{{ end }}
 | 
			
		||||
@ -6,7 +6,7 @@ Virtual Terminal
 | 
			
		||||
<h2 class="mt-3 text-center">Virtual Terminal</h2>
 | 
			
		||||
<hr>
 | 
			
		||||
<div class="alert alert-danger text-center d-none" id="card-messages"></div>
 | 
			
		||||
<form action="/payment-succecded"
 | 
			
		||||
<form action="/payment-succeeded"
 | 
			
		||||
      method="post"
 | 
			
		||||
      name="charge_form"
 | 
			
		||||
      id="charge_form"
 | 
			
		||||
@ -149,12 +149,13 @@ function val() {
 | 
			
		||||
                        } else if (result.paymentIntent) {
 | 
			
		||||
                            if (result.paymentIntent.status === "succeeded") {
 | 
			
		||||
                                // we have charged the card
 | 
			
		||||
                                document.getElementById("payment_intent").value = result.paymentIntent.id;
 | 
			
		||||
                                document.getElementById("payment_method").value = result.paymentIntent.payment_method_types[0];
 | 
			
		||||
                                document.getElementById("payment_amount").value = result.paymentIntent.amount;
 | 
			
		||||
                                document.getElementById("payment_currency").value = result.paymentIntent.currency;
 | 
			
		||||
                                processing.classList.add("d-none");
 | 
			
		||||
                                showCardSuccess();
 | 
			
		||||
                                // would submit the form
 | 
			
		||||
                                document.getElementById("charge_form").submit();
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    })
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user