#coding:utf8
import urllib2
import urllib
import json
import string
import random class WebChat(object): def __init__(self, appid=None, secret=None, code=None):
self.appid = appid
self.secret = secret
self.code = code def token_url(self): return "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"
% (self.appid, self.secret) def get_access_token(self): access_token_url = self.token_url()
f = urllib2.urlopen(access_token_url)
json_string = f.read()
return json.loads(json_string)['access_token'] def get_ticket_url(self): access_token = self.get_access_token()
url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=%s" %(access_token)
return url def get_ticket(self):
body={
"action_name": "QR_LIMIT_SCENE",
"action_info": {
"product_id":'d442kdD',
"scene": {
"scene_id": 1444
}
}
}
jsons = json.dumps(body)
ticket_url = self.get_ticket_url()
ret = urllib2.Request(ticket_url,jsons)
result_string = urllib2.urlopen(ret).read()
return json.loads(result_string)['ticket'] def exchange_by_ticket(self):
ticket = self.get_ticket()
exchange_by_ticket_url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=%s" % (ticket)
return exchange_by_ticket_url def qrcode_name(self):
allw = string.letters+string.digits
r = []
for i in range(6):
r.append(random.choice(allw))
return ''.join(r) def get_qrcode_by_url(self):
url = self.exchange_by_ticket()
ret = urllib2.urlopen(url).read()
name = self.qrcode_name()
with open(name+'.jpg','wb') as f:
f.write(ret) return 1 if __name__ =='__main__':
web_chat = WebChat('XXXX','XXXX')
result = web_chat.get_qrcode_by_url()
print result

  

最新文章

  1. Linux基础介绍【第七篇】
  2. table tr foreach td 换行
  3. 单例模式的两种实现方式对比:DCL (double check idiom)双重检查 和 lazy initialization holder class(静态内部类)
  4. Objective C 快速入门学习三
  5. JS运动从入门到精髓!哈哈
  6. Matlab中imshow()函数的使用
  7. grab jpegs from v4l2 devices
  8. 反汇编动态追踪工具Ollydbg. ALD,ddd,dbg,edb...
  9. android 多语言适配
  10. mysql 安装过程中的错误:my-template.ini could not be processed and written to XXX\my.ini.Error code-1
  11. 表白程序源代码,android
  12. 所有事件event集锦
  13. Ant 给project打包
  14. 中文颜色名称与RGB颜色对照表
  15. webpack中hash与chunkhash区别和需要注意的问题
  16. OpenCV中OpenMP的使用
  17. windows环境下面批量修改文件夹名称
  18. android开发(2):多页面的实现 | Fragment的创建与使用
  19. linux下编译安装pthreads扩展
  20. Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg'

热门文章

  1. CreateThread和_BeginThread的区别
  2. I/O系统,多线程、图形用户界面编程
  3. Spring 注解实体类中非数据库字段属性
  4. A script job for rebuild DB in AX 2012
  5. Win8系统安装NET Framework 3.5的方法
  6. Windows server 共享文件夹权限设置
  7. redis使用
  8. Android IOS WebRTC 音视频开发总结(五三)-- 国内IM & RTC SDK列表
  9. 必须会的SQL语句(七)字符串函数、时间函数
  10. .NET Web开发总结