-
Notifications
You must be signed in to change notification settings - Fork 0
/
pagamento.go
100 lines (79 loc) · 2.09 KB
/
pagamento.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package main
import (
"database/sql"
"fmt"
"net/http"
_ "github.com/mattn/go-sqlite3"
)
// Funzione per gestire il pagamento
func payment_process(w http.ResponseWriter, r *http.Request) {
if r.Method != "POST" {
http.Error(w, "Metodo non consentito", http.StatusMethodNotAllowed)
return
}
err := r.ParseForm()
if err != nil {
http.Error(w, "Errore nell'analisi del form", http.StatusBadRequest)
return
}
numero := r.Form.Get("numero")
scadenza := r.Form.Get("scadenza")
cvc := r.Form.Get("cvc")
// Apre la connessione al database
dbC, err := sql.Open("sqlite3", "carrello.db")
if err != nil {
panic(err)
}
defer dbC.Close()
// Inserisce in sum i valori estratti dal risultato della query (una riga)
var sum float64
err = dbC.QueryRow("SELECT SUM(prezzo) FROM elementi").Scan(&sum)
if err != nil {
panic(err.Error())
}
transazione(numero, scadenza, cvc, sum)
fmt.Println("Hai pagato ", sum, "€! \n")
dbE, err := sql.Open("sqlite3", "ecommerce.db")
if err != nil {
panic(err)
}
defer dbE.Close()
// Inserisce in rows i risultati della query (più righe)
rows, err := dbC.Query("SELECT nome FROM elementi")
if err != nil {
panic(err.Error())
}
defer rows.Close()
// Slice per memorizzare i nomi nel carrello
var nomi []string
// Itera sui risultati e appendiamo i valori allo slice
for rows.Next() {
var elemento string
err := rows.Scan(&elemento)
if err != nil {
panic(err.Error())
}
nomi = append(nomi, elemento)
}
// Elimina dal database ecommerce i prodotti acquistati
for _, elemento := range nomi {
_, err = dbE.Exec("DELETE FROM prodotti WHERE nome= '" + elemento + "';")
if err != nil {
panic(err.Error())
}
}
// Svuota il carrello
_, err = dbC.Exec("DELETE FROM elementi")
if err != nil {
panic(err.Error())
}
fmt.Println("Il carrello ora è vuoto. \n")
}
func transazione(numero string, scadenza string, cvc string, sum float64) {
fmt.Print("Completamento transazione... \n")
}
func main() {
http.HandleFunc("/payment", payment_process)
fmt.Println("Server avviato sulla porta 8082")
http.ListenAndServe(":8082", nil)
}