微信接口微信 checksignaturee怎么获取

微信API接口大全
我的图书馆
微信API接口大全
&&&&&& 本文给大家介绍的是个人总结的一些微信API接口,包括微信支付、微信红包、微信卡券、微信小店等,十分的全面,有需要的小伙伴可以参考下。&&&&&& 微信入口绑定,微信事件处理,微信API全部操作包含在这些文件中。微信支付、微信红包、微信卡券、微信小店。index.php&?phpinclude_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('TOKEN is not defined!');&&&&&&}&&&&&&&&&&&&&&$signature = $_GET["signature"];&&&&&&$timestamp = $_GET["timestamp"];&&&&&&$nonce = $_GET["nonce"];&&&&&&&&&&&&&&&&$token = $this-&&&&&&&$tmpArr = array($token, $timestamp, $nonce);&&&&&&// use SORT_STRING rule&&&&&&sort($tmpArr, SORT_STRING);&&&&&&$tmpStr = implode( $tmpArr );&&&&&&$tmpStr = sha1( $tmpStr );&&&&&&&&if( $tmpStr == $signature ){&&&&&&&&&&return &&&&&&}else{&&&&&&&&&&return &&&&&&}&&&&} &&&&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-&FromUserN&&&&&&$toUsername = $postObj-&ToUserN&&&&&&$MsgType = $postObj-&MsgT&&&&&&&&&&&&&&if($MsgType == 'event'){//执行事件相应&&&&&&&&$Event = $postObj-&E&&&&&&&&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:&&&&*&& @link &&&*&& @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 &&&&&&&&}&&&&}&&&&&&/****************************************************&&&&&* 微信获取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,$appS&&&&&&&&&&$url&&&&& = "".$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_&&&&&&&&}&&&&&&&&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&&& = "".$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_&&&&&&&&}&&&&&&&&return $ticket;&&&&}&&&&&&&&&&/****************************************************&&&&&* 微信通过OPENID获取用户信息,返回数组&&&&&****************************************************/&&&&&&public function wxGetUser($openId){&&&&&&$wxAccessToken = $this-&wxAccessToken();&&&&&&$url&&&&& = "".$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&&& = "".$wxAccessToken;&&&&&&$result&&&& = $this-&wxHttpsRequest($url,$jsonData);&&&&&&return $result;&&&&}&&&&&&&&&&/****************************************************&&&&&* 微信通过ticket生成二维码&&&&&****************************************************/&&&&public function wxQrCode($ticket){&&&&&&$url& = "" . 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 = "".$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 = "".$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 = "".$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&&&&& = "".$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&&&&& = "" . $wxAccessToken;&&&&&&$result&&&& = $this-&wxHttpsRequest($url,$jsonData);&&&&&&$jsoninfo&&& = json_decode($result, true);&&&&&&return $jsoninfo;&&&&& &&&&}&&&&&&/****************************************************&&&&&* 获取自定义菜单&&&&&****************************************************/&&&&&&public function wxMenuGet(){&&&&&&$wxAccessToken = $this-&wxAccessToken();&&&&&&$url&&&&& = "" . $wxAccessToken;&&&&&&$result&&&& = $this-&wxHttpsRequest($url);&&&&&&$jsoninfo&&& = json_decode($result, true);&&&&&&return $jsoninfo;&&&&}&&&&&&/****************************************************&&&&&* 删除自定义菜单&&&&&****************************************************/&&&&&&public function wxMenuDelete(){&&&&&&$wxAccessToken = $this-&wxAccessToken();&&&&&&$url&&&&& = "" . $wxAccessToken;&&&&&&$result&&&& = $this-&wxHttpsRequest($url);&&&&&&$jsoninfo&&& = json_decode($result, true);&&&&&&return $jsoninfo;&&&&}&&&&&&/****************************************************&&&&&* 获取第三方自定义菜单&&&&&****************************************************/&&&&&&public function wxMenuGetInfo(){&&&&&&$wxAccessToken = $this-&wxAccessToken();&&&&&&$url&&&&& = "" . $wxAccessToken;&&&&&&$result&&&& = $this-&wxHttpsRequest($url);&&&&&&$jsoninfo&&& = json_decode($result, true);&&&&&&return $jsoninfo;&&&&}&&&&&&&&&&&&&&/*****************************************************&&&&&*&& 生成随机字符串 - 最长为32位字符串&&&&&*****************************************************/&&&&public function wxNonceStr($length = 16, $type = FALSE) {&&&&&&$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";&&&&&&$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::&&&&&&&&}&&&&&&}&&&&&&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-&&&&&&&}&&&&&&else{&&&&&&&&return array();&&&&&&}&&&&}&&&&&&&&&&/*******************************************************&&&&&*&& 微信格式化数组变成参数格式 - 支持url加密&&&&&*******************************************************/&&&&&&&&public function wxFormatArray($parameters = NULL, $urlencode = FALSE){&&&&&&if(is_null($parameters)){&&&&&&&&$parameters = $this-&&&&&&&}&&&&&&$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 = $&&&&&&&&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) ? "" : "";&&&&&&$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-&&&&&&&}&&&&&&&&&&&&&&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'] = $wxAccessT&&&&&&$data['buffer']&& = '@D:\\workspace\\htdocs\\yky_test\\logo.jpg';&&&&&&$url&&&&& = "".$wxAccessToken;&&&&&&$result&&&& = $this-&wxHttpsRequest($url,$data);&&&&&&$jsoninfo&&& = json_decode($result, true);&&&&&&return $jsoninfo;&&&&&&//array(1) { ["url"]=& string(121) "" } &&&&}&&&&&&&&&&/*******************************************************&&&&&*&& 微信卡券:获取颜色&&&&&*******************************************************/&&&&public function wxCardColor(){&&&&&&$wxAccessToken = $this-&wxAccessToken();&&&&&&$url&&&&&&& = "".$wxAccessToken;&&&&&&$result&&&& = $this-&wxHttpsRequest($url);&&&&&&$jsoninfo&&& = json_decode($result, true);&&&&&&return $jsoninfo;&&&&}&&&&&&&&&&/*******************************************************&&&&&*&& 微信卡券:创建卡券&&&&&*******************************************************/&&&&public function wxCardCreated($jsonData) {&&&&&&$wxAccessToken = $this-&wxAccessToken();&&&&&&$url&&&&& = "" . $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:".WxApi::appId."&redirect_uri=".$_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=""&&/script&&&&&&script src=""&&/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: '',&&&&&&&&&&imgUrl: '',&&&&&&&&&&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: '',&&&&&&&&&&&&imgUrl: '',&&&&&&&&&&&&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.cardL // 添加的卡券列表信息&&&&&&&&&&alert(cardList);&&&&&&&&&},&&&&&&&&cancel: function (res) {&&&&&&&&&&&&alert('已取消');&&&&&&&&},&&&&&&&&fail: function (res) {&&&&&&&&&&&&alert(JSON.stringify(res));&&&&&&&&}&&&&&&&&});&&&&&&&};&&&&&&&&&&&&&&&&var shareData = {&&&&&&&&title: '微信JS-SDK Demo',&&&&&&&&desc: '微信JS-SDK,帮助第三方为用户提供更优质的移动web服务',&&&&&&&&link: '',&&&&&&&&imgUrl: ''&&&&&&&};&&&&&&&&&&&&&&&&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);以上所述就是本文的全部内容,希望大家能够喜欢。
TA的最新馆藏
喜欢该文的人也喜欢

我要回帖

更多关于 微信signature生成 的文章

 

随机推荐