下图是获取支付宝小程序用户信息的流程图

由于支付宝小程序更新所以后来申请的小程序没有alipay.user.info.share的访问权限,所以后台的工作就是根据前台的code请求授权平台换取userid, 然后再根据项目需求,前端获取详细信息返回给后台储存到数据库里。

本来想用拼接字符串的方式加参数,但是就是报sign有问题的错,然后问了客服,给我截了下面这张图

然后查go里面 encode的方法url.values的Encode()方法好像最方便,所以建议参数用url.values方法添加

    v := url.Values{}v.Set("app_id", env.ZfbAppId)// 项目的appidv.Set("charset", "UTF-8")v.Set("code", authCode)// 前端传的codev.Set("grant_type", "authorization_code")v.Set("method", "alipay.system.oauth.token")v.Set("sign_type", "RSA2")v.Set("timestamp", now)//时间 2006-01-02 15:04:05 格式v.Set("version", "1.0")

然后就是签名,签名就是去掉表示签名的sign字段,然后去掉空字段、空格再把字段根据ASCII排序最后根据要求的格式加密再Base64一下就行了,由于没有官方go语言的SDK,所以需要自行签名

我用的是普通公钥方式,下图是支付宝需要的签名的加密编码方式

百度了很久最后找别人总结出了一个方法。。。

func GetLoginSign(param url.Values, privateKey *rsa.PrivateKey) (string, error) {//param就是url参数,privateKey 是私钥if param == nil {param = make(url.Values, 0)}var pList = make([]string, 0, 0)for key := range param {var value = strings.TrimSpace(param.Get(key)) //*去空格 签名必须有的一步if len(value) > 0 {pList = append(pList, key+"="+value)}}sort.Strings(pList) //*根据ASCII码排序 签名必须有的一步var src = strings.Join(pList, "&")sig, err := crypto4go.RSASignWithKey([]byte(src), privateKey, crypto.SHA256)if err != nil {return "", err}s := base64.StdEncoding.EncodeToString(sig)return s, nil
}

这个方法的私钥也需要处理一下

 privateKey, _ = crypto4go.ParsePKCS1PrivateKey(crypto4go.FormatPKCS1PrivateKey(zfbPrivateKey))// zfbPrivateKey 是配置的私钥,privateKey是上面方法需要的参数

方法返回的就是需要的sign

然后就是加上sign字段,再对url进行encode,最后请求,再根据需要处理返回的参数

    v.Set("sign", s) //s是GetLoginSign方法返回的signsth := v.Encode()//对请求的参数进行encodeaUrl := "https://openapi.alipay.com/gateway.do?" + sthresp, err := http.Get(aUrl)if err != nil {response.Response(c, 201, &gin.H{"message": "login taken 获取失败"})return}body, _ := ioutil.ReadAll(resp.Body)

golang 支付宝小程序 登陆相关推荐

  1. uniapp 支付宝小程序手机号登陆

    开发支付宝小程序,在登录的时候,由于需要手机号登陆,所以需要在支付宝小程序后台去申请手机号登陆权限. 支付宝小程序登陆组件设置 <!-- #ifdef MP-ALIPAY --> < ...

  2. php 支付宝小程序授权登陆验签_星巴克“啡快”登陆支付宝小程序,让你“飞快”取到咖啡...

    当代年轻人的生活方式是怎样的? 靠地铁通勤,靠咖啡续命 早上睁不开眼,咖啡来一杯 中午昏昏欲睡,咖啡来一杯 晚上熬夜加班,咖啡来一杯 喝完这杯,还有一杯 "宁可食无肉,不可早无星" ...

  3. golang 获取支付宝小程序用户手机号、登录授权、AES解密

    目前支付宝官方的api没有关于golang语言的sdk,最近在开发支付宝小程序登录,发现支付宝对于敏感信息会进行AES加密 ,例如获取用户手机号,会先由前端获取手机号密文.传给服务端,进行解密,从而获 ...

  4. JAVA支付宝小程序授权登陆,并生成二维码(证书方式)

    接入准备 https://opendocs.alipay.com/open/284/106001?ref=api 根据文档进行创建小程序.配置相关信息(接口加签方式选择证书) 生成二维码文档https ...

  5. 互联网日报 | 3月20日 星期六 | 荣耀CEO赵明谈发展目标;家乐福中国未来谋求独立上市;微盟开放接入支付宝小程序能力...

    今日看点 ✦ 国家网信办:我国网民规模增加至9.89亿,互联网普及率达70.4% ✦ 荣耀CEO赵明谈发展目标:达到千亿规模,成为世界500强 ✦ 家乐福中国回应"50%以上股权或被苏宁出售 ...

  6. 3年10亿怎么花?支付宝小程序公布生态孵化细则!

    小蚂蚁说: 自从支付宝3年投入10亿孵化小程序生态创新的消息传出以后,如何报名参加支付宝STS计划.如何获得孵化资源便成了不少创新创业者关注的焦点.日前,支付宝STS计划正式发布相关细则,开启报名通道 ...

  7. 支付宝小程序云服务免费申请

    就在昨天,博主收到了蚂蚁金服的一条短信.说是可以申请支付宝小程序的开发了. 这么大一个公司,开始开放申请了,那自然是要参与下的. 当然,阿里也为开发者准备了一份礼物.也就是云服务扶持计划. 为了助力开 ...

  8. uniCloud 微信小程序登陆全流程demo

    ps: Q群:743496144 博主一向不喜欢废话,直接说几个点,你悟了就直接去试,可以不用看完,还是得自己去试印象才深刻,博主写博文就怕自己以后忘记做个笔记顺便能帮一个是一个 1.你要获取unio ...

  9. 微信/支付宝小程序测试大全

    知识永远学不完,但多懂一点知识就会让生活更轻松一点! 又是元气满满的一天呐 微信/支付宝小程序测试大全 小程序测试环境 小程序一般会准备三个环境: 开发版访问测试环境: 体验版访问预发环境,连的是生产 ...

  10. Taro 支付宝小程序开发

    1. 环境准备 # 安装 node 环境, 从 node 官网下载: http://nodejs.cn/# 设置淘宝镜像: npm config set registry https://regist ...

最新文章

  1. numpy.matmul处理一维数组的 3维以上的性质
  2. 支持多种小程序!阿里云ARMS推出小程序监控
  3. Android单元测试 - 几个重要问题
  4. Nexus修改admin密码及其添加用户
  5. 5、扩展骨架文件内容
  6. 1.vue生命周期详解(2020.12.05)
  7. 22解析函数的级数表示(一)
  8. 多校 HDU 6313 Hack It——构造
  9. 词频统计及其效能分析
  10. GetPrivateProfileString的问题,获得的CString结构有问题,高手指点
  11. 解决办法:自动挂载失效,VirtualBox共享文件夹给Ubuntu虚拟机
  12. Linux虚拟机怎么越狱,iOS 7完美越狱教程:5分钟轻松搞定
  13. 计算机恢复原始桌面图标,Win10桌面图标如何恢复原来排列?
  14. (转)yolov3运行及保存检测视频(包括摄像头)
  15. 二叉树的深度遍历和广度遍历
  16. 如何打开损坏的PDF文件查看内容并修复
  17. Unity 3D 接入 移动MM (3.1.3)计费SDK
  18. win10文件夹当作服务器,win10文件夹加密不了怎么办_网站服务器运行维护,win10
  19. 关于《数据出境安全评估办法》,来看看3位行业专家的不同视角
  20. Linux学习之路_8.搜索查找类

热门文章

  1. 智课雅思词汇---二十五、-ate
  2. matlab怎么表示分块矩阵,急求一个测量矩阵采用分块多项式矩阵时怎样引用的代码!!!...
  3. qq服务器上的文件删除后如何恢复,QQ文件失效怎么恢复(过期的QQ文件如何申请恢复)...
  4. Serv-U无法上传文件,200、227、501报错解决方法
  5. WebSocket 实现聊天功能
  6. 推荐10个国外的开源免费的.NET CMS系统
  7. mysql 怎么区分大小写_MYSQL区分大小写
  8. 第二人生的源码分析(12)天空显示的实现
  9. win7适合oracle哪个版本下载,win7系统下载--Windows 7下成功安装ORACLE客户端
  10. 水星mw300r虚拟服务器,水星MW300R无线路由器如何设置【组图】