栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

微信API接口大全

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

微信API接口大全

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

1. [代码]index.php    

wcValid();

2. [代码]微信入口类    

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 'merchant_order'://微小店用户下单付款
     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 = "


%s


0
     ";
      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)."n";
    fwrite($logfile, $txt);
    fclose($logfile);
    //return $this->returnAy;
  }
   
}

3. [代码]微信操作类 - 更新了自定义菜单部分    

= 1 ){
     curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
 }
 
 curl_setopt($ch,CURLOPT_POST, 1);
 curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
 $data = curl_exec($ch);
 if($data){
     curl_close($ch);
     return $data;
 }
 else { 
     $error = curl_errno($ch);
     echo "call faild, errorCode:$errorn"; 
     curl_close($ch);
     return false;
 }
    }
 
    
 
    public function wxAccessToken($appId = NULL , $appSecret = NULL){
 $appId     = is_null($appId) ? self::appId : $appId;
 $appSecret   = is_null($appSecret) ? self::appSecret : $appSecret;
  
 $data = json_decode(file_get_contents("access_token.json"));
 if ($data->expire_time < time()) {
   //echo $appId,$appSecret;
   $url      = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appId."&secret=".$appSecret;
   $result     = $this->wxHttpsRequest($url);
   //print_r($result);
   $jsoninfo    = json_decode($result, true);
   $access_token  = $jsoninfo["access_token"];
   if ($access_token) {
     $data->expire_time = time() + 7000;
     $data->access_token = $access_token;
     $fp = fopen("access_token.json", "w");
     fwrite($fp, json_encode($data));
     fclose($fp);
   }
 }
 else {
   $access_token = $data->access_token;
 }
 return $access_token;
    }
 
    
 
    public function wxJsApiTicket($appId = NULL , $appSecret = NULL){
 $appId     = is_null($appId) ? self::appId : $appId;
 $appSecret   = is_null($appSecret) ? self::appSecret : $appSecret;
  
 $data = json_decode(file_get_contents("jsapi_ticket.json"));
 if ($data->expire_time < time()) { 
   $url    = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=".$this->wxAccessToken();
   $result     = $this->wxHttpsRequest($url);
   $jsoninfo    = json_decode($result, true);
   $ticket = $jsoninfo['ticket'];
   if ($ticket) {
     $data->expire_time = time() + 7000;
     $data->jsapi_ticket = $ticket;
     $fp = fopen("jsapi_ticket.json", "w");
     fwrite($fp, json_encode($data));
     fclose($fp);
   }
 }
 else {
   $ticket = $data->jsapi_ticket;
 }
 return $ticket;
    }
     
    
 
    public function wxGetUser($openId){
      $wxAccessToken = $this->wxAccessToken();
      $url      = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$wxAccessToken."&openid=".$openId."&lang=zh_CN";
      $result     = $this->wxHttpsRequest($url);
      $jsoninfo    = json_decode($result, true);
      return $jsoninfo;
    }    
 
    
 
    public function wxQrCodeTicket($jsonData){
      $wxAccessToken = $this->wxAccessToken();
      $url    = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$wxAccessToken;
      $result     = $this->wxHttpsRequest($url,$jsonData);
      return $result;
    }
     
    
    public function wxQrCode($ticket){
      $url  = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" . urlencode($ticket);
      return $url;
    }
 
    
 
    public function wxSetSend($touser, $template_id, $url, $data, $topcolor = '#7B68EE'){
 $template = array(
     'touser' => $touser,
     'template_id' => $template_id,
     'url' => $url,
     'topcolor' => $topcolor,
     'data' => $data
 );
 $jsonData = json_encode($template);
 $result = $this->wxSendTemplate($jsonData);
 return $result;
    }
 
    
 
    public function wxOauthbase($redirectUrl,$state = "",$appId = NULL){
 $appId     = is_null($appId) ? self::appId : $appId;
 $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appId."&redirect_uri=".$redirectUrl."&response_type=code&scope=snsapi_base&state=".$state."#wechat_redirect";
 return $url;
    }
 
    
 
    public function wxOauthUserinfo($redirectUrl,$state = "",$appId = NULL){
 $appId     = is_null($appId) ? self::appId : $appId;
 $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appId."&redirect_uri=".$redirectUrl."&response_type=code&scope=snsapi_userinfo&state=".$state."#wechat_redirect";
 return $url;
    }
 
    
 
    public function wxHeader($url){
 header("location:".$url);
    }
 
    
 
    public function wxOauthAccessToken($code,$appId = NULL , $appSecret = NULL){
 $appId     = is_null($appId) ? self::appId : $appId;
 $appSecret   = is_null($appSecret) ? self::appSecret : $appSecret;
 $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appId."&secret=".$appSecret."&code=".$code."&grant_type=authorization_code";
 $result     = $this->wxHttpsRequest($url);
 //print_r($result);
 $jsoninfo    = json_decode($result, true);
 //$access_token   = $jsoninfo["access_token"];
 return $jsoninfo;      
    }
 
    
 
    public function wxOauthUser($OauthAT,$openId){
 $url      = "https://api.weixin.qq.com/sns/userinfo?access_token=".$OauthAT."&openid=".$openId."&lang=zh_CN";
 $result     = $this->wxHttpsRequest($url);
 $jsoninfo    = json_decode($result, true);
 return $jsoninfo;      
    }
 
    
 
    public function wxMenuCreate($jsonData){
      $wxAccessToken = $this->wxAccessToken();
      $url      = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" . $wxAccessToken;
      $result     = $this->wxHttpsRequest($url,$jsonData);
      $jsoninfo    = json_decode($result, true);
      return $jsoninfo;      
    }
 
    
 
    public function wxMenuGet(){
      $wxAccessToken = $this->wxAccessToken();
      $url      = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=" . $wxAccessToken;
      $result     = $this->wxHttpsRequest($url);
      $jsoninfo    = json_decode($result, true);
      return $jsoninfo;
    }
 
    
 
    public function wxMenuDelete(){
      $wxAccessToken = $this->wxAccessToken();
      $url      = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" . $wxAccessToken;
      $result     = $this->wxHttpsRequest($url);
      $jsoninfo    = json_decode($result, true);
      return $jsoninfo;
    }
 
    
 
    public function wxMenuGetInfo(){
      $wxAccessToken = $this->wxAccessToken();
      $url      = "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=" . $wxAccessToken;
      $result     = $this->wxHttpsRequest($url);
      $jsoninfo    = json_decode($result, true);
      return $jsoninfo;
    }
  
    
    public function wxNonceStr($length = 16, $type = FALSE) {
      $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
      $str = "";
      for ($i = 0; $i < $length; $i++) {
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
      }
      if($type == TRUE){
 return strtoupper(md5(time() . $str));
      }
      else {
 return $str;
      }
    }
     
    
     
    public function wxMchBillno($mchid = NULL) {
      if(is_null($mchid)){
 if(self::mchid == "" || is_null(self::mchid)){
   $mchid = time();
 }
 else{
   $mchid = self::mchid;
 }
      }
      else{
 $mchid = substr(addslashes($mchid),0,10);
      }
      return date("Ymd",time()).time().$mchid;
    }
     
       
     
    public function wxSetParam($parameters){
      if(is_array($parameters) && !empty($parameters)){
 $this->parameters = $parameters;
 return $this->parameters;
      }
      else{
 return array();
      }
    }
     
    
     
  public function wxFormatArray($parameters = NULL, $urlencode = FALSE){
      if(is_null($parameters)){
 $parameters = $this->parameters;
      }
      $restr = "";//初始化空
      ksort($parameters);//排序参数
      foreach ($parameters as $k => $v){//循环定制参数
 if (null != $v && "null" != $v && "sign" != $k) {
   if($urlencode){//如果参数需要增加URL加密就增加,不需要则不需要
     $v = urlencode($v);
   }
   $restr .= $k . "=" . $v . "&";//返回完整字符串
 }
      }
      if (strlen($restr) > 0) {//如果存在数据则将最后“&”删除
 $restr = substr($restr, 0, strlen($restr)-1);
      }
      return $restr;//返回字符串
  }
     
    
    public function wxMd5Sign($content, $privatekey){
    try {
 if (is_null($privatekey)) {
   throw new Exception("财付通签名key不能为空!");
 }
 if (is_null($content)) {
   throw new Exception("财付通签名内容不能为空");
 }
 $signStr = $content . "&key=" . $privatekey;
 return strtoupper(md5($signStr));
      }
      catch (Exception $e)
      {
 die($e->getMessage());
      }
    }
     
    
    public function wxSha1Sign($content){
      try {
 if (is_null($content)) {
   throw new Exception("签名内容不能为空");
 }
 //$signStr = $content;
 return sha1($content);
      }
      catch (Exception $e)
      {
 die($e->getMessage());
      }
    }
     
        
    public function wxJsapiPackage(){
      $jsapi_ticket = $this->wxJsApiTicket();

      // 注意 URL 一定要动态获取,不能 hardcode.
      $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
      $url = $protocol.$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];

      $timestamp = time();
      $nonceStr = $this->wxNonceStr();

      $signPackage = array(
"jsapi_ticket" => $jsapi_ticket,
"nonceStr" => $nonceStr,
"timestamp" => $timestamp,
"url"    => $url
      ); 

      // 这里参数的顺序要按照 key 值 ASCII 码升序排序
      $rawString = "jsapi_ticket=$jsapi_ticket&noncestr=$nonceStr×tamp=$timestamp&url=$url";

      //$rawString = $this->wxFormatArray($signPackage);
      $signature = $this->wxSha1Sign($rawString);

      $signPackage['signature'] = $signature;
      $signPackage['rawString'] = $rawString;
      $signPackage['appId'] = self::appId;

      return $signPackage;
    }
     
     
    
    public function wxArrayToXml($parameters = NULL){
      if(is_null($parameters)){
 $parameters = $this->parameters;
      }

      if(!is_array($parameters) || empty($parameters)){
 die("参数不为数组无法解析");
      }

      $xml = "";
      foreach ($arr as $key=>$val)
      {
 if (is_numeric($val))
 {
   $xml.="<".$key.">".$val.""; 
 }
 else
   $xml.="<".$key.">"; 
      }
      $xml.="";
      return $xml; 
    }
     
    
    public function wxCardUpdateImg() {
      $wxAccessToken = $this->wxAccessToken();
      //$data['access_token'] = $wxAccessToken;
      $data['buffer']   = '@D:\workspace\htdocs\yky_test\logo.jpg';
      $url      = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=".$wxAccessToken;
      $result     = $this->wxHttpsRequest($url,$data);
      $jsoninfo    = json_decode($result, true);
      return $jsoninfo;
      //array(1) { ["url"]=> string(121) "http://mmbiz.qpic.cn/mmbiz/ibuYxPHqeXePNTW4ATKyias1Cf3zTKiars9PFPzF1k5icvXD7xW0kXUAxHDzkEPd9micCMCN0dcTJfW6Tnm93MiaAfRQ/0" } 
    }
     
    
    public function wxCardColor(){
      $wxAccessToken = $this->wxAccessToken();
      $url = "https://api.weixin.qq.com/card/getcolors?access_token=".$wxAccessToken;
      $result     = $this->wxHttpsRequest($url);
      $jsoninfo    = json_decode($result, true);
      return $jsoninfo;
    }
     
    
    public function wxCardCreated($jsonData) {
      $wxAccessToken = $this->wxAccessToken();
      $url      = "https://api.weixin.qq.com/card/create?access_token=" . $wxAccessToken;
      $result     = $this->wxHttpsRequest($url,$jsonData);
      $jsoninfo    = json_decode($result, true);
      return $jsoninfo;
    }
     
       
    public function wxCardPackage($cardId){
      $timestamp = time();
      $api_ticket = $this->wxJsApiTicket();
      $cardId = $cardId;
      $arrays = array($api_ticket,$timestamp,$cardId);
      sort($arrays);
      $string = sha1(implode("",$arrays));
 
      $resultArray['card_id'] = $cardId;
      $resultArray['card_ext'] = array();
      $resultArray['card_ext']['openid'] = 'oOmn4s9MiwqHSNNvPn0dBtU23toA';
      $resultArray['card_ext']['timestamp'] = $timestamp;
      $resultArray['card_ext']['signature'] = $string;
 
      return $resultArray;
    }
     
     
  }

4. [代码]微信JSAPI    

wxOauthAccessToken($CODE);
    //print_r($Info);
  //  $openId = $Info['openid'];  
  //}
  ////////////////////////////////////////////
 
  $signPackage = $wx->wxJsapiPackage();
  //print_r($signPackage);
  $kqInfo = $wx->wxCardPackage("");
  $listInfo = $wx->wxCardListPackage();
?>

  
    JSAPI接口测试
    
    
     
    
    
  
  
    
      


5. [代码]创建卡券    

$kqinfo = array("card" => array());
$kqinfo['card']['card_type'] = 'GENERAL_COUPON';
$kqinfo['card']['general_coupon'] = array('base_info' => array(), 'default_detail' => array());
$kqinfo['card']['general_coupon']['base_info']['logo_url'] = 'URL';
$kqinfo['card']['general_coupon']['base_info']['code_type'] = 'CODE_TYPE_QRCODE';
$kqinfo['card']['general_coupon']['base_info']['brand_name'] = '';
$kqinfo['card']['general_coupon']['base_info']['title'] = '测试卡券';
$kqinfo['card']['general_coupon']['base_info']['color'] = 'Color030';
$kqinfo['card']['general_coupon']['base_info']['notice'] = '测试测试测试';
$kqinfo['card']['general_coupon']['base_info']['description'] = '这是一张优惠券';
$kqinfo['card']['general_coupon']['base_info']['date_info']['type'] = 1;
$kqinfo['card']['general_coupon']['base_info']['date_info']['begin_timestamp'] = time();
$kqinfo['card']['general_coupon']['base_info']['date_info']['end_timestamp'] = time() + 100 * 24 * 3600;
$kqinfo['card']['general_coupon']['base_info']['sku']['quantity'] = 100000;
$kqinfo['card']['general_coupon']['default_detail'] = '测试数据n测试数据n测试数据';
 
//var_dump($kqinfo);
//$kqinfo = json_encode($kqinfo);
$kqinfo = C::enJson($kqinfo);
 
//print_r( $kqinfo);
//$resultData = $wx->wxCardCreated($kqinfo);

以上所述就是本文的全部内容,希望大家能够喜欢。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/45674.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号