精华内容
下载资源
问答
  • 这篇文章主要介绍了微信公众号服务器验证Token步骤图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 服务器验证Token验证分为以下及步骤 一,在微信公众号...
  • 微信公众号主要面向名人、政府、媒体、企业等机构推出的合作推广业务。在这里可以通过微信渠道将品牌推广给上亿的微信用户,减少宣传成本,提高品牌知名度,打造更具影响力的品牌形象。 3. 公众平台 微信公众平...

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

    一丶概述

    公众号与公众平台

    1. 微信账号类型

    • 个人号
    • 公众号
      • 订阅号
      • 服务号
    • 企业号

    2. 公众号

    微信公众号主要面向名人、政府、媒体、企业等机构推出的合作推广业务。在这里可以通过微信渠道将品牌推广给上亿的微信用户,减少宣传成本,提高品牌知名度,打造更具影响力的品牌形象。

    3. 公众平台

    微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,而公众平台开发接口则是提供服务的基础,开发者在公众平台网站中创建公众号、获取接口权限后,可以通过阅读公众平台开发接口文档来帮助开发。

    微信公众平台可以用来注册、管理公众号企业号

    登录网址:https://mp.weixin.qq.com/

    进入上面网址,可进行登录及注册

    注册流程:

    • step1 基本信息

    • step2 选择类型

    • step3 信息登记

    • step4 公众号信息

    • step5 完成注册后,进行登录,首先需使用手机进行扫码

    • 在手机端显示此界面,确认无误后,确定即可

    • 通过身份验证后,即可在网页端对创建的公众号进行简单配置,如下图

    • 一些简单的功能添加以及配置(需要啥配置啥即可,简单操作这里不做详细说明了)

    4. 公众号与个人号的区别

    微信公众号和个人号是完全不同的。

    微信对个人号的定位是普通用户之间的交流和通讯,微信并不鼓励和支持使用个人号进行营销推广(微信曾经大规模封杀好友过多的营销个人号)。

    而公众号则完全是为品牌推广、信息推送等服务而定制的。使用公众号,可以向关注者(即粉丝)群发图文消息,粉丝在对话界面看到消息后,可以点击跳转到一个图文页面。公众号还提供关键词自动回复等基础功能,以此可以随时、自动的和粉丝进行互动。

    除了这些基础功能之外,更大的区别是,微信针对公众号开放了很多程序接口。在这些接口的基础上,可以向粉丝提供更多的服务。此外,认证的服务号还可以申请微信支付。粉丝可以使用微信支付向进行付款(订购服务或购买商品)。所有这些,都是个人号不具备的。

    微信公众号的注册几乎是没有门槛的。不过针对不同类型的公众号,微信提供的功能不同,资质要求也不一样。

    二丶微信开发原理

    公众号主要通过

    • 公众号消息会话
    • 公众号内网页

    来为用户提供服务的。

    • 公众号消息会话

    公众号是以微信用户的一个联系人形式存在的,消息会话是公众号与用户交互的基础。

    • 公众号内网页

    许多复杂的业务场景,需要通过网页形式来提供服务。

    • 使用微信服务器提供的功能无法满足我们的需求

    设想两个场景:

    1. 公众号的消息自动回复想做的智能一些,类似于iphone的Siri,例如粉丝发送“今天的北京天气”到公众号,回复粉丝信息时要按照特定时间特定城市给予反馈;

    2. 公众号内嵌的网页需要获取浏览用户的微信头像、昵称、当前定位等信息

    • 模型分类

    无扩展应用模型

    1. 公众号消息会话

     

    2. 公众号内网页

    有扩展应用模型

    1. 公众号消息会话

    2. 公众号内网页

    • 公众号接口

    1. 公众号消息会话

    目前公众号内主要有这样几类消息服务的类型,分别用于不同的场景。

    群发消息

    公众号可以以一定频次(订阅号为每天1次,服务号为每月4次),向用户群发消息,包括文字消息、图文消息、图片、视频、语音等。

    被动回复消息

    在用户给公众号发消息后,微信服务器会将消息发到开发者预先在开发者中心设置的服务器地址(开发者需要进行消息真实性验证),公众号可以在5秒内做出回复,可以回复一个消息,也可以回复命令告诉微信服务器这条消息暂不回复。被动回复消息可以设置加密(在公众平台官网的开发者中心处设置,设置后,按照消息加解密文档来进行处理。其他3种消息的调用因为是API调用而不是对请求的返回,所以不需要加解密)。

    客服消息

    在用户给公众号发消息后的48小时内,公众号可以给用户发送不限数量的消息,主要用于客服场景。用户的行为会触发事件推送,某些事件推送是支持公众号据此发送客服消息的,详见微信推送消息与事件说明文档。

    模板消息

    在需要对用户发送服务通知(如刷卡提醒、服务预约成功通知等)时,公众号可以用特定内容模板,主动向用户发送消息。

    2. 公众号内网页

    对于公众号内网页,提供以下场景接口:

    网页授权获取用户基本信息

    通过该接口,可以获取用户的基本信息

    微信JS-SDK

    是开发者在网页上通过JavaScript代码使用微信原生功能的工具包,开发者可以使用它在网页上录制和播放微信语音、监听微信分享、上传手机本地图片、拍照等许多能力。

    3.微信开发者文档

    文档链接地址:https://mp.weixin.qq.com/wiki/home/index.html

     

     

     

     

     

    展开全文
  • WeChatServer 用java写的微信公众号服务器
  • 微信公众号服务器返回实例
  • 微信服务器 这是一个微信公众号服务器,基于Java/Spring/Hibernate/RESTful。 计划为应用程序添加 RESTful API。 计划为已连接的微信公众号添加管理页面。
  • 微信公众号服务器配置基本配置实现关注登陆设置公众号菜单 基本配置 实现关注登陆 设置公众号菜单

    基本配置

    1. 微信公众配置相关参数
      微信公众号配置相关参数
    2. 后台返回数据
    <?php
    
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce     = $_GET["nonce"];
    $echostr   = $_GET["echostr"];
    if (!$signature || !$timestamp || !$nonce || !$echostr) {
        return;
    }
    $tmpArr = array($this->token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode($tmpArr);
    $tmpStr = sha1($tmpStr);
    if ($tmpStr == $signature) {
        ob_clean();
        echo $echostr;
        exit;
    }
    
    1. 验证成功

    实现关注登陆

    微信登录二维码

    后台获取二维码

    <?php
    $access_token = accessToken(APPID, SECRET);
    $scene_id     = time(). rand(10000, 99999);//用于判断扫描用户
    $data = [
        'expire_seconds' => 60,
        'action_name'    => 'QR_STR_SCENE',
        'action_info'    => [
            'scene' => [
                'scene_str' => $scene_id
            ]
        ]
    ];
    $data = json_encode($data);
    $code = postCurl("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=$access_token", $data);
    $code = json_decode($code, true);
    $wxcode = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".$code['ticket'];
    exit;
    

    前端获取后台拿到的地址显示出二维码

    <img src="{$wxcode}" alt="微信登陆二维码"></img>
    

    用户扫描二维码

    根据微信推送的事件获取用户信息

    <?php
    
     $xml = json_decode(json_encode(simplexml_load_string(file_get_contents("php://input"), 'SimpleXMLElement', LIBXML_NOCDATA)));
    if ($xml) {
        switch ($xml['MsgType']) {
            case 'event': //扫码关注
                switch ($xml['Event']) {
                    case 'SCAN': //用户已关注时的事件推送
                        login($xml);
                        break;
    
                    case 'subscribe': //用户未关注时,进行关注后的事件推送
                        login($xml);
                        break;
                }
                break;
    
            case 'text': //接收用户消息
    
                break;
        }
    }
    function login($xml)
    {
    	$openid      = $xml['FromUserName'];
    	$scene_id    = $xml['EventKey'];
    	$create_time = $xml['CreateTime'];
    	//将数据插入数据库
    	//、、、
    }
     exit;
    

    页面一直请求扫码关注状态

    t = setInterval(function () {
            jQuery.ajax({
                data: {
                    scene_id: '{$scene_id}',
                },
                type: 'POST',
                dataType: 'json',
                success: function (res) {
                    if (res.success) {
                        clearInterval(t)
                    }
                }
            })
        }, 1000)
    

    后台返回扫码关注状态

    <?php
    查新保存scene_id数据字段的数据
    根据opnid和unionid返回用户数据进行登录
    

    设置公众号菜单

    <?php
    $click = [
        "button" => [
            [
                "type" => "click",
                "name" => "一级菜单",
                "key"  => "微信返回EventKey值",
                "sub_button" => [
                    [
                        "type" => "click",
                        "name" => "二级菜单",
                        "key"  => "my_match",
                    ],
                    [
                        "type" => "click",
                        "name" => "二级菜单",
                        "key"  => "new_match",
                    ],
                ]
            ],
            [
                "name" => "扫码登录",
                "type" => "scancode_push",
                "key"  => "扫码登录",
            ],
        ]
    ];
    
    $access_token = accessToken();
    $data = json_encode($click, JSON_UNESCAPED_UNICODE);
    $res = postCurl("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=$access_token", $data, true);
    $res = json_decode($res, true);
    if ($res['errcode']) {
        echo $res['errmsg'];
    }
    exit;
    

    后台相关函数

    <?php
    //get请求
    function getCurl($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        //curl_setopt($ch, CURL_SSLVERSION_SSL, 2);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        $data = curl_exec($ch);
        return json_decode($data, true);
    }
    
    //post请求
    function postCurl($url, $data = '')
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        //curl_setopt($ch, CURLOPT_POST, true);//发送一个常规的POST请求
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($url, CURLOPT_HTTPHEADER, "Accept-Charset: utf-8");
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_AUTOREFERER, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //获取的信息以文件流的形式返回
        //curl_setopt($ch, CURLOPT_HEADER, true);//将头文件的信息作为数据流输出
        $data = curl_exec($ch);
        curl_errno($ch);
        return $data;
    }
    
    //获取access_token
    function accessToken($appid,$secret)
    {
        $reslut=getCurl("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret");
        if (!$cache['errcode']) {
        	return $reslut['access_token'];
        }
        
    }
    

    微信推送事件接口说明

    展开全文
  • 说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! ... 一丶叙述 开发说明 Python代码实现(以Flask框架为例) ... 客户端---->微信服务器---->nginx服务器---->开发者服务器 ...

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

    接着上一篇博客继续往下写 :https://blog.csdn.net/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方式请求过来的数据

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

    展开全文
  • php 微信公众号服务器配置首次验证 首先要确定你有微信公众号和服务器; 登录微信公众号平台,左侧最下方的 开发->基本配置 我这里用了get_event方法接受验证,既你在服务器的丢出来一个可以读取的接口,方法名...

    php 微信公众号服务器配置首次验证

    首先要确定你有微信公众号和服务器;

    登录微信公众号平台,左侧最下方的 开发->基本配置
    服务器地址,令牌
    我这里用了get_event方法接受验证,既你在服务器的丢出来一个可以读取的接口,方法名为get_event;

    下面是该方法里面的内容,用于验证;
    在这里插入图片描述

    以上我用php简单的验证所有步骤这么多,只是简单的明文模式,其他模式可另行选择。
    总结也就是在控制器中写一个方法供微信端访问,配置信息完成,代码如上图即可;

        public function get_event()
    {
       $timestamp = $_GET['timestamp'];//timestamp其实就是一个时间戳
        $nonce = $_GET['nonce'];//nonce是一个随机参数
        $token = "token";//这个token填写你在微信公众平台上写的那个值
        $signature = $_GET['signature'];//这个signature其实就是在微信公众平台已经加密好的字符串
        $echostr = $_GET['echostr'];
        $array = array($timestamp, $nonce, $token);
        sort($array);
        $tmpstr = implode('', $array);
        $tmpstr = sha1($tmpstr);
        if ($tmpstr == $signature && $echostr) {
            echo $echostr;
            exit;
        }
    }
    
    展开全文
  • 微信公众号查询数据库,微信公众号数据库怎么查询?以下是小编整理的微信公众号怎么查询数据库的内容。有兴趣的朋友可以往下看看。希望以下的的内容能对您有帮助。1、 启用消息接口登陆微信公众平台,选择:高级功能...
  • 微信公众号开发者权限 开通接口与配置服务器作为微信公众平台的开发者,是可以修改自定义菜单的。每个公众号下端都会有三个或者是四个菜单。关于菜单的内容以及显示的方式都是可以通过后台的开发者权限更改的。如果...
  • 搭建微信公众号服务器的方式不只一种,可以用java等其他语言或是其他云空间来搭建服务器,这里总结的是用虚拟主机(主机公园中的虚拟主机)搭建微信公众号服务器的大概思路。不管用什么方式,配置微信公众号服务器...
  • 微信公众号服务器配置验证实现 /** * 微信服务器配置验证方法 * * @param request * @param response * @return */ private String access(HttpServletRequest request, HttpServletRespo...
  • 申请公众号并通过微信公众号进行营销,宣传和业务办理,借助微信巨大的用户数量,相比于其他方式可以取得更好的效果.微信公众平台虽然提供了消息交互等功能,但局限性很大,而通过开发模式管理公众号也存在开发周期长和...
  • 关于微信公众号服务器设置token的问题 http://blog.csdn.net/shb2058/article/details/77247602
  • java微信公众号服务器配置-验证Token 之前做了微信支付,最近开始了微信公众号的开发,没想到第一步验证Token就踩坑了,开个贴记录一下,同时也希望能帮助到同样有疑惑的小伙伴们 一、填写服务器配置 首先我们...
  • 微信公众号第三方服务器该项目用于实现一个最基本的微信公众号第三方服务器开发的模板。基于:ThinkPHP v3.2.3Vue v2.2.0Vue-resource v1.0.3功能微信用户访问的前端模块后台管理模块:登陆、微信公众号菜单设置、...
  • java微信公众号服务器配置

    千次阅读 2018-04-15 16:39:40
    1.微信公众号配置2.java端验证/** * 微信公众号验证 * @return */ @RequestMapping(value = "/wechatAuth") @ResponseBody public String wechatAuth(String signature, String timestamp, String ...
  • 微信公众号服务器配置详解一览

    万次阅读 2018-06-06 16:13:20
    下图是配置完成后的样子,后面给大家详细介绍每一步的步骤:下图为微信公众号开发验证机制:由用户发送请求给微信服务器,微信服务器根据地址URL访问请求个人开发服务器,然后个人开发服务器响应返回给微信服务器(其中有...
  • 909422229_微信公众号服务器配置

    千次阅读 2018-09-27 12:29:32
    一、打开微信公众号管理界面 本人使用的springboot项目地址:https://github.com/binarywang/weixin-java-mp-demo-springboot 使用微信公众号开发可以用该项目,配置一下即可,很简单的配置。 鼠标滑到最底部的...
  • 本文是 CODING 持续集成自定义构建节点功能 的使用教程,通过一个为微信公众号启用开发配置的 Demo 演示,讲解如何接入自定义构建节点,如何使用自定义构建节点进行构建、测试、部署服务器。 准备工作 环境 本文会...
  • 最近,对微信公众号有点兴趣,就自己研究了研究里面的一些内容,发现还挺... 我想,做微信公众号开发的,对于想获取关注了公众号的用户信息,或者说是当前与后台服务器进行交互的当前用户信息,这个功能是很重要...
  • 一些刚接解微擎或者刚接触微信公众号开发的朋友可能会问及这样的问题。爱优科技小编就此进行解决,希望能够帮助到一些刚做微信开发的朋友们。微擎不备案可不可以用,这得分几个层面来讲。首先微擎框架作为一款比较...
  • 一,在微信公众号平台上设置 1.1打开微信公众号平台 1.2打开”开发“中的<基本配置> 1.3点击基本配置页面里的修改配置 1.4输入URL: url填写:http://外网IP:端口号/wx 。外网IP请到腾讯云购买成功处查询,...
  • 一个坑 在使用微信公众号开发时,发现php制作的菜单不能显示公众号下面,最后发现原来是需要设置白名单 的,把自己服务器的IP地址加入到白名单后就好用了。不加入白名单无法获取到access-token. ...
  • 1、登录微信公众号平台 登录微信(链接:点击打开链接),输入注册服务号的账户和密码,如果没有则可按照网上教程申请个公众号2、开发者模式开启 点击开发中的基本配置一栏,可以看到服务器配置,如果当前是停用...
  • 微信公众号服务器配置关注回调

    千次阅读 2019-01-03 16:38:14
    1. 在微信公众号中,开发 --&gt; 基本配置 2. post的服务器地址 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.HttpMethod.ToLower(...
  • SpringBoot微信公众号服务器配置案例

    千次阅读 2019-05-09 10:51:18
    进行微信公众号开发,进行服务器配置是必不可少的,通过配置,公众号粉丝与公众号交互的消息将发送至开发者服务器,开发者对消息进行处理,例如:配置后,用户关注公众号或取关时,消息将发送至开发者配置的URL上,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,625
精华内容 29,050
关键字:

微信公众号服务器