微信接口的RPC包
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.

72 lines
1.1 KiB

2 years ago
2 years ago
2 years ago
  1. package weixinrpc
  2. import (
  3. "encoding/json"
  4. "log"
  5. "strconv"
  6. "time"
  7. "git.tetele.net/tgo/crypter"
  8. "github.com/golang/protobuf/proto"
  9. )
  10. func GetMiniAppQrcode(appId, appSecret, page,scene string, url ...string) (string, error) {
  11. conn, err := rpc_server_conn(url...)
  12. if err != nil {
  13. return "", err
  14. }
  15. defer conn.Close()
  16. data := map[string]string{}
  17. data["app_id"] = appId
  18. data["app_secret"] = appSecret
  19. data["page"] = page
  20. data["scene"] = scene
  21. data_json, err := json.Marshal(data)
  22. if err != nil {
  23. return "", err
  24. }
  25. encryData := crypter.DesEn(string(data_json), DES_KEY)
  26. now_int64 := time.Now().Unix()
  27. now := strconv.FormatInt(now_int64, 10)
  28. sign := Sign(encryData, now)
  29. req := &Request{
  30. proto.String(encryData),
  31. proto.String(now),
  32. proto.String(sign),
  33. nil}
  34. res := &Response{}
  35. err = conn.GetMiniappQrcode(req, res)
  36. if err != nil {
  37. return "", err
  38. }
  39. //解密
  40. res_data_de, err := GetOrgData(res)
  41. if err != nil {
  42. return "", err
  43. }
  44. var result string
  45. err = json.Unmarshal([]byte(res_data_de), &result)
  46. if err != nil {
  47. log.Println(err, res_data_de)
  48. return "", err
  49. }
  50. return result, nil
  51. }