class Material(object): #upload image and text def add_news(self, accessToken, news): postUrl = "https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=%s" % accessToken urlResp = urllib2.open(postUrl, news) print urlResp.read() if __name__ == '__main__': myMaterial = Material() accessToken = Basic.get_access_token() news = ( { "articles": [ { 'title':'test', 'thumb_media_id':'', 'author':'vickey', 'digest':'', 'show_cover_pic':1, 'content':'<p><img data-s=\"300,640\" data-type=\"jpeg\" data-src=\"http://mmbiz.qpic.cn/mmbiz/iaK7BytM0QFPLhxfSMhOHlZd2Q5cw3YibKVf4dgNpLHXdUkvl65NBSMU71rFfOEKF3ucmXuwAQbNdiaaS3441d5rg/0?wx_fmt=jpeg\" data-ratio=\"0.748653500897666\" data-w=\"\" /><br /><img data-s=\"300,640\" data-type=\"jpeg\" data-src=\"http://mmbiz.qpic.cn/mmbiz/iaK7BytM0QFPLhxfSMhOHlZd2Q5cw3YibKiaibdNgh0ibgOXAuz9phrGjYFBUKlyTBcrv5WE5zic08FUcz5ODXCHEykQ/0?wx_fmt=jpeg\" data-ratio=\"0.748653500897666\" data-w=\"\" /><br /></p>', 'content_source_url':'', } ] } ) news = json.dumps(news, ensure_ascii=False) myMaterial.add_news(accessToken, news)
def index(request): if request.method == 'GET': signature = request.GET['signature'] timestamp = request.GET['timestamp'] nonce = request.GET['nonce'] echostr = request.GET['echostr'] token = "hiwx" list = [token, timestamp, nonce] list.sort() sha1 = hashlib.sha1() map(sha1.update, list) hashcode = sha1.hexdigest() print "handle/GET func: hashcode, signature: ", hashcode, signature if hashcode == signature: return HttpResponse(echostr) return HttpResponse('get wx') elif request.method == 'POST': webData = request.read() recMsg = receive.parse_xml(webData) print webData print recMsg if isinstance(recMsg, receive.Msg) and recMsg.MsgType == 'text': print 'isinstance == true' toUser = recMsg.FromUserName fromUser = recMsg.ToUserName print fromUser content = "miss you. Waiting for you so long years..." replyMsg = reply.TextMsg(toUser, fromUser, content) basic = Basic() tocken = basic.get_access_token() userinfo = requests.get( 'https://api.weixin.qq.com/cgi-bin/user/info?access_token=' + tocken + '&openid=' + toUser + '&lang=zh_CN') print userinfo.text return HttpResponse(replyMsg.send(), content_type='text/xml') else: print 'isinstance == false' return HttpResponse("success")
def delete(self, accessToken): postUrl = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=%s" % accessToken urlResp = request.urlopen(url=postUrl) print(urlResp.read()) # 获取自定义菜单配置接口 def get_current_selfmenu_info(self, accessToken): postUrl = "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=%s" % accessToken urlResp = request.urlopen(url=postUrl) print(urlResp.read()) if __name__ == '__main__': basic = Basic() accessToken = basic.get_access_token() media = basic.get_media_list() discount_url = request.quote(DISCOUNT_ID) discount_callable_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_base&state=123&connect_redirect=1#wechat_redirect" % ( APPID, discount_url) personal_url = request.quote(PERSONAL_ID) personal_callable_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_userinfo&state=123&connect_redirect=1#wechat_redirect" % ( APPID, personal_url) postJson = """ { "button": [ { "name": "菜单",
% (self.__accessToken.get_access_token())) urlResp = urllib.urlopen(postUrl) urlResp = json.loads(urlResp.read()) self.__ticket = urlResp['ticket'] self.__leftTime = urlResp['expires_in'] def get_ticket(self): if self.__leftTime < 10: self.__real_get_ticket() return self.__ticket def run(self): while (True): if self.__leftTime > 10: time.sleep(2) self.__leftTime -= 2 else: self.__real_get_ticket() if __name__ == '__main__': # 注意 URL 一定要动态获取,不能 hardcode b = Basic() token = b.get_access_token() print("access token") print(token) api = JsApi(b) ticket = api.get_ticket() print("jsapi ticket") print(ticket)