资讯专栏INFORMATION COLUMN

微信公众号第三方开发平台(一)

why_rookie / 1014人阅读

摘要:二接收微信调用任何接口都需要这一步也是折腾我最久的,主要推送过来的信息是加密的我们需要将信息解密,解密出将该保存后面需要用到消息加解密接入指引这个页面上可以下载对应语言解密的我选择的是,貌似有点问题,自己改了下可以用了。

最近在做一个公众号的工具,想使用公众号的权限,第一步就是授权,官方的文档说的不是很清楚,对于一个刚接触的开发者看起来是有点吃力的。

一、创建微信第三方应用


说下两个比较重要的域名设置

授权事件接收URL

微信服务器会向这个地址推送一些信息包括(ComponentVerifyTicket、用户取消应用授权...)

公众号消息与事件接收URL

用户关注公众号或发送信息对应的信息会推送到这个地址。

其他几个连接填你对应的域名就行了。

二、接收component_verify_ticket

微信调用任何接口都需要component_verify_ticket,这一步也是折腾我最久的,主要推送过来的信息是加密的我们需要将信息解密,解密出component_verify_ticket将该ticket保存后面需要用到

消息加解密接入指引
这个页面上可以下载对应语言解密的demo,我选择的是php,貌似有点问题,自己改了下可以用了。

分享下php修改后解密的代码
public function parseMess()
{
    $data = $_REQUEST;
    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    $encryptMsg = $postStr;

    $xml_tree = new DOMDocument();
    $xml_tree->loadXML($encryptMsg);

    $array_e = $xml_tree->getElementsByTagName("Encrypt");
    $encrypt = $array_e->item(0)->nodeValue;

    $msg_sign = $data["msg_signature"];
    $format = "";
    $from_xml = sprintf($format, $encrypt);

    $msg = "";
    $this->load->library("openweixin/wxBizMsgCrypt");    //改文件在php的demo包里面,加载过来就行

    $pc = new WXBizMsgCrypt($this->token, $this->key, $this->appid);

    $timeStamp = $data["timestamp"];
    $nonce = $data["nonce"];
    $errCode = $pc->decryptMsg($msg_sign, $timeStamp, $nonce, $from_xml, $msg);
    if ($errCode == 0) {
       $postObj = simplexml_load_string($msg, "SimpleXMLElement", LIBXML_NOCDATA);
       $data = (array)$postObj;
       return $data;
    } 
接收微信服务推送的消息都需要解密,该方法都可以解密。 三、获取第三方平台component_access_token (调用接口需要的基础参数)

component_access_token这个参数也需要保存,后面也会重复用到。
这个参数的有效期是2个小时,所以定时每2小时执行下面的程序来更新component_access_token

public function getToken()
{
    $ticket = $component_verify_ticket; //component_verify_ticket之前已经保存了,从数据库中获取
    $post = array(
        "component_appid" => $this->appid,        //应用详情中的AppID
        "component_appsecret" => $this->secret,   //应用详情中的AppSecret
        "component_verify_ticket" => $ticket,
    );
    $ret=send_post("https://api.weixin.qq.com/cgi-bin/component/api_component_token", $post);
    $result = json_decode($ret, True);
    $component_access_token = $result["component_access_token"];
    //保存component_access_token
    echo "success";
}
    
//发送post请求
function send_post($url, $post_data) {
    $postdata=json_encode($post_data);
    $options = array(
        "http" => array(
            "method" => "POST",
            "header" => "Content-type:application/x-www-form-urlencoded",
            "content" => $postdata,
            "timeout" => 15 * 60 // 超时时间(单位:s)
        )
    );
    $context = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    return $result;
}

获取预授权码pre_auth_code

有限时间是10分钟,所以定时执行每过10分钟来刷新一次pre_auth_code

    //刷新pre_auth_code
    public function refresh_pre()
    {
        $info = getData("system_config", array("type" => "component_access_token"), array(), 1);
        $component_access_token = $info ["value"];
        $url = "https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=".$component_access_token;
        $post = array("component_appid" => $this->appid);
        $ret=send_post($url, $post);
        $result = json_decode($ret, True);
        $pre_auth_code = $result["pre_auth_code"];
        //保存pre_auth_code
        echo "success";
    }

这是我的个人网站今日Tech 喜欢科技新闻的朋友可以收藏下。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22142.html

相关文章

  • 微信公众三方开发平台(二)

    摘要:微信公众号第三方开发平台一之前的文章是获取调用接口的一些基本参数,继续开发微信开放平台。 微信公众号第三方开发平台(一) 之前的文章是获取调用接口的一些基本参数,继续开发微信开放平台。 一、授权公众号,获取公众号的授权参数 public function tiaozhuan() { $info = getData(system_config, array...

    hearaway 评论0 收藏0
  • 微信三方登录接口开发

    摘要:相关资料博客微信第三方登录接口开发端微信扫码登录文档移动端网页微信公众平台授权登录微信开放平台登录与微信公众平台授权登录区别在哪微信登录接口几个问题微信登录的和区别百分号编码在线转换第三方登录 微信登录接口开发须知 APP登录接口 PC网站登录接口 微信移动网页登录接口(又称微信公众号授权登录) 移动端非微信自带浏览不支持微信登录 微信移动网页登录接口(又称微信公众号授权登录) ...

    ziwenxie 评论0 收藏0
  • 微信公众支付开发全过程(java版)

    摘要:一微信官方文档微信支付开发流程公众号支付首先我们到微信支付的官方文档的开发步骤部分查看一下需要的设置。配置微信公众账号支付配置支付类所有方法都在这个类里发起支付微信公众账号支付订单异步回调这就是这个所说的行代码解决微信支付。 文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、微信官方文档微信支付开发流程(公众号支付) 首先我...

    Shimmer 评论0 收藏0
  • 浅析微信支付:前篇大纲

    摘要:浅析微信支付前篇大纲本文是浅析微信支付系列文章的第一篇,主要会介绍一下为何写下这个系列以及对于微信支付的一点小经验,与君共勉。下面讲一下我是如何去学习微信支付的。 浅析微信支付:前篇大纲 本文是【浅析微信支付】系列文章的第一篇,主要会介绍一下为何写下这个系列以及对于微信支付的一点小经验,与君共勉。 以下会分几个步骤讲一下我学习微信支付的过程,也是一部辛酸史,也是希望朋友们不要再次跌进...

    mayaohua 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<