微信使用测试号简单写的一些方法测试供大家评论(里面的很多方法都是本人亲测的)

18 篇文章 0 订阅
<?php
/*
decr:
appID
yourappid
appsecret
yoursecret
*/
session_start();
header("Content-type:text/html;Charset=utf-8");
/*access_token*/
function getAccesstopken(){
$appid = 'yourappid';
$secret= 'yoursecret';
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;
$timeacc = file_get_contents("acctime.txt");
if(empty($timeacc)){ 
file_put_contents("acctime.txt",100);
getAccesstopken();
}else{ 
$time = time()-$timeacc;
if(($time/3600)<1){ 
file_put_contents('acctime.txt',time());
$jsoninfo = curlGet($url);
$access_token = $jsoninfo["access_token"];
$_SESSION['access_token'] =  $access_token;
return $access_token;
}else{ 
return $_SESSION['access_token'];
}
}
}


/*微信服务器端ip*/
function getSeverip(){ 
//https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN
$access_token = getAccesstopken();
$url = 'https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token='.$access_token;
return curlGet($url);


}
//jsapi_ticket进行获取方便进行签名和以后的jsdk的获取引用
//getJsapiticket();
echo 'getJsapiticket'.getJsapiticket().'getJsapiticket';
function getJsapiticket(){ 
//https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
if(empty($_SESSION['ticket'])){ 
$access_token = getAccesstopken();
$url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='.$access_token.'&type=jsapi';
$ticket = curlGet($url);
$_SESSION['ticket'] = $ticket['ticket'];//ticket的有效性7200秒
return $ticket['ticket'];
}else{ 
return $_SESSION['ticket'];
}
}
/* 进行signature进行拼凑和sha1加密处理*/
//createSignature();
function createSignature(){ 
$jsapi_ticket = 'jsapi_ticket='.getJsapiticket();
$noncestr="noncestr='Wm3WZYTPz0wzccnW'";
$timestamp="timestamp=".time();
$url = "url='wechatr.xd107.com'";
/*按照ascii码的顺序进行排序*/
$string  = $jsapi_ticket.'&'.$noncestr.'&'.$timestamp.'&'.$url;
/*进行cha1加密方法处理*/
//echo 'createSignature'.sha1($string).'createSignature';
//$_SESSION['sign'] = sha1($string);
//return sha1($string);//signature  参数的获取
header("location:http://wechatr.xd107.com/wx/index.html?".$timestamp.'&sign='.sha1($string));

}


/*接受消息处理*/
function showMessage(){ 
libxml_disable_entity_loader(true);
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
if (!empty($postStr)){ 
$postObj = simplexml_load_string($postStr);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$create_time = time();
if(($postObj->MsgType) == 'text'){ 
$msgType = 'text';
$content ='Welcome to 测试号';
$xmlText="<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%d</FuncFlag>
</xml>";
$resultStr=sprintf($xmlText,$fromUsername,$toUsername,time(),$content,$flag);
echo $resultStr;exit();
}else if ($postObj->MsgType == 'image') {
# 图片信息从处理
$xmlImage="<xml>";
$xmlImage.="<ToUserName><![CDATA[%s]]></ToUserName>";
$xmlImage.="<FromUserName><![CDATA[%s]]></FromUserName>";
$xmlImage.="<CreateTime>%s</CreateTime>";
$xmlImage.="<MsgType><![CDATA[image]]></MsgType>";
$xmlImage.="<Image><MediaId><![CDATA[%s]]></MediaId></Image>";
$xmlImage.="</xml>";
$media_id = 'BeaJCqIP724od0dhzc1fU9caRLHicRq8zc3N5BX8qf9RPiU2Dpu72qaN-BNRKQUK';
$resultStr=sprintf($xmlImage,$fromUsername,$toUsername,time(),$media_id);
echo $resultStr;exit();
}else if($postObj->MsgType == 'voice'){ 
#语音消息处理
}else if($postObj->MsgType == 'video'){ 
#视频消息处理
}else if($postObj->MsgType == 'shortvideo'){ 
#小视频消息处理
}else if($postObj->MsgType == 'location'){ 
#地理位置获取
}else if($postObj->MsgType == 'link'){ 
#消息链接
}else{}
}
}
/*微信图文,群发【订阅号与服务号认证后均可用】*/
sendImgtext();
function sendImgtext(){ 
//https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN
$access_token = getAccesstopken();
$url = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=".$access_token;
$uploadImgtext = uploadImgtext();
$senddata = '{
"filter":{
"is_to_all":true
"group_id":""
},
"mpnews":{
"media_id":"'.$uploadImgtext.'"
},
"msgtype":"mpnews"
}';
echo "<pre/>";
var_dump($senddata);
$sendok = curlPost($url,$senddata); 
echo '微信图文素材上传测试:'.'<br/>';
var_dump($sendok);/*测试接口限制次数*/
}
/*通过mediaid获取所对应图文信息*/
function mediaImgtext(){
    //https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=ACCESS_TOKEN
$access_token = getAccesstopken();
$url = 'https://api.weixin.qq.com/cgi-bin/material/get_material?access_token='.$access_token;
$meida = uploadImgtext();
$mediadata = '{
"media_id":'.$meida.'
}';
$showmedia = curlPost($url,$mediadata);
var_dump($showmedia);
}




/*图文素材上传,返回的素材的mediaid*/
function uploadImgtext(){ 
//$sucaiurl = 'https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token='.$actoken;
$thumbMediaid = thumbMediaid();
$access_token = getAccesstopken();
$url = 'https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token='.$access_token;
$postdata = '{
"articles": [
{
"thumb_media_id":"'.$thumbMediaid.'",
"author":"gjanuary",
"title":"Happy Day",
"content_source_url":"http://blog.csdn.net/gjanuary/article/details/50673580",
"content":"gjanuary",
"digest":"digest",
"show_cover_pic":"1"
}
]
}';
$uploadImgtext = curlPost($url,$postdata); 
return $uploadImgtext['media_id'];
}


/*缩略图thumb_media_id获取*/
function thumbMediaid(){ 
//http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=thumb
$access_token = getAccesstopken();
$url = 'http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token='.$access_token.'&type=thumb';
$realurl = realpath("./").'/images/P_002.jpg';
$thumbMediaid = httprequest($realurl,$url);
return  $thumbMediaid['thumb_media_id'];
}
/*(1)网页授权页面,【测试的时候要先用用浏览器输出链接在微信端打开即可】*/
authorization();
function authorization(){ 
//https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
$myurl = urlencode('http://wechatr.xd107.com/index.html');//需要跳转链接进行处理urlencode


$appid = 'yourappid';
$secret= 'yoursecret';
$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri='.$myurl.'&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect';
echo 'lianjie :'.$url.'<br/>';

/*网页收取2code换access_token说明这个code是跳转之后的前台页面又给传回来的,具体方案要根据实际情况这里只是测试用,并进行获取加的access_token*/
//getCode();
function getCode(){ 
$appid = 'yourappid';
$secret= 'yoursecret';
if (empty($_GET['code'])) {
echo " no  code";
}else{ 
//echo $_GET['code'].'<br/>';
//https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$_GET["code"].'&grant_type=authorization_code';
$linacesstoken = curlGet($url);
return $linacesstoken;//当这个参数失效的时候可以用下面的secondAccesstoken的方法进行二次刷新
}


}
// 当accesstoken中失效的时候可能需要二次刷新accesstoken需要二次刷新
secondAccesstoken();
function secondAccesstoken(){ 
$linacesstoken = getCode();
$appid = 'yourappid';
$secret= 'yoursecret';
//https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
$url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.$appid.'&grant_type=refresh_token&refresh_token='.$linacesstoken['access_token'];
$refreshtoken = curlGet($url);
return $refreshtoken;


}
/*获取通过授权临时获取用的基本信息*/
function showUsermess(){ 
$access_token = getAccesstopken();
$linacesstoken = getCode();
$url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$linacesstoken['openid'].'&lang=zh_CN';
$userinfo = curlGet($url);
return $userinfo;
}
/*检验授权凭证(access_token)是否有效*/
function validateAuthoriz(){ 
$access_token = getAccesstopken();
$linacesstoken = getCode();
//https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID
$url = 'https://api.weixin.qq.com/sns/auth?access_token='.$access_token.'&openid='.$linacesstoken['openid'];
$vali = curlGet($url);
if(($vali['errcode']==0)&&$vali['errmsg']=='ok'){ 
/*表明有效否则无效*/
return '有效';
die();
}else{ 
return '无效';
die();
}
}
/*底部菜单方法*/
bottomMenu();
function  bottomMenu(){ 
$access_token = getAccesstopken();
//https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
$url = 'http://www.baidu.com';//必须带http协议否则报错
$jsonmenu = ' 
{
"button":[
{
"type":"click",
"name":"点击事件测试",
"key":"V1001_TODAY_MUSIC"
},
{
"name":"接口测试",
"sub_button":[
{
"type":"view",
"name":"权限测试",
"url":"'.$url.'"
},
{
"type":"view",
"name":"视频",
"url":"http://v.qq.com/"
},
{
"type":"click",
"name":"赞一下我们",
"key":"V1001_GOOD"
}]
}]
}
';
$url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;
$result = curlPost($url, $jsonmenu);
echo "<pre>";
echo '菜单设定:'.'<br/>';
var_dump($result);exit();
}




/*curlget链接数据获取*/
function curlGet($url){ 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$jsoninfo = json_decode($output, true);
return $jsoninfo;
}
/*curlpost给链接传送数据*/
function curlPost($url,$data){ 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result, true);
return $result;
}
/*图片返回的media方法*/
function httprequest($imgurl,$url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
'file' => new CURLFile($imgurl), 
]); //不同版本是不一样的老版本的php用注释掉的新版本用没有注释的
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result, true);
return $result;
}


?>









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gjanuary

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值