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

70 lines
1.8KB

  1. package main
  2. import (
  3. "errors"
  4. "log"
  5. "time"
  6. )
  7. type LeanworkIn struct {
  8. Id int64
  9. PickupUrl string
  10. ReceiveUrl string
  11. SignType string
  12. OrderNo string
  13. OrderAmount string
  14. OrderCurrency string
  15. CustomerId string
  16. Sign string
  17. Valid bool
  18. Ts time.Time
  19. Ip4 uint32
  20. Ip4Location string
  21. MD5Key string
  22. }
  23. //
  24. func lrIsIdMatchSign(id string, sign string) bool {
  25. _, err := getRequestRowByIdAndSign(id, sign)
  26. return err == nil
  27. }
  28. func getLeanworkInById(id int64) (row LeanworkIn, err error) {
  29. db.conn(Config)
  30. defer db.close()
  31. err = db.h.QueryRow("SELECT * FROM leanworkIn WHERE id=? ", id).Scan(
  32. &row.Id, &row.PickupUrl, &row.ReceiveUrl, &row.SignType,
  33. &row.OrderNo, &row.OrderAmount, &row.OrderCurrency, &row.CustomerId,
  34. &row.Sign, &row.Valid, &row.Ts, &row.Ip4, &row.Ip4Location, &row.MD5Key)
  35. return
  36. }
  37. func getRequestRowByIdAndSign(id string, sign string) (row LeanworkIn, err error) {
  38. //retrieve form DB
  39. db.conn(Config)
  40. defer db.close()
  41. selDB, err := db.h.Query("SELECT * FROM leanworkIn WHERE id=? and sign=?", id, sign)
  42. if err != nil {
  43. log.Printf("Trying to get LeanworkIn id=%s, sign=%s, with Error:%s\n", id, sign, err.Error())
  44. return
  45. }
  46. count := 0
  47. for selDB.Next() {
  48. err = selDB.Scan(&row.Id, &row.PickupUrl, &row.ReceiveUrl, &row.SignType,
  49. &row.OrderNo, &row.OrderAmount, &row.OrderCurrency, &row.CustomerId,
  50. &row.Sign, &row.Valid, &row.Ts, &row.Ip4, &row.Ip4Location, &row.MD5Key)
  51. if err != nil {
  52. log.Printf("Cannot Retrieve LeanworkIn Record for id=%s, sign=%s, Error=%s", id, sign, err.Error())
  53. return
  54. }
  55. if count >= 1 {
  56. log.Printf("WARNING: LeanworkIn has %d id=%s and sign=%s \n", count, id, sign)
  57. }
  58. count++
  59. }
  60. if count <= 0 {
  61. err = errors.New("no record found by the given id (" + id + ") and sign(" + sign + ")")
  62. }
  63. return
  64. }