PHP WeChat 공유 개발에 대한 자세한 설명
PHP WeChat 개발 경험을 공유하세요. 때로는 일련의 이벤트를 수행하기 위해 WeChat에서 프로젝트나 프로젝트를 공유해야 하는 경우 WeChat 공유 작업을 수행해야 합니다. 이미 공유된 경우 WeChat의 기본 공유를 사용할 수 없습니다. WeChat 공유를 직접 구성해야 합니다. 사용자가 공유할 때 미리 정해진 절차를 따르면 공유 후 수행할 작업을 쉽게 수행할 수 있습니다.
페이지 측면에는 주로 다음과 같은 js가 있습니다.
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script> wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '{$appid}', // 必填,公众号的唯一标识 timestamp:{$timestamp} , // 必填,生成签名的时间戳 nonceStr: '{$nonceStr}', // 必填,生成签名的随机串 signature: '{$signature}',// 必填,签名,见附录1 jsApiList: ['onMenuShareAppMessage','onMenuShareTimeline'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //分享给朋友 wx.onMenuShareAppMessage({ title: {$title}, // 分享标题 此处$title可在控制器端传递也可在页面传递 页面传递讲解在下面哦 desc: {$desc}, //分享描述 link: {$link}, // 分享链接 imgUrl: {$imgurl}, // 分享图标 type: '', // 分享类型,music、video或link,不填默认为link dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空 success: function () { alert('分享成功'); }, cancel: function () { // 用户取消分享后执行的回调函数 // alert('取消分享'); } }); //分享到朋友圈 wx.onMenuShareTimeline({ title: {$title}, // 分享标题 desc: {$desc}, // 分享描述 link: {$link}, // 分享链接 imgUrl: {$imgurl}, // 分享图标 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 } }); }); </script>
로그인 후 복사
wx.config가 구성되면 프로그램은 다음과 같은 공유를 진행합니다. 여기서 디버깅을 위해 false를 변경할 수 있습니다. 올바르게 구성된 경우 true로 설정합니다. 그런 다음 ok와 같은 일반 팝업 정보가 구성되지 않은 경우 이를 true로 변경하면 팝업 효과가 발생하지 않습니다.
wx.config에는 컨트롤러의 4개 매개변수, 즉 appId, timestamp, nonceStr 및 서명 제어 장치 코드는 다음과 같습니다.
<?php $jssdk = new \Home\Util\JSSDK(C('APPID'), C('SECRET'));//此处C里面的东西为你所使用的公众号的appid和secret,这俩个东西可在微信公众平台获取到 不详细解释 找不到追加评论(讲解) JSSDK文件代码在下 $signPackage = $jssdk->GetSignPackage(); $this->assign('appid',$signPackage["appId"]); $this->assign('timestamp',$signPackage["timestamp"]); $this->assign('nonceStr',$signPackage["nonceStr"]); $this->assign('signature',$signPackage["signature"]);
로그인 후 복사
여기에서 wx.config가 구성되며 여기에 제목과 기타 정보를 전달할 수도 있습니다.
$this->sign('title', $title);JSSDK 파일 코드:<?php namespace Home\Util; use Think\Controller; class JSSDK{ private $appId; private $appSecret; public function __construct($appId, $appSecret) { $this->appId = $appId; $this->appSecret = $appSecret; } public function getSignPackage() { $jsapiTicket = $this->getJsApiTicket(); // 注意 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->createNonceStr(); // 这里参数的顺序要按照 key 值 ASCII 码升序排序 $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url"; $signature = sha1($string); $signPackage = array( "appId" => $this->appId, "nonceStr" => $nonceStr, "timestamp" => $timestamp, "url" => $url, "signature" => $signature, "rawString" => $string ); return $signPackage; } private function createNonceStr($length = 16) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $str = ""; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $str; } public function getJsApiTicket() { // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例 $data = json_decode($this->get_php_file("jsapi_ticket.php")); if ($data->expire_time < time()) { $accessToken = $this->getAccessToken(); // 如果是企业号用以下 URL 获取 ticket // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken"; $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$accessToken&type=jsapi"; $res = json_decode($this->httpGet($url)); $ticket = $res->ticket; // var_dump($url); if ($ticket) { $data->expire_time = time() + 7000; $data->jsapi_ticket = $ticket; $this->set_php_file("jsapi_ticket.php", json_encode($data)); } } else { $ticket = $data->jsapi_ticket; } return $ticket; } public function getAccessToken() { // access_token 应该全局存储与更新,以下代码以写入到文件中做示例 $data = json_decode($this->get_php_file("access_token.php")); if ($data->expire_time < time()) { // 如果是企业号用以下URL获取access_token // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret"; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret"; $res = $this->getJson($url); $access_token = $res['access_token']; // var_dump($res); if ($access_token) { $data->expire_time = time() + 7000; $data->access_token = $access_token; $this->set_php_file("access_token.php", json_encode($data)); } } else { $access_token = $data->access_token; } return $access_token; // $aa = $access_token; // var_dump($aa); } //获取access_token public function getJson($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); // var_dump(json_decode($output, true)); return json_decode($output, true); } //获取ticket private function httpGet($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // curl_setopt($curl, CURLOPT_TIMEOUT, 500); // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。 // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); $res = curl_exec($curl); // var_dump($res); curl_close($curl); return $res; } private function get_php_file($filename) { return trim(substr(file_get_contents($filename), 15)); // echo trim(substr(file_get_contents($filename), 15));die; // $aa = trim(substr(file_get_contents($filename), 15)); } private function set_php_file($filename, $content) { $fp = fopen($filename, "w"); fwrite($fp, "<?php exit();?>" . $content); fclose($fp); } }
로그인 후 복사
<script> var zl= function (title,link,imgurl,desc){ wx.ready(function(){ //分享给朋友 wx.onMenuShareAppMessage({ title: title, // 分享标题 desc: desc, //分享描述 link: link, // 分享链接 imgUrl: imgurl, // 分享图标 type: '', // 分享类型,music、video或link,不填默认为link dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空 success: function () { alert('分享成功'); }, cancel: function () { // 用户取消分享后执行的回调函数 // alert('取消分享'); } }); //分享到朋友圈 wx.onMenuShareTimeline({ title: title, // 分享标题 desc: desc, // 分享描述 link: link, // 分享链接 imgUrl: imgurl, // 分享图标 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 // alert('已取消分享'); } }); }); }; </script>
로그인 후 복사
<script> zl(title,link,imgurl,desc); </script>
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전
By 尊渡假赌尊渡假赌尊渡假赌
어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션
2 몇 주 전
By DDD
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전
By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
7530
15


Cakephp 튜토리얼
1379
52


Steam의 계정 이름 형식은 무엇입니까?
82
11


Win11 활성화 키 영구
54
19


NYT 연결 힌트와 답변
21
76

