首页 / 博客 / API·多语言·接口

微信通过好友验证接口

分类:API·多语言·接口 · 标签:微信通过好友验证接口、个人微信API、微信二次开发

前言

在私域运营和客户管理场景中,及时通过好友验证是首要环节。人工盯着手机逐一点击"接受",不仅效率低下,还会因为延迟响应让潜在客户流失。如何通过接口自动化处理好友请求,是众多企业和开发者迫切需要解决的问题。本文以 WechatApi 个人微信API 为基础,系统讲解微信通过好友验证接口的原理、调用方式与实战细节。

好友验证的底层原理

微信好友验证流程分为两个阶段:申请方发送验证请求被申请方确认通过。从协议层面看,这两个动作分别对应不同的数据包类型。

当 A 向 B 发送好友申请时,微信服务端会向 B 的设备推送一条包含申请信息的 XML 结构消息,其中关键字段包括:

被申请方若要通过验证,需要携带 Ticket 向微信服务端回传确认包。普通客户端由用户点击"接受"按钮触发这一动作,而通过接口实现时,则需要在接收到新好友申请事件后,自动提取 Ticket 并调用通过验证的接口完成确认。

WechatApi 基于 微信iPad协议 实现,该协议与微信iPad客户端通信逻辑一致,稳定性和兼容性相比 Web 协议或 Android Hook 方案要高出一个量级,因此在自动通过好友验证这类需要长期稳定运行的场景中,表现更为可靠。

接口参数详解

调用"通过好友验证"接口之前,需要先通过 Webhook 或主动轮询方式获取到好友申请事件,从事件数据中取出关键字段。以下是接口的核心参数说明:

参数名类型必填说明
appIdstring设备 ID,即登录设备的唯一标识,由控制台分配
encryptUsernamestring申请人加密后的微信号,从好友申请事件中获取
ticketstring好友请求票据,从好友申请事件中获取,具有时效性
sceneint通过场景码,一般与申请事件中的 scene 保持一致
verifyContentstring通过时附带的验证消息,可留空

请求头必须携带鉴权字段:

VideosApi-token: <你的 API Token>
Content-Type: application/json

appId 是设备维度的标识符,当你在 WechatApi 控制台中接入多个微信账号时,每个账号对应不同的 appId,接口调用时通过该字段指定操作哪台设备上的微信。

ticket 具有时效性,通常在好友申请发出后若干小时内有效,超时后即使调用接口也无法通过验证,因此自动化处理的关键在于实时监听事件并尽快触发验证

事件监听与 Ticket 提取

自动化的第一步不是调用通过验证的接口,而是先建立事件监听机制,捕获新好友申请事件。WechatApi 支持通过 Webhook 回调将事件实时推送到你的服务器。

在控制台配置好回调地址后,当有新好友申请时,你的服务端会收到如下结构的 JSON 推送:

json{
  "ret": 200,
  "msg": "success",
  "data": {
    "appId": "your_device_app_id",
    "type": "friendVerify",
    "content": {
      "fromUserName": "wxid_xxxxxxxxxx",
      "encryptUsername": "v1_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@stranger",
      "ticket": "v2_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@stranger",
      "scene": 3,
      "verifyContent": "我是通过群聊认识你的",
      "nickname": "张三",
      "headImgUrl": "https://wx.qlogo.cn/mmhead/xxxxxx/132"
    }
  }
}

关键字段提取逻辑:

建议在收到事件后,先将申请信息写入数据库或消息队列,再异步触发通过验证的流程,避免因处理耗时导致 Webhook 响应超时。

调用通过验证接口(Python 示例)

以下是一个完整的 Python 调用示例,展示从收到 Webhook 数据到调用通过验证接口的完整链路:

pythonimport requests

# WechatApi 配置
API_BASE_URL = "https://post.wechatapi.net"
API_TOKEN = "your_api_token_here"
APP_ID = "your_device_app_id"

def accept_friend_verify(encrypt_username: str, ticket: str, scene: int = 3):
    """
    调用通过好友验证接口
    :param encrypt_username: 从好友申请事件中获取的加密用户名
    :param ticket: 好友请求票据
    :param scene: 申请场景码
    """
    url = f"{API_BASE_URL}/api/v1/friend/acceptVerify"
    
    headers = {
        "VideosApi-token": API_TOKEN,
        "Content-Type": "application/json"
    }
    
    payload = {
        "appId": APP_ID,
        "encryptUsername": encrypt_username,
        "ticket": ticket,
        "scene": scene,
        "verifyContent": ""
    }
    
    response = requests.post(url, json=payload, headers=headers, timeout=10)
    result = response.json()
    
    if result.get("ret") == 200:
        print(f"[成功] 已通过好友申请: {encrypt_username}")
    else:
        print(f"[失败] ret={result.get('ret')}, msg={result.get('msg')}")
    
    return result


# 模拟处理 Webhook 推送数据
def handle_friend_verify_event(event_data: dict):
    content = event_data.get("data", {}).get("content", {})
    encrypt_username = content.get("encryptUsername")
    ticket = content.get("ticket")
    scene = content.get("scene", 3)
    
    if not encrypt_username or not ticket:
        print("事件数据不完整,跳过处理")
        return
    
    # 可在此处加入过滤逻辑,如只通过特定来源的好友申请
    accept_friend_verify(encrypt_username, ticket, scene)

调用成功后,接口返回:

json{
  "ret": 200,
  "msg": "ok",
  "data": {
    "appId": "your_device_app_id",
    "userName": "wxid_xxxxxxxxxx"
  }
}

data.userName 即为已通过验证的好友 wxid,可在后续流程中直接用于发送欢迎消息。

通过验证后的自动欢迎消息

好友验证通过后,通常需要立即发送欢迎语,趁热度最高时完成第一次触达。以下是一个简单的 bash 脚本示例,演示调用发送文本消息接口:

bash#!/bin/bash

API_TOKEN="your_api_token_here"
APP_ID="your_device_app_id"
TO_WXID="wxid_xxxxxxxxxx"   # 刚通过验证的好友 wxid

curl -X POST "https://post.wechatapi.net/api/v1/message/sendText" \
  -H "VideosApi-token: ${API_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "appId": "'"${APP_ID}"'",
    "toUserName": "'"${TO_WXID}"'",
    "content": "你好,感谢添加!有什么可以帮到你的?"
  }'

在实际私域运营中,欢迎消息可以根据好友申请的来源场景(scene 字段)做差异化内容:从朋友圈广告过来的发产品介绍,从群聊过来的发群专属福利,从搜索过来的发品牌故事——精细化的首触内容能显著提升后续转化率。

如果你正在构建完整的私域运营系统,可以参考 微信SCRM 的方案思路,将好友自动通过、欢迎消息、打标签、分组管理等动作串联成完整工作流,实现从新好友进入到进入销售漏斗的全程自动化。

常见问题与注意事项

Ticket 失效怎么处理

ticket 是一次性且有时效的,实测有效期在申请发出后约 3 天左右,但建议在收到事件的 5 分钟内完成处理。如果因服务器故障等原因错过了时效,申请方需要重新发起申请。

为避免这类情况,建议:

  1. Webhook 回调服务做高可用部署,避免单点故障
  2. 事件写入消息队列后再消费,即使消费端短暂不可用也不会丢失事件
  3. 对于重要渠道的好友申请,设置告警机制,超时未处理时人工介入

批量通过的频率控制

自动通过好友验证虽然方便,但高频操作存在触发微信风控的风险。建议:

WechatApi 在协议层面已做了必要的行为模拟,但业务侧的频率控制仍需开发者自行实现。

多设备管理

如果你的业务需要同时管理多个微信账号(如多个销售人员的个人微信),每个账号对应一个 appId。所有账号的好友申请事件可以统一推送到同一个 Webhook 地址,在处理函数中通过 appId 字段区分来源设备,再分别调用对应设备的通过验证接口。

这种多账号统一管理的模式,在 微信二次开发 体系中是非常典型的架构,适合需要团队协作管理多条私域线路的企业场景。

encryptUsername 与 wxid 的区别

好友申请事件中的 encryptUsername 是临时性的加密标识,仅在通过验证的接口中使用。成功通过验证后,返回的 data.userName 才是对方的真实 wxid,后续所有消息发送、好友操作都应使用 wxid。不要将 encryptUsername 存储为长期标识符。

小结

微信通过好友验证接口的核心逻辑可以归纳为三步:监听事件 → 提取 Ticket → 调用确认接口。看起来简单,但实际工程落地需要关注 Ticket 时效性、频率控制、多设备路由、事件队列可靠性等细节。

WechatApi 基于 iPad 协议提供了稳定的事件推送和接口调用能力,开发者只需专注业务逻辑,不需要处理协议层的复杂性。如果你正在评估方案,可以访问 WechatApi 官网 了解完整能力,或前往 开发文档 查看所有可用接口,也可以直接在 控制台 注册账号免费体验。

想动手试试?

WechatApi 提供扫码登录、消息收发、好友与群管理等 REST 接口,注册后几分钟跑通。

立即免费注册查看开发文档

相关产品页

🔗 个人微信API(产品页)🔗 微信iPad协议(产品页)🔗 微信二次开发(产品页)

相关文章

微信API接口返回失败/收不到消息?完整排查清单微信 API 怎么对接?Python 发出第一条消息实战Node.js 微信机器人开发教程(发消息 + 收回调)个人微信API能力清单:消息/好友/群/朋友圈接口一览
© 2025 WechatApi · 企业级微信智能机器人接入平台
官网价格帮助文档博客
苏ICP备2024128799号 · 苏ICP备2023038368号