<?php
/**
* @author zhaozhuobin
* @date:2016-06=07
*
*/ namespace common\components;use DOMDocument;
use WXBizMsgCrypt;
use yii\base\Action;
use Yii; /**
* 获取微信 component_verify_ticket
*
* <xml>
* <AppId> AppId</AppId>
* <CreateTime> 1413192605 </CreateTime>
* <InfoType> component_verify_ticket </InfoType>
* <ComponentVerifyTicket> 内容 </ComponentVerifyTicket>
* </xml>
*
* Class WechatAction
* @package common\components
*/
class WechatAction extends Action
{ public $openWechat; /**
* @return string|void
*/
public function run()
{
$this->openWechat = Yii::$app->openWechat;
$param = $this->getParam();
$encryptMsg = file_get_contents('php://input');$result = $this->getVerify_Ticket($param['timestamp'],$param['nonce'],$param['msg_signature'],$encryptMsg);
if($result){
return "success";
}
} /**
* 获取参数
* @return array|mixed
*/
public function getParam()
{
$param = Yii::$app->request->get();
$param['timestamp'] = empty($param['timestamp']) ? "" : trim($param['timestamp']);
$param['nonce'] = empty($param['nonce']) ? "" : trim($param['nonce']);
$param['msg_signature'] = empty($param['msg_signature']) ? "" : trim($param['msg_signature']);
$param['signature'] = empty($param['signature']) ? "" : trim($param['signature']);
return $param;
} /**
* 获取 component_verify_ticket
* @param $timeStamp
* @param $nonce
* @param $msg_sign
* @param $encryptMsg
* @return bool
*/
public function getVerify_Ticket($timeStamp, $nonce, $msg_sign, $encryptMsg)
{
@include_once (dirname(__DIR__).'/messageCrypt/wxBizMsgCrypt.php');
$pc = new WXBizMsgCrypt($this->openWechat->token, $this->openWechat->encodingAesKey, $this->openWechat->appId); $xml_tree = new DOMDocument();
$xml_tree->loadXML($encryptMsg);
$array_e = $xml_tree->getElementsByTagName('Encrypt');
$encrypt = $array_e->item(0)->nodeValue; $format = "<xml><ToUserName><![CDATA[toUser]]></ToUserName><Encrypt><![CDATA[%s]]></Encrypt></xml>"; $from_xml = sprintf($format, $encrypt); $msg = ''; $errCode = $pc->decryptMsg($msg_sign, $timeStamp, $nonce, $from_xml, $msg); if ($errCode == 0) {
$xml = new DOMDocument();
$xml->loadXML($msg);
$array_e = $xml->getElementsByTagName('ComponentVerifyTicket');
$component_verify_ticket = $array_e->item(0)->nodeValue; //=======这里把 component_verify_ticket 保存到数据库========// return true;
}else{
//=======这里记录错误码========//
return false;
}
}
}

微信开放平台 获取 component_verify_ticket的更多相关文章

  1. 微信开放平台获取component_verify_ticket

    官方文档说明: 在公众号第三方平台创建审核通过后,微信服务器会向其“授权事件接收URL”每隔10分钟定时推送component_verify_ticket.第三方平台方在收到ticket推送后也需进行 ...

  2. 微信第三方平台获取component_verify_ticket

    官方文档说明: 在公众号第三方平台创建审核通过后,微信服务器会向其"授权事件接收URL"每隔10分钟定时推送component_verify_ticket.第三方平台方在收到tic ...

  3. 微信开放平台创建android应用时怎么获取应用签名

    之前微信开放平台中申请创建应用,没有整理,过了好久,又重新百度,今天索性整理了,以供童鞋们备用. 1.微信开发平台注册申请成开发者账号,就此略过 2.在管理中心选择创建移动应用.按照严格要求填写.上传 ...

  4. 微信 公众号平台 与 开放平台 获取用户信息 scope snsapi_login

    微信公众号(公众平台) 和 微信开放平台 是两码事.公众号(公众平台)获取的scope只包括两种:snsapi_base 和snsapi_userinfo,前者是静默获取,用户无感知:后者是需要用户确 ...

  5. 【已解决】Android微信开放平台,申请移动应用的 应用签名 如何获取

    在微信开放平台,申请移动应用的时候: https://open.weixin.qq.com/cgi-bin/appcreate?t=manage/createMobile&type=app&a ...

  6. Android微信开放平台,申请移动应用的 应用签名 如何获取

    在微信开放平台,申请移动应用的时候: https://open.weixin.qq.com/cgi-bin/appcreate?t=manage/createMobile&type=app&a ...

  7. android微信开放平台,申请移动应用的应用签名怎样获取

    在微信开放平台,申请移动应用的时候: https://open.weixin.qq.com/cgi-bin/appcreate? t=manage/createMobile&type=app& ...

  8. 微信开放平台apk的应用签名的获取

    https://open.weixin.qq.com 微信里面的应用签名相关的签名信息 1.首先生成JKS文件,放入的是包名,利用的是android studio工具生成的. 步骤:随便建立一个安卓项 ...

  9. 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo

    原文:微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建 ...

随机推荐

  1. adb server is out of date. killing... ADB server didn't ACK * failed to star

    The connection to adb is down, and a severe error has occured. [-- :: - HelloOPone] You must restart ...

  2. 那些年我们写过的三重循环----CodeForces 295B Greg and Graph 重温Floyd算法

    Greg and Graph time limit per test 3 seconds memory limit per test 256 megabytes input standard inpu ...

  3. 315M无线发射模块天线的长度计算

    波长=光速/频率=300/315=0.952米 1/4波长须要的天线长度=波长*1/4=0.952/4=0.238米 考虑导线传播高频信号的缩短率在0.98左右,因此天线长度=0.238*0.98=0 ...

  4. [Jobdu] 题目1511:从尾到头打印链表——单链表的倒置输出

    // ListNode typedef struct LNode { int key; struct LNode *next; }LNode;   分析:这是一道很有意思的面试题,此题以及此题的变体经 ...

  5. nodebeginer

    最近对node开始感兴趣,知乎上朴灵推荐入门书籍,goddy翻译的node beginner. 貌似大家对深入浅出node.js评价都不错,以后可以考虑入手看看. 一口气看完了node beginne ...

  6. PHP的环境搭建

    下载开发环境 wampserver 下载sublime text 2 sublime使用技巧 1:安装漂亮的编程字体http://pan.baidu.com/s/1xMex9 下载"程序编写 ...

  7. 关于LD_DEBUG (转载)

    引用 LD_DEBUGThe dynamic library loader used in linux (part of glibc) has some neat tricks. One of the ...

  8. Apache RewriteCond RewriteRule 入门和Laravel去掉index.php

        Ci删除index.php办法: 创建.htaccess 文件放到网站的根目录下,文件中的内容如下: RewriteEngine onRewriteCond %{REQUEST_FILENAM ...

  9. Elasticsearch 单模式下API的增删改查操作

    <pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...

  10. [Windows编程] 使用AttachThreadInput 来捕捉其它窗口的键盘输入

    在一些情况下(比如屏幕软键盘或者输入法程序),自己的窗口没有输入焦点但是想要当前焦点窗口的键盘输入消息,可以使用Win32 API函数AttachThreadInput()来解决这个问题.Attach ...