payment gateway for rpn cn
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

197 lignes
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. }