Go接微信支付(更新中.) - Go语言中文社区

Go接微信支付(更新中.)


公众号支付,
    需要注意的就是拿到OpenId 拿到这个然后传递相应的参数就可以获取到对应的预付单,将这个传递给前台就好。
    
关于如何获取到openID 
    
    首先,必须要获取的是code  
        需要传递的参数
参数 是否必须 说明
appid 应用唯一标识
redirect_uri 重定向地址,需要进行UrlEncode
response_type 填code
scope 应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可(不知道我操作错了还是咋地,填snsapi_base或者snsapi_userinfo)
state 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验
 需要注意的是  appid: 这个是申请微信公众号才有的东西。
                         redirect_uri:  这个东西要有,首先是你的微信公众号是服务号,其次服务号还得通过认证(可能两者是一起办理的)。当这个完成之后,在公众号设置-功能设置 下面网页授权里面添加你完成授权后会回调的网站。这里需要注意的是,在你添加的网站下面一定要能够访问到SB腾讯给你的那个.txt的文件。这相当于一个安全验证吧。具体怎么设置有两种,一种是非主目录下面,那么直接设置静态文件夹就好,如果在主目录下面,那么就需要设置静态文件。
        设置参考1.beego.SetStaticPath("static/upload", "upload)   // 静态文件夹
                       2.beego.BConfig.WebConfig.DirectoryIndex = true
                            beego.BConfig.WebConfig.StaticDir["/MP_verify_fFcRkp6cYCAegRB9.txt"] = "MP_verify_fFcRkp6cYCAegRB9.txt"
                         // 具体框架不同,问百度吧
                        scope 这个东西填的是授权的内容广度。一种是只是简单验证,另外一种是,需要点击下确认啥的。        
    
    2.走完上一步,如果正常跳转到了你预先设置在公众号上面的回调页面的话,那么此刻你应该拿到了code这个参数,这个参数是返回的时候附带传回来的,用beego框架的话,直接c.getString(“code”) c是controller 就可以
           如果使用其他框架,大概是通过Request这个里面拿到数据。 
            如果是echo框架 ,获取到这个值的方式:

    3.获取到 code之后,再接着往下玩
            与之相关的一大堆参数:
            
参数 是否必须 说明
appid 应用唯一标识,在微信开放平台提交应用审核通过后获得
secret 应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
code 填写第一步获取的code参数
grant_type 填authorization_code

        这个没什么好说的。照着传就对了。
   4.应该是请求,而不需要页面跳转,请求之后拿到的东西:
      
      client := http.Client{}  //  结构化这个你想要的东西,因为返回的东西不一定都是你想要的,把你想要的建立一个struct来接收
        formResponse, err := client.PostForm(requestUrl, url.Values{})  // 递交请求
        if err != nil {
           panic(err)
        }
        defer formResponse.Body.Close()
        body, err := ioutil.ReadAll(formResponse.Body)    // 将内容读取出来。

     type BaseInfo struct {
                   OpenId string `json:"openid”`   
                   Token  string `json:"access_token”`
        }
       client.openId  里面就可以获取到了这个OpenId  此时,就差不多了。 
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zfp503196695/article/details/72871265
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-06 09:44:37
  • 阅读 ( 2676 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢