public function index(){
$timeStamp=time();//当前时间,但是前端和服务端进行校验时候的值要一致。
$url="**";//当前网站域名
$signature=$this->sign($this->jsapi_ticket,$this->config['nonceStr'],$timeStamp,$url);
$result =[
'agentId'=>$this->config['AgentId'],
'corpId'=>$this->config['corpId'],
'timestamp'=>$timeStamp,
'nonceStr'=>$this->config['nonceStr'],
'signature'=>$signature,
'type'=>0
];
$this->assign('result',$result);
return $this->fetch();
}
public function sign($jsticket, $nonceStr, $timeStamp, $url){
$content = "jsapi_ticket=" . $jsticket . "&noncestr=" . $nonceStr . "×tamp=" . $timeStamp . "&url=" . urldecode($url);
$signature = hash("sha256", $content);;
return $signature;
}
前端:
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="https://g.alicdn.com/dingding/dingtalk-jsapi/2.10.3/dingtalk.open.js"></script>
<script>
dd.config({
agentId: "{$result.agentId}", // 必填,微应用ID
corpId: "{$result.corpId}",//必填,企业ID
timeStamp: "{$result.timestamp}", // 必填,生成签名的时间戳
nonceStr: "{$result.nonceStr}", // 必填,自定义固定字符串。
signature: "{$result.signature}", // 必填,签名
type:0, //选填。0表示微应用的jsapi,1表示服务窗的jsapi;不填默认为0。该参数从dingtalk.js的0.8.3版本开始支持
jsApiList : [
'runtime.info',
'biz.contact.choose',
'device.notification.confirm',
'device.notification.alert',
'device.notification.prompt',
'biz.ding.post',
'biz.util.openLink',
] // 必填,需要使用的jsapi列表,注意:不要带dd。
});
</script>