zoukankan      html  css  js  c++  java
  • 微信开放平台 获取 component_verify_ticket

    <?php
    /**
     * @author zhaozhuobin
     * @date:2016-06=07
     *
     */
    
    namespace commoncomponents;use DOMDocument;
    use WXBizMsgCrypt;
    use yiiaseAction;
    use Yii;
    
    /**
     *  获取微信 component_verify_ticket
     *
     * <xml>
     *   <AppId> AppId</AppId>
     *   <CreateTime> 1413192605 </CreateTime>
     *   <InfoType> component_verify_ticket </InfoType>
     *   <ComponentVerifyTicket> 内容 </ComponentVerifyTicket>
     * </xml>
     *
     * Class WechatAction
     * @package commoncomponents
     */
    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;
            }
        }
    }
  • 相关阅读:
    电商平台开发笔记5.nuxt项目中深度选择器解决el-input高度设置无效
    电商平台开发笔记4.css选择器之~波浪号使用
    电商平台开发笔记3.nuxt全局css的引入
    电商平台开发笔记2.Nuxt增加对less支持,解决This relative module was not found报错
    电商平台开发笔记1.Nuxt项目创建+Eslint代码保存自动格式化
    vue-cli 4.x 发布前的一些优化
    VueCli 4.x npm run build后主页空白的原因及解决方案
    VSCode 保存时自动ESlint格式化
    git 常用操作笔记
    VSCode下手动构建webpack项目
  • 原文地址:https://www.cnblogs.com/boystar/p/5595420.html
Copyright © 2011-2022 走看看