微信企业号开发之中文编码40006

2014年为了尝鲜自己为单位做了微信服务号,受到同事们的一致好评,然而大boss对此毫无所知,小boss们也是可有可无。平时的工作也是实在平淡,2015年上半年又加入些许实用功能。(不要我问我怎么能拿到数据,我知回答他们的数据库都托管到我们部门,每次维护都是我配合集成商工程师调试,所以搞好各部门的关系也是十分必要的)。

9月单位换了新的大boss,对微信十分感兴趣,特别是喜欢微信每天推送的新闻格式。于是大boos问中boss,中boss又讯问小boss,小boss又询问跑腿的。也是boss们才知晓原来已经有了微信服务号。于是在初秋的一个上午,俺就是接到了部门boss询问电话。我回答目前的服务号已无法满足需求,企业号才是最佳解决方案呢。也是近期俺的工作就立刻被切换到企业号了。

废话已不少,其实企业号与服务号api大体相同。只不过appid换成了corpid,然后在消息内增加了AgentID。不过在开发过程还是遇到了不少坑。

第一个坑,也是开发软件过程中遇到了通用坑。编码问题,特别中文编码问题。腾讯为了提高信息安全性,服务器消息都是通过严格加密的。不过还好,腾讯也给出了响应的样例。下载地址如下:http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8A%A0%E8%A7%A3%E5%AF%86%E5%BA%93%E4%B8%8B%E8%BD%BD%E4%B8%8E%E8%BF%94%E5%9B%9E%E7%A0%81

一切按照Sample.py里面的demo进行都挺顺利,解密加密也都很方便。不过当返回消息出现中文时,一切就不那么和谐了。只要加密中文就出现下面的错误

Input strings must be a multiple of 16 in length
ERR: EncryptMsg ret: -40006 

其实也很简单,主要是str和unicode问题。sha1加密支持str,而unicode就好出现这个问题。

解决方案

sRespData=sRespData.encode('utf8')
ret,sEncryptMsg=wxcpt.EncryptMsg(sRespData, sReqNonce, sReqTimeStamp)

问题解决了。俺又要去迁移其他功能了

更多相关文章
  • Force.com微信企业号开发系列一-启用二次验证
    微信于9月份推出企业号后引起了业界不小的反响,许多企业都在思索企业号将如何影响企业的运营,从本文开始,我将详细阐述微信企业号开发的相关知识,而本文将着重介绍如何实现更高安全机制的二次验证. 申请企业体验号: 企业号顾名思义就是企业来申请的号,申请时就像申请服务号一样,需要提供各种组织证明文件,对广大 ...
  • 最近有项目基于微信企业号开发,简单记录下如何查看企业号secert 工具/原料 微信企业号 方法/步骤  用管理员的帐号登录后,选择[设置]-[权限管理]进入管理组设置界面  在左边点击[新建管理组],新建一个管理组(这里必须新建一个管理组,因为系统管理组是无法获取权限的)   新建好管理组后,根据 ...
  • 转载微信企业号开发如何建立连接
    连接将使你的企业号更具价值,你可以使用以下三种方式,连接你的企业号及企业应用: 1.企业应用调用企业号提供的接口,管理或查询企业号后台所管理的资源.或给成员发送消息等,以下称主动调用模式. 2.企业号把用户发送的消息或用户触发的事件推送给企业应用,由企业应用处理,以下称回调模式. 3.用户在微信中阅 ...
  • 微信回调模式的官方文档. 开发语言:C#(微信相关功能代码可以从官网下载) 首先,必须要明确几个参数,这几个参数在微信企业号中,每次调用都会使用到. 1.msg_signature:签名(已加密,加密方法可从官网下载) 2.timestamp:时间戳 3.nonce:随机数 4.echostr:随机 ...
  • 微信企业号开发步骤
    1.申请微信企业号测试账号,参考http://www.cnblogs.com/comsokey/p/enterprise.html. 2.熟悉微信企业号后台功能,参考http://www.cnblogs.com/comsokey/p/enterprise.html. 着重练习下通讯录管理,可以先看本 ...
  • 1 微OA365 2 起步软件 应用开发
  • C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理
     前面一篇随笔企业号的一些基础信息,以及介绍如何配置企业号的回调方式实现和企业号服务器进行沟通的桥梁.本篇主要还是继续介绍企业号的开发工作的开展,介绍微信企业号通讯录管理开发功能,介绍其中组织机构里面如何获取和管理部门的信息等内容.  1.企业组织的创建和配置 首先我们可以在企业号的管理后台里面创建 ...
  • C#开发微信门户及应用(20)-微信企业号的菜单管理
    前面几篇陆续介绍了很多微信企业号的相关操作,企业号和公众号一样都可以自定义菜单,因此他们也可以通过API进行菜单的创建.获取列表.删除的操作,因此本篇继续探讨这个主体,介绍企业号的菜单管理操作. 菜单在很多情况下,能够给我们提供一个快速入口,也可以用来获取用户信息的主要入口,通过OAuth2验证接口 ...
一周排行
  • MySQL是一个真正的多用户.多线程SQL数据库服务器.MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成.使用RPM包进行MySQL安装http://cdn. ...
  • zabbix如何使用自定义的脚本来获取数据并展示
    zabbix如何使用自定义的脚本来获取数据并展示启用配置:[[email protected] ...
  • *SQL INNER JOIN 关键字 在表中存在至少一个匹配时,INNER JOIN 关键字返回行. INNER JOIN 关键字语法 SELECT column_name(s) FROM table_name1 ...
  • mysql> alter table gradeinfo change s_num num int(10);ERROR 1025 (HY000): Error on rename of '.\example\# ...
  • ssl vpn与ipsec vpn是目前流行的两类internet远程安全接入技术,它们具有类似功能特性,但也存在很大不同. ssl的"零客户端"解决方案被认为是实现远程接入的最大优势,这对缺乏维 ...
  • 用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)查看CPU信息:cat /proc/cpuinfo查看板卡信息:cat /proc/pci查看PCI信息:lspc ...
  • 近期负责了Metric项目的服务器性能维护,对DB2的性能调节做了些研究.整体感觉数据库调优的关键点应该还是在建库阶段,好的查询更能得到更好的性能.而后期对数据库参数等的调节结果并不是非常明显的.网上数据库调节方面的 ...
  • 查找数据库中重复数据T-SQL  查找数据库中重复数据T-SQL ========第一篇========= 在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句: select dat ...
  • 今天用 xshell 和 bitvise ssh 在 windows 登录SSH ,发现 vi 一些中文内容的文件会出现乱码,配置无效,在网上找到一款不会中文乱码的SSH客户端 MobaXterm ,刚用了下,功能非 ...
  • ilocker:关注 Android 安全(新手) QQ: 2597294287 什么是 PHI node? 所有 LLVM 指令都使用 SSA (Static Single Assignment,静态一次性赋值) ...