payment gateway for rpn cn
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

61 rinda
1.4KB

  1. package main
  2. import (
  3. "crypto/md5"
  4. "fmt"
  5. "io"
  6. "net/url"
  7. )
  8. func md5str(s string) string {
  9. h := md5.New()
  10. io.WriteString(h, s)
  11. return fmt.Sprintf("%x", h.Sum(nil))
  12. }
  13. func md5LeanworkForm(form url.Values) string {
  14. s := ""
  15. if _, ok := form["pickupUrl"]; ok {
  16. s += form["pickupUrl"][0]
  17. s += form["receiveUrl"][0]
  18. s += form["signType"][0]
  19. s += form["orderNo"][0]
  20. s += form["orderAmount"][0]
  21. s += form["orderCurrency"][0]
  22. s += form["customerId"][0]
  23. s += Config.LeanWork.MD5Key
  24. }
  25. return md5str(s)
  26. }
  27. func isLeanworkFormValid(form url.Values) bool {
  28. r := md5LeanworkForm(form)
  29. sign := form["sign"][0]
  30. return r == sign
  31. }
  32. func md4RpnFormP2P(form url.Values) string {
  33. return md5RpnForm(form, Config.Rpn.MD5P2P)
  34. }
  35. func md5RpnFormFAT(form url.Values) string {
  36. return md5RpnForm(form, Config.Rpn.MD5FAT)
  37. }
  38. func md5RpnForm(form url.Values, md5key string) string {
  39. s := ""
  40. if _, ok := form["version"]; ok {
  41. s += "sign_type=" + form["sign_type"][0] + "|"
  42. s += "mid=" + form["mid"][0] + "|"
  43. s += "notify_url=" + form["notify_url"][0] + "|"
  44. s += "order_id=" + form["order_id"][0] + "|"
  45. s += "order_amount=" + form["order_amount"][0] + "|"
  46. s += "order_time=" + form["order_time"][0] + "|"
  47. s += "user_id=" + form["user_id"][0] + "|"
  48. s += "user_name=" + form["user_name"][0] + "|"
  49. s += "user_cardno=" + form["user_cardno"][0] + "|"
  50. s += "key=" + md5key
  51. }
  52. return md5str(s)
  53. }