微信公司号,微信企业号发送监察和控制音信

2019-09-25 20:36栏目:网络编程
TAG:

AccessToken是信用合作社号的大局独一票据,调用接口时需指引AccessToken。
AccessToken须求用CorpID和Secret来换取,分裂的Secret会回去差别的AccessToken。正常情形下AccessToken保质期为7200秒,保藏期内再也获取再次回到一样结果。access_token至大将军留512字节的积存空间。

2. 演示代码

正规意况下AccessToken有效期为7200秒,保质期内再次获取重回同样结果。所以创设代码时,要存款和储蓄保藏期内的AccessToken。

C#代码显示为例:

/// <summary>
/// 微信企业号操作
/// </summary>
public class WXQYHHelper
{
    private WXQYHHelper() { }

    static string CORPID;
    static string SECRET;

    /// <summary>
    /// .Ctor
    /// </summary>
    static WXQYHHelper()
    {
        CORPID = ConfigurationManager.AppSettings["CorpID"];
        SECRET = ConfigurationManager.AppSettings["Secret"];
    }

    /// <summary>
    /// ACCESS_TOKEN最后一次更新时间
    /// </summary>
    static DateTime _lastGetTimeOfAccessToken = DateTime.Now.AddSeconds(-7201);

    /// <summary>
    /// 存储微信访问凭证
    /// </summary>
    static string _AccessToken;

    /// <summary>
    /// 获取微信访问凭证
    /// </summary>
    public static string GetAccessToken()
    {
        try
        {
            if (_lastGetTimeOfAccessToken < DateTime.Now)
            {

                string url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}", CORPID, SECRET);
                string responseText = HttpHelper.Instance.get(url); // 封装的get请求
                /*
                    API:http://qydev.weixin.qq.com/wiki/index.php?title=%E4%B8%BB%E5%8A%A8%E8%B0%83%E7%94%A8#.E8.8E.B7.E5.8F.96AccessToken
                    正确的Json返回示例:
                    {
                       "access_token": "accesstoken000001",
                       "expires_in": 7200
                    }
                    错误的Json返回示例:
                    {
                       "errcode": 43003,
                       "errmsg": "require https"
                    }
                */
                var rsEntity = new { access_token = "", expires_in = 0, errcode = 0, errmsg = "" };
                dynamic en = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType<object>(responseText, rsEntity); // Newtonsoft.Json提供的匿名类反序列化
                _lastGetTimeOfAccessToken = DateTime.Now.AddSeconds((double)en.expires_in - 1);
                _AccessToken = en.access_token;
            }
            return _AccessToken;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
}

 

End

活动端支付小说导航

美食指南加载中...

1 获取AccessToken2 发送消息到对应的项目部门组

目录

1. AccessToken介绍

2. 示范代码

 

一 获取AccessToken

1.1 什么是AccessToken

AccessToken即访谈凭证,业务服务器每趟主动调用公司号接口时须要带上AccessToken参数。

:主动调用是指职业服务器调用集团号接口的操作进程,如通信录管理、应用管理。

文档:http://qydev.weixin.qq.com/wiki/index.php?title=主动调用

 

1 定时任务检测异常消息2 将消息存入redis队列3 定时处理队列异常消息4 发送到微信企业号对应的部门组

1. AccessToken介绍

事实上进度挺简单, 轻巧代码如下:

1.2 获取AccessToken

AccessToken要求用CorpID和Secret来换取,差别的Secret会回来区别的AccessToken。

恳请地址

参数表明

参数  说明
CorpID  企业Id
CorpSecret  权限管理组的凭证密钥

 

回顾的来讲,只须求三个步骤就能够:

1.3 获取CorpID和Secret

先是得成立多少个权力管理组手艺获得到Secret。

创造步骤:微信集团号决定台 → 设置 → 权限处理组 → 新建筑管理理组

图片 1

注意事项: 这里有个【应用权限】的装置,在末端实行OAuth2.0认证时跳转的域名必需跟富含应用的【可信赖域名】一致。

 

<?php/** * 微信公众号信息处理 */class WeixinMessage {        //corpid    public $corpid = 'xxxxxx';    //sercret    public $corpsecret = 'xxxxx';        //微信发消息api    public $weixinSendApi = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=';        /**     * 请求微信Api,获取AccessToken     */    public function getAccessToken()    {        error_reporting;        //临时存放 并不安全        $filePath = ROOT.'cache/weixinToken.txt';        $tokenInfo = array();        if(is_file($filePath)){            $tokenInfo = json_decode(file_get_contents($filePath),TRUE);        }        if(!isset($tokenInfo['access_token']) || time()>$tokenInfo['expires_in']){            //更新access_token            $getAccessTokenApi = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={$this->corpid}&corpsecret={$this->corpsecret}";                        $jsonString = $this->curlGet($getAccessTokenApi);            $jsonInfo = json_decode($jsonString,true);            if(isset($jsonInfo['access_token'])) {                $jsonInfo['expires_in'] = time() + 7100;                file_put_contents($filePath, json_encode($jsonInfo));            }                        $tokenInfo = $jsonInfo;                     }                if(isset($tokenInfo['access_token']) && $tokenInfo['expires_in']>time{            return $tokenInfo['access_token'];        } else {            return FALSE;        }    }        /**     * 发信息接口     *           * @author wanghan     * @param $content 发送内容     * @param $touser 接收的用户 @all全部 多个用 | 隔开     * @param $toparty 接收的群组 @all全部 多个用 | 隔开     * @param $totag 标签组 @all全部 多个用 | 隔开     * @param $agentid 应用id     * @param $msgtype 信息类型 text=简单文本     */    public function send($content,$touser='@all',$toparty='',$totag='',$agentid=8,$msgtype='text')    {        $api = $this->weixinSendApi.$this->getAccessToken();        $postData = array(            'touser' => $touser,            'toparty' => $toparty,            'totag' => $totag,            'msgtype' => $msgtype,            'agentid' => $agentid,            'text' => array(                'content' => urlencode            )        );                $postString = urldecode(json_encode($postData));        $ret = $this->curlPost($api,$postString);        $retArr = json_decode($ret,TRUE);        if(isset($retArr['errcode']) && $retArr['errcode'] == 0) {            return true;        } else {            return false;        }    }        /**     * Curl Post数据     * @param string $url 接收数据的api     * @param string $vars 提交的数据     * @param int $second 要求程序必须在$second秒内完成,负责到$second秒后放到后台执行     * @return string or boolean 成功且对方有返回值则返回     */    function curlPost($url, $vars, $second=30)    {        $ch = curl_init();        curl_setopt($ch,CURLOPT_TIMEOUT,$second);        curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);        curl_setopt($ch,CURLOPT_URL,$url);        curl_setopt($ch,CURLOPT_POST, 1);        curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE);//        curl_setopt($ch, CURLOPT_HTTPHEADER, array(  //            'Content-Type: application/json; charset=utf-8',  //            'Content-Length: ' . strlen  //        );         $data = curl_exec;        curl_close;        if            return $data;        return false;    }        /**     * CURL get方式提交数据     * 通过curl的get方式提交获取api数据     * @param string $url api地址     * @param int $second 超时时间,单位为秒     * @param string $log_path 日志存放路径,如果没有就不保存日志,还有存放路径要有读写权限     * @return true or false     */    function curlGet($url,$second=30,$log_path='', $host='', $port='')    {        $ch = curl_init();        curl_setopt($ch,CURLOPT_TIMEOUT,$second);        curl_setopt($ch, CURLOPT_URL,$url);        curl_setopt($ch, CURLOPT_HEADER, 0);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE);        if(!empty{            curl_setopt($ch,CURLOPT_HTTPHEADER,$host);        }        if(!empty{            curl_setopt($ch,CURLOPT_PORT,$port);        }        $data = curl_exec;        $return_ch = curl_errno;        curl_close;        if($return_ch!=0)        {            if(!empty($log_path))                file_put_contents($log_path,curl_error."nrnr",FILE_APPEND);            return false;        }        else        {            return $data;        }    }}

厂家能够主动发新闻给成员

二 发送音讯

Https请求方式: GEThttps://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect

corpid  企业Id
corpsecret 管理组的凭证密钥

此地大家来看一下微信发送进度,其余不做商量。

商铺那边有做监察和控制卓殊并将新闻发送到公司群众号的效果。大约如下:

Https请求方式: POSThttps://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN
消息型应用支持文本、图片、语音、视频、文件、图文等消息类型。主页型应用只支持文本消息类型,且文本长度不超过20个字。

伸手表明

参数

乞求说明

必须 说明
touser 成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送
toparty 部门ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数
totag 标签ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数
msgtype 消息类型,此时固定为:text (支持消息型应用跟主页型应用)
agentid 企业应用的id,整型。可在应用的设置页面查看
content 消息内容,最长不超过2048个字节,注意:主页型应用推送的文本消息在微信端最多只显示20个字
safe 表示是否是保密消息,0表示否,1表示是,默认0

版权声明:本文由澳门新葡亰平台游戏发布于网络编程,转载请注明出处:微信公司号,微信企业号发送监察和控制音信