python微信搭建,教你用python一步一步搭建微信公眾平台(一)

最近在學用python搭建微信公共號,使用的工具,python 新浪SAE平台,微信的公眾平台

你需要先在微信的公眾平台與新浪SAE平台上各種注冊,微信平台注冊的時候需要你拍張手持身份證的照片,還有幾天的審核期

等待微信公眾審核通過后,登錄公眾平台后,點擊高級功能。將會看到需要提供一個接入信息:

ce0d9eae6c275dd05a02b2dee1e1196e.png

那么我們需要一個網址作為接口(這時就需要SAE上搭建Python的一個應用),Token呢,就是相當於我們和微信之間約定的“密碼”,這里可以隨便填寫英文或者數字,但實測輸入純數字有時會有問題,所以還是字符串比較靠譜。

第一步,在SAE上搭建python的應用,在下圖的應用里選擇python應用。

7c22e2c6e3a906f53f304b867f8453db.png

填好二級域名和應用名稱等,選擇好語言。這里我們使用Python開發選擇web應用。創建好應用之后,在代碼管理中創建一個新的版本。而后我們可以選擇編輯代碼。能夠實現在線編輯。可以使用git同步本地代碼。

第二步,編寫index.wsgi

因為我們使用的是web.py框架,因為其良好的xml解析,想了解web.py的童鞋可以移步 http://webpy.org/docs/0.3/tutorial.zh-cn

首先編寫config.yaml

name: yangyanxing

version: 1

libraries:

- name: webpy

version: "0.36"

- name: lxml

version: "2.3.4"

...

接着我們繼續編寫index.wsgi

# coding: UTF-8

import os

import sae

import web

from weixinInterface import WeixinInterface

urls = (

'/weixin','WeixinInterface'

)

app_root = os.path.dirname(__file__)

templates_root = os.path.join(app_root, 'templates')

render = web.template.render(templates_root)

app = web.application(urls, globals()).wsgifunc()

application = sae.create_wsgi_app(app)

簡單解釋一下,

from weixinInterface import WeixinInterface

這里我們需要再創建一個weixinInterface的py文件,你也可以將這個類寫在index.wsgi文件中,只是這樣看起來會亂亂的

新建一個weixinInterface.py文件,注意大小寫,寫入以下代碼

這里定義了一個GET方法,是根據微信公眾平台的要求,進行的token驗證,因為這里我們定義了templates_root為根目錄下的templates,所以還要在根目錄下創建一個目錄templates的目錄

# -*- coding: utf-8 -*-

import hashlib

import web

import lxml

import time

import os

import urllib2,json

from lxml import etree

class WeixinInterface:

def __init__(self):

self.app_root = os.path.dirname(__file__)

self.templates_root = os.path.join(self.app_root, 'templates')

self.render = web.template.render(self.templates_root)

def GET(self):

#獲取輸入參數

data = web.input()

signature=data.signature

timestamp=data.timestamp

nonce=data.nonce

echostr=data.echostr

#自己的token

token="kobe2018" #這里改寫你在微信公眾平台里輸入的token

#字典序排序

list=[token,timestamp,nonce]

list.sort()

sha1=hashlib.sha1()

map(sha1.update,list)

hashcode=sha1.hexdigest()

#sha1加密算法

#如果是來自微信的請求,則回復echostr

if hashcode == signature:

return echostr

如果運行時報錯,發現沒有lxml模塊,在應用的代碼管理可以手動導入,點擊上傳代碼包,只支持zip

af68d3d9c3459ad642d51de39c09f58a.png

第三步,因為微信是將驗證信息GET發出去的,所以這里使用了GET方法來取得值並且返回相應用值保存全部,現在回到微信的公眾平台高級管理界面返回微信配置頁面在url里面填寫你在新浪SAE里應用名稱並且加上/weixin,如:http://XXXX.sinaapp.com/weixin token隨便輸入,只要注意更改weixinInterface.py中的token就行了,輸入好了以后點擊提交,如果沒有什么問題的話就會通過驗證!

第四步,新建一個簡單的自動回復的方法,鸚鵡學舌,就是用戶說什么,它也回復什么,沒什么用,只是隨便玩玩!

在weixinInterface.py里繼續添加代碼

def POST(self):

str_xml = web.data() #獲得post來的數據

xml = etree.fromstring(str_xml)#進行XML解析

content=xml.find("Content").text#獲得用戶所輸入的內容

msgType=xml.find("MsgType").text

fromUser=xml.find("FromUserName").text

toUser=xml.find("ToUserName").text

return self.render.reply_text(fromUser,toUser,int(time.time()),u"我現在還在開發中,還沒有什么功能,您剛才說的是:"+content)

這個def 是和上一個GET同級的,注意縮進

接着我們在templates目錄下創建reply_text.xml模板文件,寫入以下代碼

$def with (toUser,fromUser,createTime,content)

$createTime

注意這里的toUser與fromUser是剛才post的是相反的,因為這里的toUser也就是POST函數里的fromUser,這里的fromUser也就是POST函數里的toUser,msgType是text

全部保存,現在就在用你的個人微信關注一下你創建的公眾微信號,然后隨便輸入些內容,如果沒有什么問題,你將會收到一條鸚鵡學舌的回復內容!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值