微信公众号之接入微信公众号服务器开发(二)

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!

接着上一篇博客继续往下写 :https://blog.youkuaiyun.com/qq_41782425/article/details/85319116

一丶叙述

  • 开发说明

  1. Python代码实现(以Flask框架为例)
  2. 将使用公众号消息会话
  3. 客户端---->微信服务器---->nginx服务器---->开发者服务器
  4. 在微信服务器与开发者服务器之间搭建了nginx服务器默认为80端口(也是微信支持的端口),跟开发者服务器属于同一个主机
  5. 在nginx服务器上配置了多个端口,方便多人进行测试,转发规则:location/wechat8007
  6. 在微信公众号测试平台接口配置url为host/wechat8007时,当微信服务器发送消息给host/wechat8007时,host为nginx服务器时,就会按照/wechat8007转发规则匹配,一旦匹配成功后,由nginx服务器转发给开发者服务器上127.0.0.1:8007进程的用户,这样可以实现多个账号共享一个80端口,并可以收到微信服务器对应用户的消息
  7. 注:在写的flask程序中视图网址也必须是/wechat8007,因为nginx在向后台转发的时候,它只是按照/wechat8007规则知道转发给谁,它会把微信用户的请求原封不动的往后去发,因为微信服务器在向我们发送请求路径就是/wechat:8007,意味着nginx再转发给我们的时候,在我们写的flask程序收到的请求里面,你会发现对应的请求路径也是/wechat8007,所以我们flask程序中的route路径也必须是/wechat8007
  8. 如果是在公司做开发的话,不涉及到多个账户使用一个80端口,所以直接把程序在开发者服务器上以80端口运行,然后在微信公众测试平台配置url为配置程序地址即可
  9. 博主之所以这样做,那是因为我还没有购买服务器(●︿●)
  • 接入微信公众平台

接入微信公众平台开发,开发者需要按照如下步骤完成:

  1. 填写服务器配置
  2. 验证服务器地址的有效性
  3. 依据接口文档实现业务逻辑
  • 填写服务器配置

登录微信公众平台官网后,在公众平台后台管理页面 - 开发者中心页,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。

同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码,详情请参考消息体签名及加解密部分的文档。

1.进入微信公众平台后,找到开发栏,进入基本配置

2.利用测试平台

测试平台登录地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

在手机微信上进行扫码登录即可

二丶验证服务器地址的有效性

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:

开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

 

校验流程:

  1. 将token、timestamp、nonce三个参数进行字典序排序
  2. 将三个参数字符串拼接成一个字符串进行sha1加密
  3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

1.根据上面微信公众平台提供的开发文档进行代码编写

代码实现如下

# coding:utf-8
from flask import Flask, request, abort
import hashlib

# 常量
# 微信的token令牌
WECHAT_TOKEN = "cdtaogang"

app = Flask(__name__)


@app.route("/wechat8007")
def wechat():
    """对接微信公众号服务器"""
    # 接收微信服务器发送的参数
    signature = request.args.get("signature")
    timestamp = request.args.get("timestamp")
    nonce = request.args.get("nonce")
    echostr = request.args.get("echostr")
    # 校验参数
    if not all([signature, timestamp, nonce, echostr]):
        abort(400)

    # 按照微信的流程进行计算签名
    li = [WECHAT_TOKEN, timestamp, nonce]
    # 排序
    li.sort()
    # 拼接字符串
    tmp_str = ''.join(li)
    # 进行sha1加密, 得到正确的签名值
    sign = hashlib.sha1(tmp_str).hexdigest()
    # 将自己计算的签名值与请求的签名参数进行对比,如果相同,则证明请求来自微信服务器
    if sign != signature:
        # 表示请求不是微信发的
        abort(403)
    else:
        return echostr

if __name__ == '__main__':
    app.run(port=8007, debug=True)

2.测试连接开发者服务器

  • step1 使用ssh命令测试连接服务器

  • step2 使用scp命令将程序文件推送到服务器

  • step3 在开发者服务器上运行wechat程序

  • step4 回到微信公众测试平台配置接口

注意:当没有在服务器运行wechat程序时,进行提交会显示失败

此时,回头看服务器程序运行日志,微信给我发了一个以get方式请求过来的数据

大功告成!说明该服务器具有有效性....

转载于:https://www.cnblogs.com/cdtaogang/p/10631092.html

要将DeepSeek集成到微信公众号中,你需要遵循一系列步骤来设置和配置这个过程。这里是一个简化版本的操作指南: ### 一、准备工作 1. **获取API权限**:首先确认你的微信公众平台账号拥有足够的权限用于高级功能开发,比如网页授权等。 2. **注册并认证开发者应用**:访问[DeepSeek官网](https://www.deepseek.com/)完成账户创建,并按照指引申请成为合法的应用程序提供者(API Provider)以获得必要的密钥信息(如AppID/AppSecret)。 3. **搭建服务器环境**:准备一台支持HTTPS协议的安全服务器作为消息收发端点。这台服务器需要能够接收来自微信后台推送过来的消息以及向用户发送回复内容;同时也要确保可以调用DeepSeek提供的各种接口服务来进行数据处理工作。 ### 、具体实施流程 4. **配置URL及Token验证** - 登录至微信公众平台上,在“公众号设置”->"功能设定"找到自定义菜单或者自动回复等相关选项。 - 将你之前建立好的HTTPS链接地址填写进去以便于接收事件推送通知; - 设置唯一的token字符串并与服务器侧保持一致用来校验来源合法性。 5. **编写业务逻辑代码** - 根据实际需求选择合适的编程语言实现具体的交互规则(例如Python Flask/Django框架),核心在于解析接收到XML格式的数据包提取出关键词后通过HTTP请求的方式转发给DeepSeek API进行智能问答或其他操作。 6. **测试优化调整** - 利用微信官方提供的调试工具多次试验直至所有路径都能正常运行为止,期间注意观察日志文件排查可能出现的问题。 - 上线前建议充分考虑用户体验细节之处做出相应改进措施提高满意度。 7. **发布上线** - 完成以上几步之后就可以正式对外发布了! 需要注意的是,由于涉及到网络安全和个人隐私保护等因素的影响,整个过程中一定要严格按照双方文档说明的要求来做,尤其是安全机制方面不可马虎大意。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值