本文给大家介绍的是个人总结的一些微信API接口,包括微信支付、微信红包、微信卡券、微信小店等,十分的全面,有需要的小伙伴可以参考下。

1. [代码]index.php

<?php
include_once \'lib.inc.php\';
  
$wcObj = new WeChat("YOUKUIYUAN");
$wcObj->wcValid();

2. [代码]微信入口类    

<?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 \'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 = "<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)."\n";
    fwrite($logfile, $txt);
    fclose($logfile);
    //return $this->returnAy;
  }
    
}
3. [代码]微信操作类 – 更新了自定义菜单部分
<?php
  /********************************************************
   *   @author Kyler You <QQ:2444756311>
   *   @version 2.0.1
   *   @uses $wxApi = new WxApi();
   *   @package 微信API接口 陆续会继续进行更新
   ********************************************************/
  
  class WxApi {
    //const appId     = "";
    //const appSecret   = "";
    const appId     = "";
    const appSecret   = "";
    //const mchid     = ""; //商户号
    //const privatekey  = ""; //私钥
    public $parameters = array();
  
    public function __construct(){
  
    }
  
    /****************************************************
     * 微信提交API方法,返回微信指定JSON
     ****************************************************/
  
    public function wxHttpsRequest($url,$data = null){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }
  
    /****************************************************
     * 微信带证书提交数据 - 微信红包使用
     ****************************************************/
  
    public function wxHttpsRequestPem($url, $vars, $second=30,$aHeader=array()){
        $ch = curl_init();
        //超时时间
        curl_setopt($ch,CURLOPT_TIMEOUT,$second);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
        //这里设置代理,如果有的话
        //curl_setopt($ch,CURLOPT_PROXY, \'10.206.30.98\');
        //curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
        curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
  
        //以下两种方式需选择一种
  
        //第一种方法,cert 与 key 分别属于两个.pem文件
        //默认格式为PEM,可以注释
        curl_setopt($ch,CURLOPT_SSLCERTTYPE,\'PEM\');
        curl_setopt($ch,CURLOPT_SSLCERT,getcwd().\'/apiclient_cert.pem\');
        //默认格式为PEM,可以注释
        curl_setopt($ch,CURLOPT_SSLKEYTYPE,\'PEM\');
        curl_setopt($ch,CURLOPT_SSLKEY,getcwd().\'/apiclient_key.pem\');
  
        curl_setopt($ch,CURLOPT_CAINFO,\'PEM\');
        curl_setopt($ch,CURLOPT_CAINFO,getcwd().\'/rootca.pem\');
  
        //第二种方式,两个文件合成一个.pem文件
        //curl_setopt($ch,CURLOPT_SSLCERT,getcwd().\'/all.pem\');
  
        if( count($aHeader) >= 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:$error\n";
            curl_close($ch);
            return false;
        }
    }
  
    /****************************************************
     * 微信获取AccessToken 返回指定微信公众号的at信息
     ****************************************************/
  
    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;
    }
  
    /****************************************************
     * 微信获取AccessToken 返回指定微信公众号的at信息
     ****************************************************/
  
    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;
    }
      
    /****************************************************
     * 微信通过OPENID获取用户信息,返回数组
     ****************************************************/
  
    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;
    }   
  
    /****************************************************
     * 微信生成二维码ticket
     ****************************************************/
  
    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;
    }
      
    /****************************************************
     * 微信通过ticket生成二维码
     ****************************************************/
    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;
    }
  
    /****************************************************
     * 微信设置OAUTH跳转URL,返回字符串信息 - SCOPE = snsapi_base //验证时不返回确认页面,只能获取OPENID
     ****************************************************/
  
    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;
    }
  
    /****************************************************
     * 微信设置OAUTH跳转URL,返回字符串信息 - SCOPE = snsapi_userinfo //获取用户完整信息
     ****************************************************/
  
    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;
    }
  
    /****************************************************
     * 微信OAUTH跳转指定URL
     ****************************************************/
  
    public function wxHeader($url){
        header("location:".$url);
    }
  
    /****************************************************
     * 微信通过OAUTH返回页面中获取AT信息
     ****************************************************/
  
    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;     
    }
  
    /****************************************************
     * 微信通过OAUTH的Access_Token的信息获取当前用户信息 // 只执行在snsapi_userinfo模式运行
     ****************************************************/
  
    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;
    }
          
    /*****************************************************
     *   生成随机字符串 - 最长为32位字符串
     *****************************************************/
    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;
      }
    }
      
    /*******************************************************
     *   微信商户订单号 - 最长28位字符串
     *******************************************************/
      
    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;
    }
      
    /*******************************************************
     *   微信格式化数组变成参数格式 - 支持url加密
     *******************************************************/  
      
    public function wxSetParam($parameters){
      if(is_array($parameters) && !empty($parameters)){
        $this->parameters = $parameters;
        return $this->parameters;
      }
      else{
        return array();
      }
    }
      
    /*******************************************************
     *   微信格式化数组变成参数格式 - 支持url加密
     *******************************************************/
      
  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;//返回字符串
  }
      
    /*******************************************************
     *   微信MD5签名生成器 - 需要将参数数组转化成为字符串[wxFormatArray方法]
     *******************************************************/
    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());
      }
    }
      
    /*******************************************************
     *   微信Sha1签名生成器 - 需要将参数数组转化成为字符串[wxFormatArray方法]
     *******************************************************/
    public function wxSha1Sign($content){
      try {
        if (is_null($content)) {
          throw new Exception("签名内容不能为空");
        }
        //$signStr = $content;
        return sha1($content);
      }
      catch (Exception $e)
      {
        die($e->getMessage());
      }
    }
      
    /*******************************************************
     *   微信jsApi整合方法 - 通过调用此方法获得jsapi数据
     *******************************************************/   
    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;
    }
      
      
    /*******************************************************
     *   将数组解析XML - 微信红包接口
     *******************************************************/
    public function wxArrayToXml($parameters = NULL){
      if(is_null($parameters)){
        $parameters = $this->parameters;
      }
        
      if(!is_array($parameters) || empty($parameters)){
        die("参数不为数组无法解析");
      }
        
      $xml = "<xml>";
      foreach ($arr as $key=>$val)
      {
        if (is_numeric($val))
        {
          $xml.="<".$key.">".$val."</".$key.">";
        }
        else
          $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
      }
      $xml.="</xml>";
      return $xml;
    }
      
    /*******************************************************
     *   微信卡券:上传LOGO - 需要改写动态功能
     *******************************************************/
    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;
    }
      
    /*******************************************************
     *   微信卡券:获取颜色
     *******************************************************/
    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;
    }
      
    /*******************************************************
     *   微信卡券:JSAPI 卡券Package - 基础参数没有附带任何值 - 再生产环境中需要根据实际情况进行修改
     *******************************************************/  
    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 
<?php
  require_once \'lib.inc.php\';
  $wx = new WxApi();
  //通过网页获取openid
  //if(!isset($_GET[\'code\'])){
  //  header("location:https://open.weixin.qq.com/connect/oauth2/authorize?appid=".WxApi::appId."&redirect_uri=http://".$_SERVER[\'SERVER_NAME\'].$_SERVER[\'PHP_SELF\']."&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
  //}
  //else{
  //  $CODE = $_GET[\'code\'];
  //  $Info = $wx->wxOauthAccessToken($CODE);
    //print_r($Info);
  //  $openId = $Info[\'openid\']; 
  //}
  ////////////////////////////////////////////
  
  $signPackage = $wx->wxJsapiPackage();
  //print_r($signPackage);
  $kqInfo = $wx->wxCardPackage("");
  $listInfo = $wx->wxCardListPackage();
?>
<html>
  <head>
    <title>JSAPI接口测试</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
      
    <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
    <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
  </head>
  <body>
    <div>
      <input type="button" id="batchAddCard" name="batchAddCard" value="添加卡券" /><br />
      <input type="button" id="openCard" name="openCard" value="拉起卡券库" /><br />
      <input type="button" id="ShareTimeLine" name="ShareTimeLine" value="分享朋友圈" /><br />
      <div id="showInfo">
        
      </div>
    </div>
      
    <script>
      wx.config({
       debug: false,
       appId: \'<?php echo $signPackage["appId"];?>\',
       timestamp: <?php echo $signPackage["timestamp"];?>,
       nonceStr: \'<?php echo $signPackage["nonceStr"];?>\',
       signature: \'<?php echo $signPackage["signature"];?>\',
       jsApiList: [
        // 所有要调用的 API 都要加到这个列表中
        \'onMenuShareTimeline\',
         \'onMenuShareAppMessage\',
         \'addCard\',
         \'openCard\'
       ]
      });
        
      wx.ready(function () {
        // 在这里调用 API
        wx.onMenuShareAppMessage({
          title: \'互联网之子\',
          desc: \'在长大的过程中,我才慢慢发现,我身边的所有事,别人跟我说的所有事,那些所谓本来如此,注定如此的事,它们其实没有非得如此,事情是可以改变的。更重要的是,有些事既然错了,那就该做出改变。\',
          link: \'http://movie.douban.com/subject/25785114/\',
          trigger: function (res) {
            // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
            alert(\'用户点击发送给朋友\');
          },
          success: function (res) {
            alert(\'已分享\');
          },
          cancel: function (res) {
            alert(\'已取消\');
          },
          fail: function (res) {
            alert(JSON.stringify(res));
          }
        });
          
      document.querySelector(\'#ShareTimeLine\').onclick = function () {
        wx.onMenuShareTimeline({
            title: \'互联网之子\',
            link: \'http://movie.douban.com/subject/25785114/\',
            trigger: function (res) {
                // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
                alert(\'用户点击分享到朋友圈\');
            },
            success: function (res) {
                alert(\'已分享\');
            },
            cancel: function (res) {
                alert(\'已取消\');
            },
            fail: function (res) {
                alert(JSON.stringify(res));
            }
        });
      }; 
        
       document.querySelector(\'#batchAddCard\').onclick = function () {
        wx.addCard({
         cardList: [
          {
           cardId: \'p7G0Cj_1HGF2nijO4sTlVTzawFhI\',
           cardExt: \'{"timestamp":"<?php echo $kqInfo[\'cardExt\'][\'timestamp\'];?>", "signature":"<?php echo $kqInfo[\'cardExt\'][\'signature\'];?>"}\'
          }
         ],
         success: function (res) {
          var cardList = res.cardList; // 添加的卡券列表信息
          alert(cardList);
         },
        cancel: function (res) {
            alert(\'已取消\');
        },
        fail: function (res) {
            alert(JSON.stringify(res));
        }
        });
       };
         
       var shareData = {
        title: \'微信JS-SDK Demo\',
        desc: \'微信JS-SDK,帮助第三方为用户提供更优质的移动web服务\',
        link: \'http://demo.open.weixin.qq.com/jssdk/\',
       };
         
       wx.onMenuShareAppMessage(shareData);
         
       wx.onMenuShareTimeline(shareData);
      });
  
      var readyFunc = function onBridgeReady() {
        // 绑定关注事件
        document.querySelector(\'#openCard\').addEventListener(\'click\',
          function(e) {
            WeixinJSBridge.invoke(\'chooseCard\', {
              "app_id": "<?php echo $listInfo[\'app_id\']?>",
              "location_id ": \'\',
              "sign_type": "SHA1",
              "card_sign": "<?php echo $listInfo[\'card_sign\']?>",
              "card_id": "<?php echo $listInfo[\'card_id\']?>",
              "card_type": "<?php echo $listInfo[\'card_type\']?>",
              "time_stamp": "<?php echo $listInfo[\'time_stamp\']?>",
              "nonce_str": "<?php echo $listInfo[\'nonce_str\']?>"
            },
          function(res) {
            alert(res.err_msg + res.choose_card_info);
            $("#showInfo").empty().append(res.err_msg + res.choose_card_info);
          });
        });
      }
        
      if (typeof WeixinJSBridge === "undefined") {
        document.addEventListener(\'WeixinJSBridgeReady\', readyFunc, false);
      } else {
        readyFunc();
      }
  
     </script>
  </body>
</html>
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);
 
以上所述就是本文的全部内容,希望大家能够喜欢。
在此感谢大家的一路相陪,希望大家在新的一年里身体健康,万事如意,心想事成,财源滚滚~~~

版权声明:本文为HanJie0824原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/HanJie0824/p/6260218.html