12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package realname
- import (
- "context"
- "net/http"
- "net/url"
- "strconv"
- "strings"
- "time"
- "go-common/app/interface/main/account/conf"
- "go-common/library/log"
- "go-common/library/net/metadata"
- "github.com/pkg/errors"
- )
- // RealnameCaptchaGTRegister register a geetest apply
- func (d *Dao) RealnameCaptchaGTRegister(c context.Context, mid int64, ip, clientType string, newCaptcha int) (challenge string, err error) {
- var (
- params = url.Values{}
- req *http.Request
- url = conf.Conf.Realname.Geetest.RegisterURL
- )
- params.Set("user_id", strconv.FormatInt(mid, 10))
- params.Set("new_captcha", strconv.Itoa(newCaptcha))
- params.Set("ip_address", ip)
- params.Set("client_type", clientType)
- params.Set("gt", conf.Conf.Realname.Geetest.CaptchaID)
- if req, err = http.NewRequest("GET", url+"?"+params.Encode(), nil); err != nil {
- err = errors.Wrapf(err, "dao.RealnameCaptchaGTRegister url(%s) params(%s)", url, params.Encode())
- return
- }
- req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
- var challengeBytes []byte
- if challengeBytes, err = d.client.Raw(c, req); err != nil {
- return
- }
- challenge = string(challengeBytes)
- if len(challenge) != 32 {
- log.Error("dao.RealnameCaptchaGTRegister challenge : %s ,length not equate 32bit", challenge)
- }
- return
- }
- // RealnameCaptchaGTRegisterValidate recheck the challenge code and get to seccode
- func (d *Dao) RealnameCaptchaGTRegisterValidate(c context.Context, challenge, seccode, clientType, ip, captchaID string, mid int64) (realSeccode string, err error) {
- var (
- params = url.Values{}
- req *http.Request
- url = conf.Conf.Realname.Geetest.ValidateURL
- )
- params.Set("seccode", seccode)
- params.Set("challenge", challenge)
- params.Set("captchaid", captchaID)
- params.Set("client_type", clientType)
- params.Set("ip_address", metadata.String(c, metadata.RemoteIP))
- params.Set("json_format", "1")
- params.Set("sdk", "golang_3.0.0")
- params.Set("user_id", strconv.FormatInt(mid, 10))
- params.Set("timestamp", strconv.FormatInt(time.Now().Unix(), 10))
- log.Info("gt validate url : %s , params : %s", url, params.Encode())
- if req, err = http.NewRequest("POST", url, strings.NewReader(params.Encode())); err != nil {
- err = errors.Wrapf(err, "dao.RealnameCaptchaGTRegister url(%s) params(%s)", url, params.Encode())
- return
- }
- req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
- var resp struct {
- Seccode string `json:"seccode"`
- }
- if err = d.client.Do(c, req, &resp); err != nil {
- return
- }
- realSeccode = resp.Seccode
- return
- }
|