后端开发 \ PHP \ 微信API接口整理

微信API接口整理

总点击135
简介:总结的一些微信API接口,包括微信支付、微信红包、微信卡券、微信小店等。

总结的一些微信API接口,包括微信支付、微信红包、微信卡券、微信小店等。

微信入口绑定,微信事件处理,微信API全部操作包含在这些文件中。


微信支付、微信红包、微信卡券、微信小店。

[代码]index.php  

<?php

include_once 'lib.inc.php';  

$wcObj = new WeChat("YOUKUIYUAN");

$wcObj->wcValid();

 

 [代码]微信入口类 

<?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('TOKENis 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 differentenvironments

    $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-dH: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;

  }

    

}

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

<?php

  /********************************************************

   *   @author Kyler You <QQ:2444756311>

   *   @link

http://mp.weixin.qq.com/wiki/home/index.html

   *   @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,1);

        //这里设置代理,如果有的话

        //curl_setopt($ch,CURLOPT_PROXY,'10.206.30.98');

        //curl_setopt($ch,CURLOPT_PROXYPORT,8080);

        curl_setopt($ch,$url);

        curl_setopt($ch,false);

        curl_setopt($ch,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,CURLOPT_SSLKEY,getcwd().'/apiclient_key.pem');

  

        curl_setopt($ch,CURLOPT_CAINFO,getcwd().'/rootca.pem');

  

        //第二种方式,两个文件合成一个.pem文件

        //curl_setopt($ch,getcwd().'/all.pem');

  

        if( count($aHeader) >=1 ){

            curl_setopt($ch,CURLOPT_HTTPHEADER,$aHeader);

        }

  

        curl_setopt($ch,1);

        curl_setopt($ch,$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;

        }

    }

  

    /****************************************************

     * 微信获取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",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,$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),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,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:workspacehtdocsyky_testlogo.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,true);

      return $jsoninfo;

    }

      

    /*******************************************************

     *   微信卡券:JSAPI 卡券Package- 基础参数没有附带任何值 - 再生产环境中需要根据实际情况进行修改

     *******************************************************/  

    public function wxCardPackage($cardId){

      $timestamp = time();

      $api_ticket = $this->wxJsApiTicket();

      $cardId = $cardId;

      $arrays = array($api_ticket,$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;

    }

      

      

  }

 [代码]微信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/',

          imgUrl: 'http://demo.open.weixin.qq.com/jssdk/images/p2166127561.jpg',

          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/',

            imgUrl:'http://demo.open.weixin.qq.com/jssdk/images/p2166127561.jpg',

            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-SDKDemo',

        desc: '微信JS-SDK,帮助第三方为用户提供更优质的移动web服务',

        link: 'http://demo.open.weixin.qq.com/jssdk/',

        imgUrl: 'http://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRt8Qia4lv7k3M9J1SKqKCImxJCt7j9rHYicKDI45jRPBxdzdyREWnk0ia0N5TMnMfth7SdxtzMvVgXg/0'

       };

         

       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>

 [代码]创建卡券

$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);

 


意见反馈 常见问题 官方微信 返回顶部