python项目公众号,开发一个微信公众号

  python项目公众号,开发一个微信公众号

  今天公司老板让我在公司企业微信和服务商管理后台查本地应用。

  听起来像是欺负人,我也没搞过企业微信对接。很迷茫,不知道怎么开始。

  先说明一下企业微信的情况。

  登录企业微信后,右上角服务商管理后台。

  然后点击进入应用管理界面。

  选择web应用程序。下面是如何创建一个应用程序。自己去百度吧。我就不解释怎么创建了。在此配置回拨URL,这是您的网站的URL地址。

  例如:https://xxxx.xxxx.com/weixin

  这里我用Django框架的公司网站来验证回调。如果回调验证不成功,在验证成功之前,下面会有一个提示,要求服务提供商做出响应。

  这里是第一个大坑。这个代码使用pycrypto包,这里有一个叫crypto的东西,3年前没有更新过。于是我上网搜了一下,怎么安装?

  这里就不说安装方法了。在后面的博客里,我会继续更新如何安装这个坑爹的python包。

  安装这个包后,你会发现我们从微信官方下载的python代码包使用的是Python 2.7版本,那么问题来了。我这里用的是Python版,纳尼?

  水火不容,怎么办?先跑步,遇到问题再聊!

  在您的Django中,添加以下ULR。此URL需要匹配任何请求地址。

  我就不解释用(。*)这里,就是匹配任何URL。

  如何使用此测试连接。

  按照以下内容填写,企业的CorpID找到后会正确填写。点击检查问题,会出现上图所示的URL地址,可用于本地测试。因为我是在本地测试完成后在官网修改的!

  获取这个测试的URL,首先在您的Django上进行URL匹配测试。

  在我匹配了这里的URL之后,我将返回到页面。

  说明你的网址匹配成功了。接下来要做的是如何解析RUL并拆分URL中的内容。

  在views.py中编写匹配项的方法:

  def Weixin(request):if request . method== POST :返回HttpResponse(Weixin-NO)else:

  签名=请求。GET.get(msg_signature ,)

  时间戳=请求。GET.get(时间戳,)

  nonce=请求。GET.get(nonce ,)

  echo_str=请求。GET.get(echostr , )print(签名)print(时间戳)print(nonce)print(echo _ str)return http response( Weixin-yes )

  在这个请求中,获得了以下数据

  好了,现在获得数据后,需要进行URL拼接和加解密过程验证。

  这里解释一下,这个方法wxcpt。VerifyURL用于演示。

  WXBizMsgCrypt.py文件封装了WXBizMsgCrypt的接口类,为用户访问企业微信提供了三个接口。Sample.py文件提供了如何使用这三个接口的示例,错误代码由ierror.py提供

  WXBizMsgCrypt封装了三个接口:verify url、decrypt msg和encrypt msg,这三个接口是开发者用来验证接收消息的url、解密接收消息和加密开发者的回复消息的。使用方法引用Sample.py文件。

  我们需要微信给我们的WXBizMsgCrypt.py文件。

  将此文件放在与views.py同级的目录中,导入以便于调用。完整的代码如下

  这需要几个参数:

  from django . http . response importhttpresponse from we chatpy . exceptions importinvalidsignatureexception from user app . wxbizmsgcrypt importwxBizmsgcrypt #回调令牌中随机生成的令牌,EncodingAESKey

  Corbid=这个id是企业微信号的Stoken=这个是回调URL下的令牌 sEncodingAESKey=,回调URL下的encodingaaeskey wxcpt=wxBizmsgcrypt(Stoken,sEncodingAESKey,scorpid)。

  defweixin(请求):

  if request.method==POST :

  返回HttpResponse(Weixin-NO )

  否则:

  签名=请求。GET.get(msg_signature ,)时间戳=请求。GET.get(timestamp , )nonce=请求。GET.get(nonce , )echo_str=request。GET.get(echostr , )try: ret,sEchoStr=wxcpt。VerifyURL(签名,时间戳,nonce,echo_str) if (ret!=0):print( ERR:verify URL ret: str(ret))exception invalidsignatureexception:return HttpResponse( Weixin-NO )response=HttpResponse(sec hostr,content_type=text/plain )返回响应

  您也可以选择不在这里捕获这个异常。不,写这一步。

  在python3.6下,主要问题出现在下面的方法调用中。前面说了,微信正式版是2.7,我们要对官方列表代码做小改动。

  ret,sEchoStr=wxcpt。VerifyURL(签名、时间戳、随机数、echo_str)

  下图显示了官方包的导入。

  我们需要做一些小改动,删除不必要的东西。下图是我修改后的导入。

  然后修改微信官方给的方法,

  1.找到下面的方法并添加它。

  2.说说微信官方给的代码。代码中所有的Exception、e和print都改为python3。

  ExceptException,e:printe#: print #被修改为

  except exception as e:print(e)# all print改为python3,print()

  3.找到以下方法并修改它们

  修改后,再次访问网址。

  打印ret的值。如果为0,则修改成功。验证回调是否正确。

  在回拨测试网站上测试。

  这里可以看到,我的EchoStr是21312,在本地测试的时候会用下面的地址返回给你,如下图。

  这里,验证是成功的。在这里,您可以将代码上传到服务器。然后在企业微信中点击设置进行验证,验证成功。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: