微信服务器接入流程

来源:互联网 发布:装修公司加入网络平台 编辑:程序博客网 时间:2024/05/21 06:17

                                      微信服务器接入流程

1. 创建django项目,创建app,创建wechat路由


2. 写路由对应的视图函数,不能使用csrf_token验证,两种方式:
  1)取消该项目所有视图函数csrf_token的验证


2)使用@csrf_exemp修饰器修饰该函数



3. 如果需要使用到数据库,后台管理等,需要将数据库连接配置好,收集后台使用的静态文件,上传项目至自己服务器

4. 将服务器的nginx默认80端口改为其他端口

修改nginx默认端口
  1.进入cd /etc/nginx/sites-enabled
  2.编辑default文件 vim default

5. 将该项目部署到服务器的80或者443端口,参考之前讲的django项目部署,保证在浏览器中可以正常访问该项目

6. 微信开发的基本配置


7. 填写配置

url填写:http://服务器外网IP:端口号/wechat 例如:http://116.122.112.48/wechat  http的端口号固定使用80,不可填写其他。

Token:自主设置,这个token用于验证开发者服务器。

8. 修改后台视图函数wechat的代码

 

# 定义一个用于验证微信请求的处理函数

def checkSignature(request):

    # 全局变量

    global TOKEN

    # 捕获异常

    try:

        # 从request中提取参数

        signature = request.GET['signature']

        echostr = request.GET['echostr']

        timestamp = request.GET['timestamp']

        nonce = request.GET['nonce']

        # 1.将token、timestamp、nonce三个参数进行字典序排序

        tmpList = [TOKEN,timestamp,nonce]

        tmpList.sort()

        # 2.将三个参数字符串拼接成一个字符串进行sha1加密

        tmpstr = '%s%s%s'%tuple(tmpList)

        tmpstr = hashlib.sha1(tmpstr).hexdigest()

        # 3.开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

        if tmpstr == signature:

            # 返回随机字符串

            return echostr

    except:

            # 返回None表示验证失败

        return  None

在wechat视图函数中调用该函数,将request作为参数传入

@csrf_exempt

def wechat(request):

    # 判断请求类型

    if request.method == 'GET':

        # 执行验证函数

        result = checkSignature(request)

        return HttpResponse(result,content_type='text/plain')

 

Ps: 重新在服务器中运行项目

9. 在微信基本配置中,提交配置信息,如果出现提交成功,表示连接成功