payment gateway for rpn cn
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.1KB

  1. package main
  2. import (
  3. "database/sql"
  4. "log"
  5. "strconv"
  6. "github.com/go-sql-driver/mysql"
  7. )
  8. type RpnIn struct {
  9. Id int64
  10. Leanwork int64
  11. Order_id string
  12. Order_time string
  13. Order_amount string
  14. Deal_id string
  15. Deal_time string
  16. Pay_amount string
  17. Pay_result string
  18. Signature string
  19. Ts mysql.NullTime
  20. }
  21. //get given RpnIn record based on ID
  22. func getRpnInById(id int64) (ret RpnIn, err error) {
  23. if err = db.conn(Config); err != nil {
  24. return
  25. }
  26. defer db.close()
  27. q := "SELECT * FROM rpnIn WHERE id = ? "
  28. err = db.h.QueryRow(q, id).Scan(
  29. &ret.Id, &ret.Leanwork, &ret.Order_id,
  30. &ret.Order_time, &ret.Order_amount, &ret.Deal_id,
  31. &ret.Deal_time, &ret.Pay_amount, &ret.Pay_result,
  32. &ret.Signature, &ret.Ts)
  33. if err != nil {
  34. if err == sql.ErrNoRows {
  35. log.Println("trying to retrieve rpnIn(" + strconv.FormatInt(id, 10) + ") but not found")
  36. } else {
  37. log.Println("Error retrieving rpnIn(" + strconv.FormatInt(id, 10) + ") encountered : " + err.Error())
  38. }
  39. }
  40. return
  41. }
  42. //add to database
  43. func (m *RpnIn) add() (ret RpnIn, err error) {
  44. if err = db.conn(Config); err != nil {
  45. return
  46. }
  47. defer db.close()
  48. q := `"INSERT INTO rpnIn(
  49. leanwork, order_id, order_time, order_amount, deal_id,
  50. deal_time, pay_amount, pay_result, signature)
  51. VALUES(?,?,?,?,?,?,?,?,?)
  52. `
  53. insForm, err := db.h.Prepare(q)
  54. if err != nil {
  55. log.Printf("Failed to prepare SQL statment for insert")
  56. return
  57. }
  58. res, err := insForm.Exec(
  59. m.Leanwork, m.Order_id, m.Order_time, m.Order_amount, m.Deal_id,
  60. m.Deal_time, m.Pay_amount, m.Pay_result, m.Signature)
  61. if err != nil {
  62. log.Printf("Error inserting rpnIn with orderNo =%s \n", m.Order_id)
  63. return
  64. }
  65. id, err := res.LastInsertId()
  66. if err != nil {
  67. log.Printf("Cannot retrieve lastInsertId for orderID %s", m.Order_id)
  68. return
  69. }
  70. return getRpnInById(id)
  71. }
  72. func (m *RpnIn) signature() string {
  73. s := "order_id=" + m.Order_id
  74. s += "|order_time=" + m.Order_time
  75. s += "|order_amount=" + m.Order_amount
  76. s += "|deal_id=" + m.Deal_id
  77. s += "|deal_time=" + m.Deal_time
  78. s += "|pay_amount=" + m.Pay_amount
  79. s += "|pay_result=" + m.Pay_result
  80. return s
  81. }