映月读书网 > 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 > 10.2.1 微信小店SDK >

10.2.1 微信小店SDK

在正式讲解开发内容之前,需要先将常用功能函数写入类中,以便在后面的章节中调用。以下是方倍工作室开发的用于微信小店的SDK代码。


  1 <?php
  2 
  3 /*
  4     方倍工作室
  5     CopyRight 2014 All Rights Reserved
  6 */
  7 require_once('config.php');   // 引用配置
  8 
  9 class class_weixin
 10 {
 11     var $appid = APPID;
 12     var $appsecret = APPSECRET;
 13 
 14     // 构造函数,获取Access Token
 15     public function __construct($appid = NULL, $appsecret = NULL)
 16     {
 17         if($appid && $appsecret){
 18             $this->appid = $appid;
 19             $this->appsecret = $appsecret;
 20         }
 21 
 22         $url = "https:// api.weixin.qq.com/cgi-bin/token?grant_type=client_cred
            ential&appid=".$this->appid."&secret=".$this->appsecret;
 23         $res = $this->http_request($url);
 24         $result = json_decode($res, true);
 25         // save to Database or Memcache
 26         $this->access_token = $result["access_token"];
 27         $this->lasttime = time;
 28     }
 29 
 30     // 创建菜单
 31     public function create_menu($data)
 32     {
 33         $url = "https:// api.weixin.qq.com/cgi-bin/menu/create?access_token=".$
            this->access_token;
 34         $res = $this->http_request($url, $data);
 35         return json_decode($res, true);
 36     }
 37 
 38     // 根据订单ID获取订单详情
 39     public function get_detail_by_order_id($id)
 40     {
 41         $data = array('order_id' =>$id);
 42         $url = "https:// api.weixin.qq.com/merchant/order/getbyid?access_token=".
            $this->access_token;
 43         $res = $this->http_request($url, json_encode($data));
 44         return json_decode($res, true);
 45     }
 46 
 47     // 根据订单状态/创建时间获取订单详情
 48     public function get_detail_by_filter($data = null)
 49     {
 50         $url = "https:// api.weixin.qq.com/merchant/order/getbyfilter?access_token=".
            $this->access_token;
 51         $res = $this->http_request($url, $data);
 52         return json_decode($res, true);
 53     }
 54 
 55     // 发送客服消息,已实现发送文本,其他类型可扩展
 56     public function send_custom_message($touser, $type, $data)
 57     {
 58         $msg = array('touser' =>$touser);
 59         $msg['msgtype'] = $type;
 60         switch($type)
 61         {
 62             case 'text':
 63                 $msg[$type]  = array('content'=>urlencode($data));
 64                 break;
 65             case 'news':
 66                 $msg[$type]  = array('articles'=>$data);
 67                 break;
 68             default:
 69                 $msg['text']  = array('content'=>urlencode("不支持的消息类型 ".$type));
 70                 break;
 71         }
 72         $url = "https:// api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".
            $this->access_token;
 73         return $this->http_request($url, urldecode(json_encode($msg)));
 74     }
 75 
 76     // 发送模板消息
 77     public function send_template_message($data)
 78     {
 79         $url = "https:// api.weixin.qq.com/cgi-bin/message/template/send?access_
            token=".$this->access_token;
 80         $res = $this->http_request($url, $data);
 81         return json_decode($res, true);
 82     }
 83     
 84     // HTTPS请求(支持GET和POST)
 85     protected function http_request($url, $data = null)
 86     {
 87         $curl = curl_init;
 88         curl_setopt($curl, CURLOPT_URL, $url);
 89         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
 90         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
 91         if (!empty($data)){
 92             curl_setopt($curl, CURLOPT_POST, 1);
 93             curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
 94         }
 95         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 96         $output = curl_exec($curl);
 97         curl_close($curl);
 98         return $output;
 99     }
100 }
  

上述代码定义了微信小店的类,在类中定义了本章开发实现需要用到的方法,包括前面章节提到的创建自定义菜单、客服消息及模板消息等功能,以及需要用到的根据订单ID获取订单详情和根据订单状态/创建时间获取订单详情两个方法,这两个方法的使用方法在后面的章节有详细介绍。