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实现Youku视频批量下载功能
Mar 14 Python
老生常谈python函数参数的区别(必看篇)
May 29 Python
Python实现单词翻译功能
Jun 06 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
Dec 21 Python
Python实现确认字符串是否包含指定字符串的实例
May 02 Python
Python Dataframe 指定多列去重、求差集的方法
Jul 10 Python
python通过ffmgep从视频中抽帧的方法
Dec 05 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
python支付宝支付示例详解
Aug 22 Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 Python
Python urlopen()参数代码示例解析
Dec 10 Python
python 基于opencv实现高斯平滑
Dec 18 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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
php while循环控制的简单实例
2016/05/30 PHP
php日期操作技巧小结
2016/06/25 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
JS实现星星海特效
2019/12/24 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
python3实现绘制二维点图
2019/12/04 Python
python-地图可视化组件folium的操作
2020/12/14 Python
Django与AJAX实现网页动态数据显示的示例代码
2021/02/24 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
机械设计及其自动化求职推荐信
2014/02/17 职场文书
百年校庆节目主持词
2014/03/27 职场文书
保护环境倡议书300字
2014/05/19 职场文书
社会实践活动总结范文
2014/07/03 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
2015年城乡环境综合治理工作总结
2015/07/24 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书