zoukankan      html  css  js  c++  java
  • 官方微信接口(全接口)

    微信入口绑定,微信事件处理,微信API全部操作包含在这些文件中。
    微信支付、微信红包、微信卡券、微信小店。

    微信开发探讨群 330393916

    <?php
    /**
     * Description of wechat
     *
     * @author Administrator
     */
    class WeChat extends WxApi{
        public $token = "";
        //put your code here
        public function __construct($token = "") {
            parent::__construct();
            $this->token = $token;
        }
     
        public function wcCheckSignature(){
            try{
                if (empty($this->token)) {
                    throw new Exception('TOKEN is not defined!');
                }
                 
                $signature = $_GET["signature"];
                $timestamp = $_GET["timestamp"];
                $nonce = $_GET["nonce"];
                     
                $token = $this->token;
                $tmpArr = array($token, $timestamp, $nonce);
                // use SORT_STRING rule
                sort($tmpArr, SORT_STRING);
                $tmpStr = implode( $tmpArr );
                $tmpStr = sha1( $tmpStr );
     
                if( $tmpStr == $signature ){
                        return true;
                }else{
                        return false;
                }
            } 
            catch (Exception $e) {
                echo 'Message: ' .$e->getMessage();
            }
        }
         
        public function wcValid(){
            $echoStr = isset($_GET["echostr"]) && !empty($_GET["echostr"]) ? addslashes($_GET["echostr"]) : NULL;
            if(is_null($echoStr)){
                $this->wcMsg();
            }
            else{
                //valid signature , option
                if($this->wcCheckSignature()){
                    echo $echoStr;
                    exit;
                }
                else{
                    exit();
                }
            }
        }
         
        public function wcMsg(){
            //get post data, May be due to the different environments
            $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) && !empty($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : "";
            if(!empty($postStr)){
                libxml_disable_entity_loader(true);
                $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $this->zcLog(TRUE,$postObj);
                 
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
                $MsgType = $postObj->MsgType;
                 
                if($MsgType == 'event'){//执行事件相应
                    $Event = $postObj->Event;
                    switch ($Event) {
                        case 'subscribe'://关注
                            break;
                        case 'unsubscribe'://取消关注
                            break;
                        case 'SCAN'://扫描
                            break;
                        case 'LOCATION'://地址
                            break;
                        case 'CLICK'://点击时间
                            break;
                        case 'VIEW'://跳转
                            break;
                        case 'card_pass_check'://卡券审核通过
                            break;
                        case 'card_not_pass_check'://卡券审核失败
                            break;
                        case 'user_get_card'://用户领取卡券
                            break;
                        case 'user_del_card'://用户删除卡券
                            break;
                        case 'user_view_card'://用户浏览会员卡
                            break;
                        case 'user_consume_card'://用户核销卡券
                            break;
                        case 'kf_create_session'://创建会话
                            break;
                        case 'kf_close_session'://关闭会话
                            break;
                        case 'kf_switch_session'://转接会话
                            break;
                        default:
                            break;
                    }
                }
                else{
                    switch ($MsgType) {
                        case 'text'://文本格式
                            break;
                        case 'image'://图片格式
                            break;
                        case 'voice'://声音
                            break;
                        case 'video'://视频
                            break;
                        case 'shortvideo'://小视频
                            break;
                        case 'location'://上传地理位置
                            break;
                        case 'link'://链接相应
                            break;
                        default:
                            break;
                    }                
                }
                 
                ////////////////////////////////////////////////////////////////////
                $keyword = trim($postObj->Content);
                $time = time();
                $textTpl = "<xml>
                                <ToUserName><![CDATA[%s]]></ToUserName>
                                <FromUserName><![CDATA[%s]]></FromUserName>
                                <CreateTime>%s</CreateTime>
                                <MsgType><![CDATA[%s]]></MsgType>
                                <Content><![CDATA[%s]]></Content>
                                <FuncFlag>0</FuncFlag>
                            </xml>";             
                if(!empty( $keyword )){
                    $msgType = "text";
                    $contentStr = "Welcome to wechat world!";
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                    echo $resultStr;
                }
                else{
                    echo "Input something...";
                }
                ////////////////////////////////////////////////////////////////////
            }
            else{
                echo "暂时没有任何信息!";
                exit;
            }
        }
         
        //日志LOG
        public function zcLog($errcode , $errmsg){
            $this->returnAy = array();
            $this->returnAy['errcode'] = $errcode;
            $this->returnAy['errmsg'] = $errmsg;
            $this->returnAy['errtime'] = date("Y-m-d H:i:s",time());
            $logfile = fopen("logfile_".date("Ymd",time()).".txt", "a+");
            $txt = json_encode($this->returnAy)."
    ";
            fwrite($logfile, $txt);
            fclose($logfile);
            //return $this->returnAy;
        }
         
    }

    来源地址:http://www.phpxs.com/code/1009662/

  • 相关阅读:
    Mysql 表分区
    Java json串生成及转bean
    ZK 样式使用
    ZK 使用jfreeChart
    Struct2 csv文件上传读取中文内容乱码
    Mysql 学习笔记
    java 调用C#webservice
    ace 后台管理模板可取之处
    Linux常用命令大全
    将图片转成base64写进hml,无需依赖本地文件
  • 原文地址:https://www.cnblogs.com/yhdsir/p/5693641.html
Copyright © 2011-2022 走看看