php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
微信入口绑定,微信事件处理,微信API全部操作包含在这些文件中。
内容有:微信摇一摇接口/微信多客服接口/微信支付接口/微信红包接口/微信卡券接口/微信小店接口/JSAPI
<?php
classWxApi{
constappId="";
constappSecret="";
constmchid="";//商户号
constprivatekey="";//私钥
public$parameters=array();
public$jsApiTicket=NULL;
public$jsApiTime=NULL;
publicfunction__construct(){
}
/****************************************************
*微信提交API方法,返回微信指定JSON
****************************************************/
publicfunctionwxHttpsRequest($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;
}
/****************************************************
*微信带证书提交数据-微信红包使用
****************************************************/
publicfunctionwxHttpsRequestPem($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"callfaild,errorCode:$error\n";
curl_close($ch);
returnfalse;
}
}
/****************************************************
*微信获取AccessToken返回指定微信公众号的at信息
****************************************************/
publicfunctionwxAccessToken($appId=NULL,$appSecret=NULL){
$appId=is_null($appId)?self::appId:$appId;
$appSecret=is_null($appSecret)?self::appSecret:$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;
}
/****************************************************
*微信获取ApiTicket返回指定微信公众号的at信息
****************************************************/
publicfunctionwxJsApiTicket($appId=NULL,$appSecret=NULL){
$appId=is_null($appId)?self::appId:$appId;
$appSecret=is_null($appSecret)?self::appSecret:$appSecret;
$url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=".$this->wxAccessToken();
$result=$this->wxHttpsRequest($url);
$jsoninfo=json_decode($result,true);
$ticket=$jsoninfo['ticket'];
//echo$ticket."<br/>";
return$ticket;
}
publicfunctionwxVerifyJsApiTicket($appId=NULL,$appSecret=NULL){
if(!empty($this->jsApiTime)&&intval($this->jsApiTime)>time()&&!empty($this->jsApiTicket)){
$ticket=$this->jsApiTicket;
}
else{
$ticket=$this->wxJsApiTicket($appId,$appSecret);
$this->jsApiTicket=$ticket;
$this->jsApiTime=time()+7200;
}
return$ticket;
}
/****************************************************
*微信通过OPENID获取用户信息,返回数组
****************************************************/
publicfunctionwxGetUser($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;
}
/****************************************************
*微信生成二维码ticket
****************************************************/
publicfunctionwxQrCodeTicket($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
return$result;
}
/****************************************************
*微信通过ticket生成二维码
****************************************************/
publicfunctionwxQrCode($ticket){
$url="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);
return$url;
}
/****************************************************
*微信通过指定模板信息发送给指定用户,发送完成后返回指定JSON数据
****************************************************/
publicfunctionwxSendTemplate($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;
}
/****************************************************
*发送自定义的模板消息
****************************************************/
publicfunctionwxSetSend($touser,$template_id,$url,$data,$topcolor='#7B68EE'){
$template=array(
'touser'=>$touser,
'template_id'=>$template_id,
'url'=>$url,
'topcolor'=>$topcolor,
'data'=>$data
);
$jsonData=urldecode(json_encode($template));
echo$jsonData;
$result=$this->wxSendTemplate($jsonData);
return$result;
}
/****************************************************
*微信设置OAUTH跳转URL,返回字符串信息-SCOPE=snsapi_base//验证时不返回确认页面,只能获取OPENID
****************************************************/
publicfunctionwxOauthBase($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;
}
/****************************************************
*微信设置OAUTH跳转URL,返回字符串信息-SCOPE=snsapi_userinfo//获取用户完整信息
****************************************************/
publicfunctionwxOauthUserinfo($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跳转指定URL
****************************************************/
publicfunctionwxHeader($url){
header("location:".$url);
}
/****************************************************
*微信通过OAUTH返回页面中获取AT信息
****************************************************/
publicfunctionwxOauthAccessToken($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的信息获取当前用户信息//只执行在snsapi_userinfo模式运行
****************************************************/
publicfunctionwxOauthUser($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;
}
/****************************************************
*创建自定义菜单
****************************************************/
publicfunctionwxMenuCreate($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*获取自定义菜单
****************************************************/
publicfunctionwxMenuGet(){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/cgi-bin/menu/get?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*删除自定义菜单
****************************************************/
publicfunctionwxMenuDelete(){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*获取第三方自定义菜单
****************************************************/
publicfunctionwxMenuGetInfo(){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信客服接口-Add添加客服人员
****************************************************/
publicfunctionwxServiceAdd($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/customservice/kfaccount/add?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信客服接口-Update编辑客服人员
****************************************************/
publicfunctionwxServiceUpdate($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/customservice/kfaccount/update?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信客服接口-Delete删除客服人员
****************************************************/
publicfunctionwxServiceDelete($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/customservice/kfaccount/del?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/*******************************************************
*微信客服接口-上传头像
*******************************************************/
publicfunctionwxServiceUpdateCover($kf_account,$media=''){
$wxAccessToken=$this->wxAccessToken();
//$data['access_token']=$wxAccessToken;
$data['media']='@D:\\workspace\\htdocs\\yky_test\\logo.jpg';
$url="https://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token=".$wxAccessToken."&kf_account=".$kf_account;
$result=$this->wxHttpsRequest($url,$data);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信客服接口-获取客服列表
****************************************************/
publicfunctionwxServiceList(){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信客服接口-获取在线客服接待信息
****************************************************/
publicfunctionwxServiceOnlineList(){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/cgi-bin/customservice/getonlinekflist?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信客服接口-客服发送信息
****************************************************/
publicfunctionwxServiceSend($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信客服会话接口-创建会话
****************************************************/
publicfunctionwxServiceSessionAdd($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/customservice/kfsession/create?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信客服会话接口-关闭会话
****************************************************/
publicfunctionwxServiceSessionClose(){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/customservice/kfsession/close?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信客服会话接口-获取会话
****************************************************/
publicfunctionwxServiceSessionGet($openId){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/customservice/kfsession/getsession?access_token=".$wxAccessToken."&openid=".$openId;
$result=$this->wxHttpsRequest($url);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信客服会话接口-获取会话列表
****************************************************/
publicfunctionwxServiceSessionList($kf_account){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/customservice/kfsession/getsessionlist?access_token=".$wxAccessToken."&kf_account=".$kf_account;
$result=$this->wxHttpsRequest($url);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信客服会话接口-未接入会话
****************************************************/
publicfunctionwxServiceSessionWaitCase(){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/customservice/kfsession/getwaitcase?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信摇一摇-申请设备ID
****************************************************/
publicfunctionwxDeviceApply($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/shakearound/device/applyid?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信摇一摇-编辑设备ID
****************************************************/
publicfunctionwxDeviceUpdate($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/shakearound/device/update?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信摇一摇-本店关联设备
****************************************************/
publicfunctionwxDeviceBindLocation($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/shakearound/device/bindlocation?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信摇一摇-查询设备列表
****************************************************/
publicfunctionwxDeviceSearch($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/shakearound/device/search?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信摇一摇-新增页面
****************************************************/
publicfunctionwxPageAdd($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/shakearound/page/add?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信摇一摇-编辑页面
****************************************************/
publicfunctionwxPageUpdate($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/shakearound/page/update?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信摇一摇-查询页面
****************************************************/
publicfunctionwxPageSearch($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/shakearound/page/search?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信摇一摇-删除页面
****************************************************/
publicfunctionwxPageDelete($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/shakearound/page/delete?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/*******************************************************
*微信摇一摇-上传图片素材
*******************************************************/
publicfunctionwxMaterialAdd($media=''){
$wxAccessToken=$this->wxAccessToken();
//$data['access_token']=$wxAccessToken;
$data['media']='@D:\\workspace\\htdocs\\yky_test\\logo.jpg';
$url="https://api.weixin.qq.com/shakearound/material/add?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$data);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信摇一摇-配置设备与页面的关联关系
****************************************************/
publicfunctionwxDeviceBindPage($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/shakearound/device/bindpage?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信摇一摇-获取摇周边的设备及用户信息
****************************************************/
publicfunctionwxGetShakeInfo($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/shakearound/user/getshakeinfo?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/****************************************************
*微信摇一摇-以设备为维度的数据统计接口
****************************************************/
publicfunctionwxGetShakeStatistics($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/shakearound/statistics/device?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/*****************************************************
*生成随机字符串-最长为32位字符串
*****************************************************/
publicfunctionwxNonceStr($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){
returnstrtoupper(md5(time().$str));
}
else{
return$str;
}
}
/*******************************************************
*微信商户订单号-最长28位字符串
*******************************************************/
publicfunctionwxMchBillno($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);
}
returndate("Ymd",time()).time().$mchid;
}
/*******************************************************
*微信格式化数组变成参数格式-支持url加密
*******************************************************/
publicfunctionwxSetParam($parameters){
if(is_array($parameters)&&!empty($parameters)){
$this->parameters=$parameters;
return$this->parameters;
}
else{
returnarray();
}
}
/*******************************************************
*微信格式化数组变成参数格式-支持url加密
*******************************************************/
publicfunctionwxFormatArray($parameters=NULL,$urlencode=FALSE){
if(is_null($parameters)){
$parameters=$this->parameters;
}
$restr="";//初始化空
ksort($parameters);//排序参数
foreach($parametersas$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方法]
*******************************************************/
publicfunctionwxMd5Sign($content,$privatekey){
try{
if(is_null($privatekey)){
thrownewException("财付通签名key不能为空!");
}
if(is_null($content)){
thrownewException("财付通签名内容不能为空");
}
$signStr=$content."&key=".$privatekey;
returnstrtoupper(md5($signStr));
}
catch(Exception$e)
{
die($e->getMessage());
}
}
/*******************************************************
*微信Sha1签名生成器-需要将参数数组转化成为字符串[wxFormatArray方法]
*******************************************************/
publicfunctionwxSha1Sign($content){
try{
if(is_null($content)){
thrownewException("签名内容不能为空");
}
//$signStr=$content;
returnsha1($content);
}
catch(Exception$e)
{
die($e->getMessage());
}
}
/*******************************************************
*微信jsApi整合方法-通过调用此方法获得jsapi数据
*******************************************************/
publicfunctionwxJsapiPackage(){
$jsapi_ticket=$this->wxVerifyJsApiTicket();
//注意URL一定要动态获取,不能hardcode.
$protocol=(!empty($_SERVER['HTTPS'])&&$_SERVER['HTTPS']!=='off'||$_SERVER['SERVER_PORT']==443)?"https://":"http://";
$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;
}
/*******************************************************
*微信卡券:JSAPI卡券Package-基础参数没有附带任何值-再生产环境中需要根据实际情况进行修改
*******************************************************/
publicfunctionwxCardPackage($cardId,$timestamp=''){
$api_ticket=$this->wxVerifyJsApiTicket();
if(!empty($timestamp)){
$timestamp=$timestamp;
}
else{
$timestamp=time();
}
$arrays=array(self::appSecret,$timestamp,$cardId);
sort($arrays,SORT_STRING);
//print_r($arrays);
//echoimplode("",$arrays)."<br/>";
$string=sha1(implode($arrays));
//echo$string;
$resultArray['cardId']=$cardId;
$resultArray['cardExt']=array();
$resultArray['cardExt']['code']='';
$resultArray['cardExt']['openid']='';
$resultArray['cardExt']['timestamp']=$timestamp;
$resultArray['cardExt']['signature']=$string;
//print_r($resultArray);
return$resultArray;
}
/*******************************************************
*微信卡券:JSAPI卡券全部卡券Package
*******************************************************/
publicfunctionwxCardAllPackage($cardIdArray=array(),$timestamp=''){
$reArrays=array();
if(!empty($cardIdArray)&&(is_array($cardIdArray)||is_object($cardIdArray))){
//print_r($cardIdArray);
foreach($cardIdArrayas$value){
//print_r($this->wxCardPackage($value,$openid));
$reArrays[]=$this->wxCardPackage($value,$timestamp);
}
//print_r($reArrays);
}
else{
$reArrays[]=$this->wxCardPackage($cardIdArray,$timestamp);
}
returnstrval(json_encode($reArrays));
}
/*******************************************************
*微信卡券:获取卡券列表
*******************************************************/
publicfunctionwxCardListPackage($cardType="",$cardId=""){
//$api_ticket=$this->wxVerifyJsApiTicket();
$resultArray=array();
$timestamp=time();
$nonceStr=$this->wxNonceStr();
//$strings=
$arrays=array(self::appId,self::appSecret,$timestamp,$nonceStr);
sort($arrays,SORT_STRING);
$string=sha1(implode($arrays));
$resultArray['app_id']=self::appId;
$resultArray['card_sign']=$string;
$resultArray['time_stamp']=$timestamp;
$resultArray['nonce_str']=$nonceStr;
$resultArray['card_type']=$cardType;
$resultArray['card_id']=$cardId;
return$resultArray;
}
/*******************************************************
*将数组解析XML-微信红包接口
*******************************************************/
publicfunctionwxArrayToXml($parameters=NULL){
if(is_null($parameters)){
$parameters=$this->parameters;
}
if(!is_array($parameters)||empty($parameters)){
die("参数不为数组无法解析");
}
$xml="<xml>";
foreach($arras$key=>$val)
{
if(is_numeric($val))
{
$xml.="<".$key.">".$val."</".$key.">";
}
else
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
$xml.="</xml>";
return$xml;
}
/*******************************************************
*微信卡券:上传LOGO-需要改写动态功能
*******************************************************/
publicfunctionwxCardUpdateImg(){
$wxAccessToken=$this->wxAccessToken();
//$data['access_token']=$wxAccessToken;
$data['buffer']='@D:\\workspace\\htdocs\\yky_test\\logo.jpg';
$url="https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$data);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
//array(1){["url"]=>string(121)"http://mmbiz.qpic.cn/mmbiz/ibuYxPHqeXePNTW4ATKyias1Cf3zTKiars9PFPzF1k5icvXD7xW0kXUAxHDzkEPd9micCMCN0dcTJfW6Tnm93MiaAfRQ/0"}
}
/*******************************************************
*微信卡券:获取颜色
*******************************************************/
publicfunctionwxCardColor(){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/card/getcolors?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/*******************************************************
*微信卡券:拉取门店列表
*******************************************************/
publicfunctionwxBatchGet($offset=0,$count=0){
$jsonData=json_encode(array('offset'=>intval($offset),'count'=>intval($count)));
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/card/location/batchget?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/*******************************************************
*微信卡券:创建卡券
*******************************************************/
publicfunctionwxCardCreated($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/card/create?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/*******************************************************
*微信卡券:查询卡券详情
*******************************************************/
publicfunctionwxCardGetInfo($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/card/get?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/*******************************************************
*微信卡券:设置白名单
*******************************************************/
publicfunctionwxCardWhiteList($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/card/testwhitelist/set?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/*******************************************************
*微信卡券:消耗卡券
*******************************************************/
publicfunctionwxCardConsume($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/card/code/consume?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/*******************************************************
*微信卡券:删除卡券
*******************************************************/
publicfunctionwxCardDelete($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/card/delete?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/*******************************************************
*微信卡券:选择卡券-解析CODE
*******************************************************/
publicfunctionwxCardDecryptCode($jsonData){
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/card/code/decrypt?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/*******************************************************
*微信卡券:更改库存
*******************************************************/
publicfunctionwxCardModifyStock($cardId,$increase_stock_value=0,$reduce_stock_value=0){
if(intval($increase_stock_value)==0&&intval($reduce_stock_value)==0){
returnfalse;
}
$jsonData=json_encode(array("card_id"=>$cardId,'increase_stock_value'=>intval($increase_stock_value),'reduce_stock_value'=>intval($reduce_stock_value)));
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/card/modifystock?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
/*******************************************************
*微信卡券:查询用户CODE
*******************************************************/
publicfunctionwxCardQueryCode($code,$cardId=''){
$jsonData=json_encode(array("code"=>$code,'card_id'=>$cardId));
$wxAccessToken=$this->wxAccessToken();
$url="https://api.weixin.qq.com/card/code/get?access_token=".$wxAccessToken;
$result=$this->wxHttpsRequest($url,$jsonData);
$jsoninfo=json_decode($result,true);
return$jsoninfo;
}
}
分享实例:
<?php
require_once'lib.inc.php';
$wx=newWxApi();
if(!isset($_GET['code'])){
header("location:https://open.weixin.qq.com/connect/oauth2/authorize?appid=".WxApi::appId."&redirect_uri=http://".$_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();
?>
<html>
<head>
<title>JSAPI接口测试</title>
<metacharset="UTF-8">
<metaname="viewport"content="width=device-width,initial-scale=1.0">
<scriptsrc="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script>
wx.config({
debug:true,
appId:'<?phpecho$signPackage["appId"];?>',
timestamp:<?phpecho$signPackage["timestamp"];?>,
nonceStr:'<?phpecho$signPackage["nonceStr"];?>',
signature:'<?phpecho$signPackage["signature"];?>',
jsApiList:[
//所有要调用的API都要加到这个列表中
'onMenuShareTimeline',
'onMenuShareAppMessage'
]
});
wx.ready(function(){
//在这里调用API
wx.onMenuShareAppMessage({
title:'互联网之子',
desc:'在长大的过程中,我才慢慢发现,我身边的所有事,别人跟我说的所有事,那些所谓本来如此,注定如此的事,它们其实没有非得如此,事情是可以改变的。更重要的是,有些事既然错了,那就该做出改变。',
link:'http://movie.douban.com/subject/25785114/',
imgUrl:'http://demo.open.weixin.qq.com/jssdk/images/p2166127561.jpg',
trigger:function(res){
//不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
alert('用户点击发送给朋友');
},
success:function(res){
alert('已分享');
},
cancel:function(res){
alert('已取消');
},
fail:function(res){
alert(JSON.stringify(res));
}
});
wx.onMenuShareTimeline({
title:'互联网之子',
link:'http://movie.douban.com/subject/25785114/',
imgUrl:'http://demo.open.weixin.qq.com/jssdk/images/p2166127561.jpg',
trigger:function(res){
//不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
alert('用户点击分享到朋友圈');
},
success:function(res){
alert('已分享');
},
cancel:function(res){
alert('已取消');
},
fail:function(res){
alert(JSON.stringify(res));
}
});
});
varreadyFunc=functiononBridgeReady(){
document.querySelector('#batchAddCard').addEventListener('click',function(e){
WeixinJSBridge.invoke('batchAddCard',{
"card_list":[<?phpecho$kqInfo;?>]
},
function(res){
alert(res.err_msg+"_"+res.card_list);
});
});
}
if(typeofWeixinJSBridge==="undefined"){
document.addEventListener('WeixinJSBridgeReady',readyFunc,false);
}
else{
readyFunc();
}
</script>
</head>
<body>
<div>
<inputtype="button"id="batchAddCard"name="batchAddCard"value="添加卡券"/>
</div>
</body>
</html>
<?php
/**
*Descriptionofwechat
*
*@authorAdministrator
*/
classWeChatextendsWxApi{
public$token="";
//putyourcodehere
publicfunction__construct($token=""){
parent::__construct();
$this->token=$token;
}
publicfunctionwcCheckSignature(){
try{
if(empty($this->token)){
thrownewException('TOKENisnotdefined!');
}
$signature=$_GET["signature"];
$timestamp=$_GET["timestamp"];
$nonce=$_GET["nonce"];
$token=$this->token;
$tmpArr=array($token,$timestamp,$nonce);
//useSORT_STRINGrule
sort($tmpArr,SORT_STRING);
$tmpStr=implode($tmpArr);
$tmpStr=sha1($tmpStr);
if($tmpStr==$signature){
returntrue;
}else{
returnfalse;
}
}
catch(Exception$e){
echo'Message:'.$e->getMessage();
}
}
publicfunctionwcValid(){
$echoStr=isset($_GET["echostr"])&&!empty($_GET["echostr"])?addslashes($_GET["echostr"]):NULL;
if(is_null($echoStr)){
$this->wcMsg();
}
else{
//validsignature,option
if($this->wcCheckSignature()){
echo$echoStr;
exit;
}
else{
exit();
}
}
}
publicfunctionwcMsg(){
//getpostdata,Maybeduetothedifferentenvironments
$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->FromUserName;
$toUsername=$postObj->ToUserName;
$MsgType=$postObj->MsgType;
if($MsgType=='event'){//执行事件相应
$Event=$postObj->Event;
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'kf_create_session'://创建会话
break;
case'kf_close_session'://关闭会话
break;
case'kf_switch_session'://转接会话
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="Welcometowechatworld!";
$resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
echo$resultStr;
}
else{
echo"Inputsomething...";
}
////////////////////////////////////////////////////////////////////
}
else{
echo"暂时没有任何信息!";
exit;
}
}
//日志LOG
publicfunctionzcLog($errcode,$errmsg){
$this->returnAy=array();
$this->returnAy['errcode']=$errcode;
$this->returnAy['errmsg']=$errmsg;
$this->returnAy['errtime']=date("Y-m-dH: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;
}
}
以上就是为大家分享的全部内容,希望对大家的学习有所帮助。