PHP实现微信自定义的方式
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,PHP实现微信自定义的方式,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。要制作微信接口分享功能,前期需要注册一个公众号,并认证通过,
千家信息网最后更新 2025年01月21日PHP实现微信自定义的方式
PHP实现微信自定义的方式,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
要制作微信接口分享功能,前期需要注册一个公众号,并认证通过,只有这样才能实现接口制作。
下面我一步步给大家做介绍
1、公众号开发信息配置
在开发分享接口之前需要先配置公众平台配置信息,如下图所示:点击"开发-基本信息",可以看到公众号开发信息,在开发者秘钥哪里点击"开启",配置自己的秘钥信息,配置成功后,保存开发者ID(AppID)和开发者密码(AppSecret)
2、配置JS接口安全域名
点击"设置与开发--公众号设置",点击JS接口安全域名后面的设置,按照要求添加js安全域名。
3、PHP分享接口类
class wechatClass { public $AppID; public $AppSecret; public $redirect_uri; public $DbSy; public $dump_url; public $scope; public function __construct() { parent::__construct(); $this->AppID = "开发者密码(AppSecret)"; $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); // var_dump($signature);die; $signPackage = array( "appId" => $this->AppID, "nonceStr" => $nonceStr, "timestamp" => $timestamp, "url" => $url, "signature" => $signature, "rawString" => $string ); return $signPackage; } public 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 应该全局存储与更新,以下代码以写入到文件中做示例 //echo $_SERVER['DOCUMENT_ROOT']; $data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT']."/static/yejuzhi/js/access_token.json")); // var_dump($data->expire_time);die; 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?type=jsapi&access_token={$accessToken}"; $res = json_decode($this->httpGet($url)); $ticket = $res->ticket; if ($ticket) { $data->expire_time = time() + 7000; $data->jsapi_ticket = $ticket; $fp = fopen($_SERVER['DOCUMENT_ROOT']."/static/yejuzhi/js/access_token.json", "w"); fwrite($fp, json_encode($data)); fclose($fp); } } else { $ticket = $data->jsapi_ticket; } return $ticket; } public function getAccessToken() { // access_token 应该全局存储与更新,以下代码以写入到文件中做示例 $data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT']."/static/yejuzhi/js/access_token.json")); 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 = json_decode($this->httpGet($url)); $access_token = $res->access_token; if ($access_token) { $data->expire_time = time() + 7000; $data->access_token = $access_token; $fp = fopen($_SERVER['DOCUMENT_ROOT']."/static/yejuzhi/js/access_token.json", "w"); fwrite($fp, json_encode($data)); fclose($fp); } } else { $access_token = $data->access_token; } return $access_token; } public function httpGet($url){ $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 500); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_URL, $url); $res = curl_exec($curl); curl_close($curl); return $res; } }
4、PHP文件配置
这里我是以TP5.1框架写的,大家可以自行设置
$wx = new WeChatClass();$sign = $wx->getSignPackage();$this->assign('sign',$sign);
5、前端HTML代码
前端HTML代码请参考开发文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#11
关于PHP实现微信自定义的方式问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
开发
配置
接口
信息
公众
开发者
安全
代码
域名
密码
问题
方式
前端
文件
更多
制作
帮助
解答
易行
成功
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
w7微软数据库
长安区委网络安全
小学生自主软件开发
网吧服务器机子怎么样
相城区正规软件开发口碑推荐
2016三级网络技术重点
大学生加强网络安全
竹山专业软件开发诚信为本
网络安全细分市场厂商
安卓手机软件开发教程
内蒙古网络安全文件
数据库的mdf的安全权限
单片机软件开发的工作是什么
本地文本类型数据库
怎么关闭服务器自带的杀毒软件
bak文件如何还原数据库
网络安全技术的好处
wind数据库怎么多选
北辰区电子网络技术诚信合作
南通大学网络安全学院
云米科技互联网
淘宝使用的服务器
网络安全防威胁厂商
红旗服务器
网络安全宣传朋友圈
网络安全管理和信息化建设
网络安全知识学习班会
ps5总是连接不到游戏服务器
怎么关闭服务器自带的杀毒软件
怀柔区管理网络技术服务怎么样