| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package student
- import (
- context2 "context"
- "fmt"
- "github.com/silenceper/wechat/v2/miniprogram/context"
- "github.com/silenceper/wechat/v2/util"
- )
- const (
- // quickCheckStudentIdentityURL 快速获取学生身份
- quickCheckStudentIdentityURL = "https://api.weixin.qq.com/intp/quickcheckstudentidentity?access_token=%s"
- )
- // Student 学生身份核验
- type Student struct {
- *context.Context
- }
- // NewStudent init
- func NewStudent(ctx *context.Context) *Student {
- return &Student{ctx}
- }
- // BindStatus 学生身份绑定状态
- type BindStatus int
- const (
- // BindStatusUnbound 未绑定
- BindStatusUnbound BindStatus = 1
- // BindStatusAuditing 审核中
- BindStatusAuditing BindStatus = 2
- // BindStatusBound 已绑定
- BindStatusBound BindStatus = 3
- )
- // QuickCheckStudentIdentityRequest 快速获取学生身份请求参数
- type QuickCheckStudentIdentityRequest struct {
- OpenID string `json:"openid"` // 用户在业务方下的openid,需为已开通接口权限小程序对应的用户openid
- WxStudentCheckCode string `json:"wx_studentcheck_code"` // 用户授权查询code,由授权插件返回,code有效期两小时
- }
- // QuickCheckStudentIdentityResponse 快速获取学生身份返回参数
- type QuickCheckStudentIdentityResponse struct {
- util.CommonError
- BindStatus BindStatus `json:"bind_status"` // 绑定状态:1-未绑定,2-审核中,3-已绑定
- IsStudent bool `json:"is_student"` // 用户学生身份绑定状态说明,true-是学生,false-不是学生
- }
- // QuickCheckStudentIdentity 快速获取学生身份
- // see https://developers.weixin.qq.com/miniprogram/dev/server/API/student/api_quickcheckstudentidentity.html
- func (student *Student) QuickCheckStudentIdentity(in *QuickCheckStudentIdentityRequest) (out QuickCheckStudentIdentityResponse, err error) {
- return student.QuickCheckStudentIdentityContext(context2.Background(), in)
- }
- // QuickCheckStudentIdentityContext 快速获取学生身份
- func (student *Student) QuickCheckStudentIdentityContext(ctx context2.Context, in *QuickCheckStudentIdentityRequest) (out QuickCheckStudentIdentityResponse, err error) {
- var accessToken string
- if accessToken, err = student.GetAccessTokenContext(ctx); err != nil {
- return
- }
- uri := fmt.Sprintf(quickCheckStudentIdentityURL, accessToken)
- var response []byte
- if response, err = util.PostJSONContext(ctx, uri, in); err != nil {
- return
- }
- // 使用通用方法返回错误
- err = util.DecodeWithError(response, &out, "student.QuickCheckStudentIdentity")
- return
- }
|