公众号支付,
需要注意的就是拿到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
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。