Ready pay backend

This commit is contained in:
2025-02-16 20:55:56 +03:00
parent 19b8f0716b
commit 9e037a9c25
2 changed files with 17 additions and 15 deletions

View File

@@ -9,6 +9,7 @@ import (
"net/http" "net/http"
"os" "os"
"strconv" "strconv"
"time"
"github.com/google/uuid" "github.com/google/uuid"
"github.com/gorilla/handlers" "github.com/gorilla/handlers"
@@ -109,8 +110,9 @@ func payHandler(w http.ResponseWriter, r *http.Request) {
// Set uuid cookie // Set uuid cookie
cookie = &http.Cookie{ cookie = &http.Cookie{
Name: "uuid", Name: "uuid",
Value: newUUID, Value: newUUID,
Expires: time.Now().Add(30 * time.Minute),
} }
http.SetCookie(w, cookie) http.SetCookie(w, cookie)
// Отправляем ответ в виде простого текста // Отправляем ответ в виде простого текста
@@ -120,17 +122,22 @@ func payHandler(w http.ResponseWriter, r *http.Request) {
} }
func checkPayHandler(w http.ResponseWriter, r *http.Request) { func checkPayHandler(w http.ResponseWriter, r *http.Request) {
// Извлекаем uuid из запроса (например, из query-параметра) // Извлекаем uuid из cookie
uuid := r.URL.Query().Get("uuid") cookie, err := r.Cookie("uuid")
if err != nil {
http.Error(w, "Не найден cookie с uuid", http.StatusBadRequest)
return
}
uuid := cookie.Value
if uuid == "" { if uuid == "" {
http.Error(w, "Не указан uuid", http.StatusBadRequest) http.Error(w, "Пустое значение uuid", http.StatusBadRequest)
return return
} }
// Проверяем существование uuid в базе данных // Проверяем существование uuid в базе данных
var exists bool var exists bool
querySQL := `SELECT EXISTS(SELECT 1 FROM pay_urls WHERE id = ?)` querySQL := `SELECT EXISTS(SELECT 1 FROM pay_urls WHERE uuid = ?)`
err := db.QueryRow(querySQL, uuid).Scan(&exists) err = db.QueryRow(querySQL, uuid).Scan(&exists)
if err != nil { if err != nil {
http.Error(w, "Ошибка при проверке uuid в базе данных", http.StatusInternalServerError) http.Error(w, "Ошибка при проверке uuid в базе данных", http.StatusInternalServerError)
return return
@@ -174,9 +181,9 @@ func checkPayHandler(w http.ResponseWriter, r *http.Request) {
// Формируем ответ клиенту в зависимости от полученного результата // Формируем ответ клиенту в зависимости от полученного результата
var response string var response string
if checkResponse.Mes == "OK" { if checkResponse.Mes == "OK" {
response = "Успешная оплата" response = "OK"
} else { } else {
response = "Ошибка при оплате" response = "GTHO"
} }
// Отправляем ответ в виде простого текста // Отправляем ответ в виде простого текста
@@ -185,10 +192,6 @@ func checkPayHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(response)) w.Write([]byte(response))
} }
func TestHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, World!"))
}
func main() { func main() {
initDB() initDB()
@@ -201,9 +204,8 @@ func main() {
) )
// Register handlers // Register handlers
http.HandleFunc("/", TestHandler)
http.HandleFunc("/api/pay", payHandler) http.HandleFunc("/api/pay", payHandler)
http.HandleFunc("api/check_pay", checkPayHandler) http.HandleFunc("/api/check_pay", checkPayHandler)
// Start server with CORS middleware // Start server with CORS middleware
port := os.Getenv("PORT") port := os.Getenv("PORT")

Binary file not shown.