微信企业号开发之中文编码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验证接口 ...
一周排行
  • 线程范围内的共享数据一
    import java.util.Hashtable; import java.util. ...
  • 留言本实现工具--PHP和MySql 5.0概述:    介绍留言本的设计思路及流程,在介绍留言本开发过程的同时,对PHP中一些常用函数及编程技巧及思路有全面掌握,而且还可以学到许多PHP的编程技巧,从而全面提高个人 ...
  •   最小化安装,缺少gcc.kernel-devel.make等包,网卡默认没启动问题网卡默认未启动问题a.修改配置,默认启动vi /etc/sysconfig/network-script/ifcfg-eth0动态 ...
  • Windows 7 Pro + Outlook 2007 SP2,OST文件大概有4G:Exchange 2007 SP3 对该帐号的邮箱限制设定为5.0G / 5.5G / 6.0G:Outlook 2007为缓存 ...
  • 前些天,遇到一个 没有找到目录 COM+ Class Registration Database\,或者不能访问该目录.该目录下的文件或子目录将不做备份.没有找到目录 \\192.168.40.11\System?S ...
  • [网络收集]如何让你的计算机无线网卡和有线网卡同时使用2010年06月10日 星期四 3注意:这里的172.16.x.x 和192.168.1.X 和你的局域网环境有关,可以命令行下ipconfig /all ...
  • 原文来自:[url]http://www.webwoo.net/bc/bencandy-.htm[/url],作者:仪征化纤股份有限公司信息中心 赵卫民   在对大批量的数据进行分析比较时,最常用 ...
  • 我们平常可以直接在xml里设置margin,如: <ImageView android:layout_margin="5dip" android:src="@drawable/im ...
  • 在ps中将数据从ps cmdlet传递给native applications时,ps的默认输出编码格式是由变量$OutputEncoding控制的.由于ps的输出编码格式与native applications的编 ...
  •  环境说明:一台Windows2008R2+Exchange2010.由于是全新环境的部署,所以在AD安装时,选的是纯2008R2 AD环境,Exchange在准备和安装时都没有选择和准备兼容2003/2007.碰到 ...