python获取微信小程序手机号并绑定遇到的坑


Posted in Python onNovember 19, 2018

最近在做小程序开发,在其中也遇到了很多的坑,获取小程序的手机号并绑定就遇到了一个很傻的坑。

流程介绍

python获取微信小程序手机号并绑定遇到的坑

官方流程图

python获取微信小程序手机号并绑定遇到的坑

小程序使用方法

需要将 <button> 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到微信服务器返回的加密数据, 然后在第三方服务端结合 session_key 以及 app_id 进行解密获取手机号。

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"> </button>

返回参数说明

参数 类型 说明
encryptedData String 包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法
iv String 加密算法的初始向量,详细见加密数据解密算法

接受到这些参数以后小程序把code,encryptedData,iv发给后台,然后后台解密

后台解密

在解密以前需要session_key进行配合解密,所以首先通过code获取session_key

# 获取openid,session_key
 # Appid为小程序id
  openid_url = "https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code" % (
    APP_ID, APP_KEY, code
  )
  req = requests.get(openid_url)
  rep = req.json()
  session_key = rep.get("session_key")

在得到session_key,encryptedData,iv以后就可以进行解密了,python2实现代码如下:

import base64
 import json
 from Crypto.Cipher import AES
 class WXBizDataCrypt:
   def __init__(self, appId, sessionKey):
     self.appId = appId
     self.sessionKey = sessionKey
   def decrypt(self, encryptedData, iv):
     # base64 decode
     sessionKey = base64.b64decode(self.sessionKey)
     encryptedData = base64.b64decode(encryptedData)
     iv = base64.b64decode(iv)
     cipher = AES.new(sessionKey, AES.MODE_CBC, iv)
     decrypted = json.loads(self._unpad(cipher.decrypt(encryptedData)))
     if decrypted['watermark']['appid'] != self.appId:
       raise Exception('Invalid Buffer')
     return decrypted
   def _unpad(self, s):
     return s[:-ord(s[len(s)-1:])]

调用传参

# APP_ID为小程序id不是openid!!!
pc = wx_jm(APP_ID, session_key)
res = pc.decrypt(encryptedData, iv)

参数详情参照微信官方文档https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html

微信官方提供了多种编程语言的示例代码点击下载

返回数据格式

{
  "phoneNumber": "13580006666", 
  "purePhoneNumber": "13580006666", 
  "countryCode": "86",
  "watermark":
  {
    "appid":"APPID",
    "timestamp":TIMESTAMP
  }
}

总结

以上所述是小编给大家介绍的python获取微信小程序手机号并绑定遇到的坑,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python六大开源框架对比
Oct 19 Python
详解python单例模式与metaclass
Jan 15 Python
如何在Python函数执行前后增加额外的行为
Oct 20 Python
Python实现pdf文档转txt的方法示例
Jan 19 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
python实现QQ邮箱/163邮箱的邮件发送
Jan 22 Python
Python函数参数匹配模型通用规则keyword-only参数详解
Jun 10 Python
python版百度语音识别功能
Jul 09 Python
python tkinter组件摆放方式详解
Sep 16 Python
python调用接口的4种方式代码实例
Nov 19 Python
pandas的resample重采样的使用
Apr 24 Python
在pycharm中创建django项目的示例代码
May 28 Python
python实现推箱子游戏
Mar 25 #Python
详解python中的Turtle函数库
Nov 19 #Python
python绘制简单彩虹图
Nov 19 #Python
python微信好友数据分析详解
Nov 19 #Python
python生成九宫格图片
Nov 19 #Python
python实现简易动态时钟
Nov 19 #Python
python使用Turtle库绘制动态钟表
Nov 19 #Python
You might like
php之对抗Web扫描器的脚本技巧
2008/10/01 PHP
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
非常实用的php验证码类
2016/05/15 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
wxPython窗口的继承机制实例分析
2014/09/28 Python
Python实现Kmeans聚类算法
2020/06/10 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
如何将 awk 脚本移植到 Python
2019/12/09 Python
python环境下安装opencv库的方法
2020/03/05 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
香港零食网购:上仓胃子
2020/06/08 全球购物
土木工程专业自荐信
2013/10/04 职场文书
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
给导游的表扬信
2014/01/10 职场文书
应届生简历中的自我评价
2014/01/13 职场文书
降价通知函
2015/04/23 职场文书
关于车尾的标语大全
2015/08/11 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python