payment gateway for rpn cn
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

197 lines
4.2KB

  1. package main
  2. import (
  3. "crypto/md5"
  4. "database/sql"
  5. "fmt"
  6. "html/template"
  7. "log"
  8. "net/http"
  9. _ "github.com/go-sql-driver/mysql"
  10. )
  11. type Employee struct {
  12. Id int
  13. Name string
  14. City string
  15. }
  16. var md5key = "492815086935204" //for test only
  17. func dbConn() (db *sql.DB) {
  18. dbDriver := "mysql"
  19. dbUser := "sp"
  20. dbPass := "sp"
  21. dbName := "goblog"
  22. db, err := sql.Open(dbDriver, dbUser+":"+dbPass+"@/"+dbName)
  23. if err != nil {
  24. panic(err.Error())
  25. }
  26. return db
  27. }
  28. var tmpl = template.Must(template.ParseGlob("form/*"))
  29. func Index(w http.ResponseWriter, r *http.Request) {
  30. db := dbConn()
  31. selDB, err := db.Query("SELECT * FROM Employee ORDER BY id DESC")
  32. if err != nil {
  33. panic(err.Error())
  34. }
  35. emp := Employee{}
  36. res := []Employee{}
  37. for selDB.Next() {
  38. var id int
  39. var name, city string
  40. err = selDB.Scan(&id, &name, &city)
  41. if err != nil {
  42. panic(err.Error())
  43. }
  44. emp.Id = id
  45. emp.Name = name
  46. emp.City = city
  47. res = append(res, emp)
  48. }
  49. tmpl.ExecuteTemplate(w, "Index", res)
  50. defer db.Close()
  51. }
  52. func Show(w http.ResponseWriter, r *http.Request) {
  53. db := dbConn()
  54. nId := r.URL.Query().Get("id")
  55. selDB, err := db.Query("SELECT * FROM Employee WHERE id=?", nId)
  56. if err != nil {
  57. panic(err.Error())
  58. }
  59. emp := Employee{}
  60. for selDB.Next() {
  61. var id int
  62. var name, city string
  63. err = selDB.Scan(&id, &name, &city)
  64. if err != nil {
  65. panic(err.Error())
  66. }
  67. emp.Id = id
  68. emp.Name = name
  69. emp.City = city
  70. }
  71. tmpl.ExecuteTemplate(w, "Show", emp)
  72. defer db.Close()
  73. }
  74. func New(w http.ResponseWriter, r *http.Request) {
  75. tmpl.ExecuteTemplate(w, "New", nil)
  76. }
  77. func Edit(w http.ResponseWriter, r *http.Request) {
  78. db := dbConn()
  79. nId := r.URL.Query().Get("id")
  80. selDB, err := db.Query("SELECT * FROM Employee WHERE id=?", nId)
  81. if err != nil {
  82. panic(err.Error())
  83. }
  84. emp := Employee{}
  85. for selDB.Next() {
  86. var id int
  87. var name, city string
  88. err = selDB.Scan(&id, &name, &city)
  89. if err != nil {
  90. panic(err.Error())
  91. }
  92. emp.Id = id
  93. emp.Name = name
  94. emp.City = city
  95. }
  96. tmpl.ExecuteTemplate(w, "Edit", emp)
  97. defer db.Close()
  98. }
  99. func Insert(w http.ResponseWriter, r *http.Request) {
  100. db := dbConn()
  101. if r.Method == "POST" {
  102. name := r.FormValue("name")
  103. city := r.FormValue("city")
  104. insForm, err := db.Prepare("INSERT INTO Employee(name, city) VALUES(?,?)")
  105. if err != nil {
  106. panic(err.Error())
  107. }
  108. insForm.Exec(name, city)
  109. log.Println("INSERT: Name: " + name + " | City: " + city)
  110. }
  111. defer db.Close()
  112. http.Redirect(w, r, "/", 301)
  113. }
  114. func Update(w http.ResponseWriter, r *http.Request) {
  115. db := dbConn()
  116. if r.Method == "POST" {
  117. name := r.FormValue("name")
  118. city := r.FormValue("city")
  119. id := r.FormValue("uid")
  120. insForm, err := db.Prepare("UPDATE Employee SET name=?, city=? WHERE id=?")
  121. if err != nil {
  122. panic(err.Error())
  123. }
  124. insForm.Exec(name, city, id)
  125. log.Println("UPDATE: Name: " + name + " | City: " + city)
  126. }
  127. defer db.Close()
  128. http.Redirect(w, r, "/", 301)
  129. }
  130. func Delete(w http.ResponseWriter, r *http.Request) {
  131. db := dbConn()
  132. emp := r.URL.Query().Get("id")
  133. delForm, err := db.Prepare("DELETE FROM Employee WHERE id=?")
  134. if err != nil {
  135. panic(err.Error())
  136. }
  137. delForm.Exec(emp)
  138. log.Println("DELETE")
  139. defer db.Close()
  140. http.Redirect(w, r, "/", 301)
  141. }
  142. func StartPay(w http.ResponseWriter, r *http.Request) {
  143. if r.Method != "POST" {
  144. fmt.Fprintf(w, "fuck")
  145. return
  146. }
  147. s := ""
  148. r.ParseForm()
  149. for key, value := range r.Form {
  150. fmt.Printf("%s= %s\n", key, value)
  151. fmt.Fprintf(w, "%s= %s\n", key, value)
  152. }
  153. if _, ok := r.Form["pickupUrl"]; ok {
  154. s += r.Form["pickupUrl"][0]
  155. s += r.Form["receiveUrl"][0]
  156. s += r.Form["signType"][0]
  157. s += r.Form["orderNo"][0]
  158. s += r.Form["orderAmount"][0]
  159. s += r.Form["orderCurrency"][0]
  160. s += r.Form["customerId"][0]
  161. s += md5key
  162. }
  163. //var h = md5.New()
  164. data := []byte(s)
  165. fmt.Printf("my md5=%x", md5.Sum(data))
  166. fmt.Fprintf(w, "my md5=%x", md5.Sum(data))
  167. }
  168. func main() {
  169. log.Println("Server started on: http://localhost:8080")
  170. http.HandleFunc("/", StartPay)
  171. //http.HandleFunc("/", Index)
  172. http.HandleFunc("/show", Show)
  173. http.HandleFunc("/new", New)
  174. http.HandleFunc("/edit", Edit)
  175. http.HandleFunc("/insert", Insert)
  176. http.HandleFunc("/update", Update)
  177. http.HandleFunc("/delete", Delete)
  178. http.ListenAndServe(":8080", nil)
  179. }