首页 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践全文在线阅读

《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》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获取订单详情和根据订单状态/创建时间获取订单详情两个方法,这两个方法的使用方法在后面的章节有详细介绍。