国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP版微信公眾平臺(tái)紅包API

2020-03-22 19:05:17
字體:
供稿:網(wǎng)友
微信紅包支持,JSAPI的動(dòng)態(tài)參數(shù)接口支持http://git.oschina.net/youkuiyuan/yky_test/blob/master/html' target='_blank'>class/wxapi.class.php微信API類 - 增加紅包支持 /******************************************************** * @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接口 陸續(xù)會(huì)繼續(xù)進(jìn)行更新 ********************************************************/ class WxApi { const appId = ""; const appSecret = ""; const mchid = ""; //商戶號(hào) 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; /**************************************************** * 微信帶證書提交數(shù)據(jù) - 微信紅包使用 ****************************************************/ public function wxHttpsRequestPem($url, $vars, $second=30,$aHeader=array()){ $ch = curl_init(); //超時(shí)時(shí)間 curl_setopt($ch,CURLOPT_TIMEOUT,$second); curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); //這里設(shè)置代理,如果有的話 //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 分別屬于兩個(gè).pem文件 //默認(rèn)格式為PEM,可以注釋 curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM'); curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/apiclient_cert.pem'); //默認(rèn)格式為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'); //第二種方式,兩個(gè)文件合成一個(gè).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 返回指定微信公眾號(hào)的at信息 ****************************************************/ public function wxAccessToken($appId = NULL , $appSecret = NULL){ $appId = is_null($appId) self::appId : $appId; $appSecret = is_null($appSecret) self::appSecret : $appSecret; //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"]; return $access_token; /**************************************************** * 微信通過OPENID獲取用戶信息,返回?cái)?shù)組 ****************************************************/ 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; /**************************************************** * 微信通過指定模板信息發(fā)送給指定用戶,發(fā)送完成后返回指定JSON數(shù)據(jù) ****************************************************/ public function wxSendTemplate($jsonData){ $wxAccessToken = $this- wxAccessToken(); $url = "https://api.weixin.qq.com/cgi-bin/message/template/send access_token=".$wxAccessToken; $result = $this- wxHttpsRequest($url,$jsonData); return $result; /**************************************************** * 發(fā)送自定義的模板消息 ****************************************************/ 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; /**************************************************** * 微信設(shè)置OAUTH跳轉(zhuǎn)URL,返回字符串信息 - SCOPE = snsapi_base //驗(yàn)證時(shí)不返回確認(rèn)頁面,只能獲取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; /**************************************************** * 微信設(shè)置OAUTH跳轉(zhuǎn)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跳轉(zhuǎn)指定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的信息獲取當(dāng)前用戶信息 // 只執(zhí)行在snsapi_userinfo模式運(yùn)行 ****************************************************/ 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; /***************************************************** * 生成隨機(jī)字符串 - 最長為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; /******************************************************* * 微信商戶訂單號(hào) - 最長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; /******************************************************* * 微信格式化數(shù)組變成參數(shù)格式 - 支持url加密 *******************************************************/ public function wxSetParam($parameters){ if(is_array($parameters) && !empty($parameters)){ $this- parameters = $parameters; return $this- parameters; else{ return array(); /******************************************************* * 微信格式化數(shù)組變成參數(shù)格式 - 支持url加密 *******************************************************/ public function wxFormatArray($parameters = NULL, $urlencode = FALSE){ if(is_null($parameters)){ $parameters = $this- parameters; $restr = "";//初始化空 ksort($parameters);//排序參數(shù) foreach ($parameters as $k = $v){//循環(huán)定制參數(shù) if (null != $v && "null" != $v && "sign" != $k) { if($urlencode){//如果參數(shù)需要增加URL加密就增加,不需要?jiǎng)t不需要 $v = urlencode($v); $restr .= $k . "=" . $v . "&";//返回完整字符串 if (strlen($restr) 0) {//如果存在數(shù)據(jù)則將最后“&”刪除 $restr = substr($restr, 0, strlen($restr)-1); return $restr;//返回字符串 /******************************************************* * 微信MD5簽名生成器 - 需要將參數(shù)數(shù)組轉(zhuǎn)化成為字符串[wxFormatArray方法] *******************************************************/ public function wxMd5Sign($content, $privatekey){ try { if (is_null($key)) { throw new Exception("財(cái)付通簽名key不能為空!"); if (is_null($content)) { throw new Exception("財(cái)付通簽名內(nèi)容不能為空"); $signStr = $content . "&key=" . $key; return strtoupper(md5($signStr)); catch (Exception $e) die($e- getMessage()); /******************************************************* * 微信Sha1簽名生成器 - 需要將參數(shù)數(shù)組轉(zhuǎn)化成為字符串[wxFormatArray方法] *******************************************************/ public function wxSha1Sign($content, $privatekey){ try { if (is_null($key)) { throw new Exception("財(cái)付通簽名key不能為空!"); if (is_null($content)) { throw new Exception("財(cái)付通簽名內(nèi)容不能為空"); $signStr = $content . "&key=" . $key; return strtoupper(sha1($signStr)); catch (Exception $e) die($e- getMessage()); /******************************************************* * 將數(shù)組解析XML - 微信紅包接口 *******************************************************/ public function wxArrayToXml($parameters = NULL){ if(is_null($parameters)){ $parameters = $this- parameters; if(!is_array($parameters) || empty($parameters)){ die("參數(shù)不為數(shù)組無法解析"); $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; }后期還是會(huì)增加在一起的把這個(gè)CLASS做起來,網(wǎng)上資源很多,但是都是有一定基礎(chǔ)的人去看看改改可以,對(duì)于沒有接觸剛剛接觸的新手還是需要給予支持的。幫助用戶屢屢思路。以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 普定县| 娄烦县| 元朗区| 遵义市| 沧源| 东阿县| 永顺县| 弋阳县| 通山县| 海门市| 玛纳斯县| 潍坊市| 江孜县| 承德市| 宁强县| 西充县| 沂南县| 上饶市| 辽源市| 宜都市| 通化县| 潞西市| 周宁县| 大厂| 宜黄县| 秦皇岛市| 建昌县| 井冈山市| 扶绥县| 东兰县| 桂林市| 清远市| 秭归县| 法库县| 准格尔旗| 乌恰县| 修水县| 公安县| 永兴县| 广南县| 津市市|