导航:首页 > 编程语言 > php调用微信jssdk

php调用微信jssdk

发布时间:2022-05-16 06:26:07

‘壹’ 如何在DISCUZ论坛引入微信JSSDK与分享功能

首先在公众号管理后台“公众号设置”的“功能设置”里填写JS接口安全域名,域名需要通过ICP备案,没有备案域名可以用SAE、BAE等平台。自定义分享功能需要通过微信认证才能使用,没有认证的可以跟关系好的朋友借用权限,在他的JS接口安全域名设置这里填上你的域名和共享同一个开发者ID。没有认证微信号的,可参考文章末尾的办法。

2、下载官方示例代码:jssdk-php.zip
下载后解压,然后在DZ根目录新建一个文件夹命名为jssdk 把解压得到的jssdk.php直接上传到刚建设好的文件夹中。

3、修改header.htm模板文件
在DZ模板文件header.htm中添加如下代码

‘贰’ 如何调用微信jssdk中的接口

一,首先在公众号管理后台“公众号设置”的“功能设置”里填写JS接口安全域名,域名需要通过ICP备案,没有备案域名可以用SAE、BAE等平台。此外,自定义分享功能需要通过微信认证才能使用,没有认证的可以跟关系好的朋友借用权限,在他的JS接口安全域名设置这里填上你的域名和共享同一个开发者ID。
二,在需要调用JS接口的页面引入微信JSSDK的JS文件:这个文件在需要分享的页面是必须要引用的,单独特别重申一下,其他方面请阅读官方文档。

‘叁’ php开发微信jssdk接口 iphone手机当一次多图上传时,只有一张上传成功怎么回事,安

微信上传图片,只能递归方法上传多张,所以你可能是JS代码里只上传了一次

‘肆’ 微信jssdk demo php版怎么用那些按钮点了没反应怎么测试菜鸟

你如果没有过不懂网页开发的话,你就不要用这些东西了,你不会用的

‘伍’ 不用php怎么调用微信jssdk

使用姿势

^ajax(Common.ServerUrl+"GetWX.php",{
data:{
Type:"config",
url:location.href.split('#')[0]
},
dataType:'json',
type:'get',
timeout:5000,
success:function(data){
wx.config({
debug:true,//开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId:'……',//必填,公众号的唯一标识
timestamp:data.timestamp,//必填,生成签名的时间戳
nonceStr:data.nonceStr,//必填,生成签名的随机串
signature:data.signature,//必填,签名,见附录1
jsApiList:["getLocation"]//必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
}
})
wx.ready(function(){
wx.getLocation({
type:'wgs84',//默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
success:function(res){
varlatitude=res.latitude;//纬度,浮点数,范围为90~-90
varlongitude=res.longitude;//经度,浮点数,范围为180~-180。
plus2.storage.setItem("latitude",latitude);
plus2.storage.setItem("longitude",longitude);
}
});
});

服务端GetWX.PHP

<?php
include"lib/Cache.php";
define($APPID,"……");
define($SECRET,"……")
if($_GET['Type']=="access_token"){//echogetAccess_token();
}
elseif($_GET['Type']=="jsapi_ticket"){//echogetJsapi_ticket();
}
elseif($_GET['Type']=="config"){
$jsapi_ticket=getJsapi_ticket();
$nonceStr="x".rand(10000,100000)."x";//随机字符串
$timestamp=time();//时间戳
$url=$_GET['url'];
$signature=getSignature($jsapi_ticket,$nonceStr,$timestamp,$url);

$result=array("jsapi_ticket"=>$jsapi_ticket,"nonceStr"=>$nonceStr,"timestamp"=>$timestamp,"url"=>$url,"signature"=>$signature);
echojson_encode($result);
}

functiongetSignature($jsapi_ticket,$noncestr,$timestamp,$url){
$string1="jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."&timestamp=".$timestamp."&url=".$url;
$sha1=sha1($string1);
return$sha1;
}

functiongetJsapi_ticket(){
$cache=newCache();
$cache=newCache(7000,'cache/');//需要创建cache文件夹存储缓存文件。
//从缓存从读取键值$key的数据
$jsapi_ticket=$cache->get("jsapi_ticket");
$access_token=getAccess_token();
//如果没有缓存数据
if($jsapi_ticket==false){
$access_token=getAccess_token();
$url='https://api.weixin.qq.com/cgi-bin/ticket/getticket';
$data=array('type'=>'jsapi','access_token'=>$access_token);
$header=array();
$response=json_decode(curl_https($url,$data,$header,5));
$jsapi_ticket=$response->ticket;
//写入键值$key的数据
$cache->put("jsapi_ticket",$jsapi_ticket);
}
return$jsapi_ticket;
}

functiongetAccess_token(){
$cache=newCache();
$cache=newCache(7000,'cache/');
//从缓存从读取键值$key的数据
$access_token=$cache->get("access_token");

//如果没有缓存数据
if($access_token==false){
$url='https://api.weixin.qq.com/cgi-bin/token';
$data=array('grant_type'=>'client_credential','appid'=>$APPID,'secret'=>$SECRET);
$header=array();

$response=json_decode(curl_https($url,$data,$header,5));
$access_token=$response->access_token;
//写入键值$key的数据
$cache->put("access_token",$access_token);
}
return$access_token;
}

/**curl获取https请求
*@paramString$url请求的url
*@paramArray$data要发送的数据
*@paramArray$header请求时发送的header
*@paramint$timeout超时时间,默认30s
*/
functioncurl_https($url,$data=array(),$header=array(),$timeout=30){
$ch=curl_init();
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);//跳过证书检查
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);

$response=curl_exec($ch);

if($error=curl_error($ch)){
die($error);
}

curl_close($ch);

return$response;

}
?>

Cache.php

<?phpclassCache{
private$cache_path;
//pathforthecache
private$cache_expire;
//secondsthatthecacheexpires

//cacheconstructor,
publicfunctionCache($exp_time=3600,$path="cache/"){
$this->cache_expire=$exp_time;
$this->cache_path=$path;
}

//returnsthefilenameforthecache
privatefunctionfileName($key){
return$this->cache_path.md5($key);
}

//,$key==nameofthecache,datatheinfo/valuestostore
publicfunctionput($key,$data){
$values=serialize($data);
$filename=$this->fileName($key);
$file=fopen($filename,'w');
if($file){//abletocreatethefile
fwrite($file,$values);
fclose($file);
}else
returnfalse;
}

//returnscacheforthegivenkey
publicfunctionget($key){
$filename=$this->fileName($key);
if(!file_exists($filename)||!is_readable($filename)){//can'treadthecache
returnfalse;
}
if(time()<(filemtime($filename)+$this->cache_expire)){//cacheforthekeynotexpired
$file=fopen($filename,"r");
//readdatafile
if($file){//abletoopenthefile
$data=fread($file,filesize($filename));
fclose($file);
returnunserialize($data);
//returnthevalues
}else
returnfalse;
}else
returnfalse;
//wasexpiredyouneedtocreatenew
}

}?>

‘陆’ 微信公众平台开发,oauth2.0认证地址,打开jssdk页面无法验证通过

给你个PHP的例子:
下面的代码保存为get_sdkper.php
<?php
require_once "jssdk.php";

//1.注意:所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
//2.填写appid和secret
$appid="你的appid";
$secret="你的secret";
$getUrl=$_POST["url"];

$jssdk = new JSSDK($appid, $secret,$getUrl);
$signPackage = $jssdk->GetSignPackage();
echo("{\"appId\":\"".$signPackage["appId"]."\",\"timestamp\":\"".$signPackage["timestamp"]."\",\"nonceStr\":\"".$signPackage["nonceStr"]."\",\"signature\":\"".$signPackage["signature"]."\",\"url\":\"".$signPackage["url"]."\"}");
?>

下面是调用方法:
//调用微信JS API接口
var GetappId="",Gettimestamp="",GetnonceStr="",Getsignature="";
function CallWechatJSAPI()
{
$.ajax({
url:"get_sdkper.php",
type:"POST",
data:"url="+escape(location.href.split('#')[0]),
dataType:"JSON",
success:function(result){
var resultData = $.evalJSON(result);
if(resultData){
GetappId = resultData.appId;
Gettimestamp = resultData.timestamp;
GetnonceStr = resultData.nonceStr;
Getsignature = resultData.signature;

wx.config({
debug: false,
appId: GetappId,
timestamp: Gettimestamp,
nonceStr: GetnonceStr,
signature: Getsignature,
jsApiList: [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareQQ',
'onMenuShareWeibo',
'hideMenuItems',
'hideAllNonBaseMenuItem',
'chooseImage',
'previewImage',
'uploadImage',
'downloadImage',
'getNetworkType',
'openLocation',
'getLocation',
'hideOptionMenu',
'closeWindow',
'scanQRCode',
'chooseWXPay',
'openProctSpecificView',
'addCard',
'chooseCard',
'openCard'
]
});
}

},
error:function(){
//alert("连接网络失败,请重试。");
}
});

}

‘柒’ 【求帮助】 微信JSSDK 分享接口,调用没反应

你在wx.config时,打开调试模式,自己测试测试,在调试模式下,都会alert信息出来,看看alert出来的是什么信息。

‘捌’ 怎么使用微信JSSDK的自定义分享功能

  1. 备案信息;

  2. 公众号账号;

  1. 首先在公众号管理后台“公众号设置”的“功能设置”里填写JS接口安全域名,域名需要通过ICP备案,没有备案域名可以用SAE、BAE等平台。

  2. 以上是常规的在动态页面的调用方法,为了更方便的多页面调用,建议通过AJAX跨域请求来实现调用权限。

注意:

在PHP文件夹下sample.php是调用API接口的示例文件。

‘玖’ thinkphp结合微信jssdk文档 第一次转发朋友圈跳转链接 第二次不用在转发就可以获取跳转的链接怎么做

你可以这么做,数据库里面有一个字段是来判断是不是第一次,字段为1的话就是已经转发过了,为0的话就是还没有转发,如果为1你就不要执行jssdk的分享

‘拾’ jssdk的api能调出微信刷卡界面吗或者,通过PHP如何调出微信刷卡界面

目前好像是没有的,无论是jssdk还是php

阅读全文

与php调用微信jssdk相关的资料

热点内容
emerson服务器怎么短接启动 浏览:559
工控编程人员工资 浏览:397
速成意大利语pdf 浏览:250
连续加减乘除法的算法 浏览:652
用mfc编程实现dda算法 浏览:41
linux命令打开应用 浏览:146
改造后的程序员 浏览:270
数控编程变量 浏览:785
江门哪里有plc编程系统 浏览:378
安卓手机如何下载外服b站 浏览:700
pythonetree库 浏览:759
数据插值算法 浏览:723
澳大利亚加密货币逃税 浏览:484
pdf文档如何压缩 浏览:329
java单例模式线程安全 浏览:646
特种pdf 浏览:160
加油什么app划算 浏览:715
开服要什么样的服务器 浏览:33
pdf文件太大怎么压缩 浏览:29
UK开票显示文件夹不存在 浏览:668