@csrf_exempt
def weixin_main(request):# get 请求是验证if request.method == "GET":# 接收微信服务器get请求发过来的参数signature = request.GET.get('signature', None)timestamp = request.GET.get('timestamp', None)nonce = request.GET.get('nonce', None)echostr = request.GET.get('echostr', None)# 服务器配置中的tokentoken = 'gongchang'# 把参数放到list中排序后合成一个字符串,再用sha1加密得到新的字符串与微信发来的signature对比,如果相同就返回echostr给服务器,校验通过hashlist = [token, timestamp, nonce]hashlist.sort()hashstr = ''.join([s for s in hashlist])hashstr = hashlib.sha1(hashstr).hexdigest()if hashstr == signature:return HttpResponse(echostr)else:return HttpResponse("field")elif request.method == "POST":webData = request.bodyxmlData = ET.fromstring(webData)msg_type = xmlData.find('MsgType').textto_user_name = xmlData.find('ToUserName').textfrom_user_name = xmlData.find('FromUserName').textcreat_time = xmlData.find('CreateTime').textinfo = Config.objects.get(config_name='shovel_free')data = info.config_valuedata = json.loads(data)wx_num = data.get('wx_num')now = time.strftime('%Y%m%d')if msg_type == 'event':event = xmlData.find('Event').textif event == 'CLICK':eventkey = xmlData.find('EventKey').textif eventkey == 'V1001_GET_SHOVEL':try:user_wx_info = UserWxInfo.objects.get(openid=from_user_name)sign_time = user_wx_info.sign_timeif user_wx_info.focus_state == 1:if sign_time:if int(now) == int(sign_time):reply_info = "今日铲子已领,请明日再来哦 <a href='https://xingkuang-help.westarcloud.net/faq/d_5d82edd74db67f2b3856840e.html'>更多免费领铲子攻略</a> ~"replyMsg = TextMsg(from_user_name, to_user_name, reply_info)return HttpResponse(replyMsg.send())else:user_wx_info.sign_time = nowuser_wx_info.sign_state = 1user_wx_info.save()# 用户账户变动保存try:_ = FinanceAccount.objects.get(uid=user_wx_info.uid)except Exception as e:passelse:_.uptime = int(time.time())_.shovel = decimal.Decimal(wx_num) + _.shovel  # 铲子数量保存_.save()# 签到领铲子保存data = FinanceShovelLog(uid=user_wx_info.uid, incr_num=decimal.Decimal(wx_num), reason='奖励',type=2,reason_meta='公众号领取', shovel=decimal.Decimal(wx_num) + _.shovel)data.save()reply_info = "领取成功,铲子+%s <a href='https://xingkuang-help.westarcloud.net/faq/d_5d82edd74db67f2b3856840e.html'>更多免费领铲子攻略</a> ~" % wx_numreplyMsg = TextMsg(from_user_name, to_user_name, reply_info)return HttpResponse(replyMsg.send())else:user_wx_info.sign_time = nowuser_wx_info.sign_state = 1user_wx_info.save()# 用户账户变动保存try:_ = FinanceAccount.objects.get(uid=user_wx_info.uid)except Exception as e:passelse:_.uptime = int(time.time())_.shovel = int(wx_num) + _.shovel  # 铲子数量保存_.save()# 签到领铲子保存data = FinanceShovelLog(uid=user_wx_info.uid, incr_num=wx_num, reason='奖励', type=2,reason_meta='公众号领取', shovel=int(wx_num) + _.shovel)data.save()reply_info = "领取成功,铲子+%s <a href='https://xingkuang-help.westarcloud.net/faq/d_5d82edd74db67f2b3856840e.html'>更多免费领铲子攻略</a> ~" % wx_numreplyMsg = TextMsg(from_user_name, to_user_name, reply_info)return HttpResponse(replyMsg.send())if user_wx_info.focus_state == 0:reply_info = "你的微信未绑定星矿账号,请绑定成功后再进行操作"replyMsg = TextMsg(from_user_name, to_user_name, reply_info)return HttpResponse(replyMsg.send())except:replyMsg = TextMsg(from_user_name, to_user_name, '你的微信未绑定星矿账号,请绑定成功后再进行操作')return HttpResponse(replyMsg.send())

微信公众号,点击事件相关推荐

  1. 微信公众号点击列表进入详情页

    问题:微信公众号点击记录进入详情的时候,如果详情页代码是在当前页面,那么就没有进入页面记录,在点击返回的时候,会直接返回到最开始的地方,而非列表页. 解决:这时候就需要在点击列表的时候,插入一条记录, ...

  2. 怎样实现微信公众号点击菜单自动回复文字信息

    为了满足微信公众号点击菜单自动回复文字信息的需要,第三方平台微号帮提供了粉丝点菜单定时推送功能实现,粉丝点击公众号菜单栏可以自动回复文字信息,可以更改回复信息的昵称和头像,回复信息内容可以显示粉丝昵称 ...

  3. 微信公众号点击账号解绑,将locationStorage清空并退出

    微信公众号点击账号解绑,将locationStorage清空并退出 mui.confirm('是否确定解绑账号?', '', btnArray, function(e) {if (e.index == ...

  4. 【uiautomation】pc微信公众号点击

    一.inspect.exe安装 # 根据当前电脑版本找到相应合适的版本,并将inspect.exe所在的路径放到环境变量(sysdm.cpl)中 # 查看电脑系统详情信息 cmd > syste ...

  5. 微信公众号开发-菜单事件推送

    菜单事件推送在微信公众号开发中也是属于比较常用的一个功能,就是用户点击菜单之后,微信会将事件推送给接口程序. 不过微信开发到现在也是老生常谈的的东西了,我就简单写一下菜单事件推送的这个过程. 注意:点 ...

  6. 公众号点击图片变成另一张_微信公众号点击出现图片是怎么实现的?

    不知道小伙伴们有没有见过这样的微信公众号文章,就是会提示你点击某一个空白区域,点击后就会出现内容或者图片,这种点击出现图片的效果是怎么实现的呢? 其实,365微信编辑器里面有很多类似的素材样式,当你点 ...

  7. 微信公众号三方平台开发【代微信公众号接收消息事件并响应】

    今天要讲的是代微信公众号接收消息并进行回复,这里要用到的就是咱们之前在微信公众号三方平台开发[帐号注册.平台创建]里写到的"公众号消息与事件接收URL",在接收的目标方法里,我们首 ...

  8. 微信公众号开发-----接送事件推送之关注/取消关注

    本文主要实现的功能包括 关注/取消关注事件 阅读本文之前请先认真阅读微信公众号技术文档之接受事件推送 需注意的是:验证消息的确来自微信服务器和接收事件时微信服务器都会发送请求到填写的服务器地址URL上 ...

  9. 微信公众号点击菜单出现多条文章

    1.登录微信公众号后台 2.点击左侧话题标签菜单 3.点击页面模板进行选择

  10. tp5 微信公众号点击关注 回复功能

    微信公公众号开发 一.点击关注公众号自动回复 领导要求点击公众号的时候就回复类似于这样子的 测试内容啦啦啦啦啦啦啦啦啦啦啦啦啦 测试一回复1 测试二回复2 测试三回复3 测试四回复4 测试五回复5* ...

最新文章

  1. QT的QDesignerTaskMenuExtension类的使用
  2. 4字节 经纬度_java 获取本机经纬度
  3. (STL,set,priority_queue)丑数
  4. 50年过去了,嫦娥五号探月依然不能直播,告诉你三个可能
  5. 时代杂志评选了08年50个最棒的网站
  6. 天猫行业资深店长认证
  7. Minecraft Mod 开发-技术支持与鸣谢
  8. 管理学必读书籍排行榜
  9. An unhandled exception occurred: listen EADDRNOTAVAIL: address not available
  10. mysql init 崩溃_MySQL · 引擎特性 · InnoDB崩溃恢复
  11. 计算机前沿的英语词汇,计算机行业常用英语词汇
  12. 【刘晓燕语法长难句】 简单句
  13. iphone来电铃声小 - MTK物联网在线解答 - 技术论坛
  14. thinkadmin搜索功能/下拉选项
  15. 设计模式 -- 简单工厂模式
  16. docker安装apollo
  17. 【二叉树】515. 在每个树行中找最大值
  18. 强大的jQuery焦点图插件Owl Carousel + 响应式图片(案例解析)
  19. Neuromation新研究:利用卷积神经网络进行儿童骨龄评估
  20. Hive 窗口函数(开窗函数) over

热门文章

  1. centOS7安装搜狗拼音输入法
  2. win10中谷歌浏览器输入任何字符导致浏览器崩溃的解决方法
  3. Android Web应用高级编程
  4. 什么是项目管理软件中的时间管理?
  5. English语法_并列连词-or
  6. 上海城市发展集团借力泛微文书定,实现标准化、数字化的档案管理
  7. Spark 基本知识介绍
  8. Pundit的Rails授权
  9. Rails-treasure chest4: 使用图表对资料进行分析chart.js(及其他);管理用户权限的gem 'Pumdit'(6000)...
  10. JESD79-5 DDR5 设计标准