我亏一点 - 微信
type: channel
link: https://www.000081.xyz/index.php/tag/微信/
items: PHP 微信公众号对接学习记录

PHP 微信公众号对接学习记录
type: item
date: 2023-02-09T06:41:21+00:00
description: AI摘要 本文记录了使用PHP对接微信公众平台的开发过程，涵盖了服务器通信验证、access_token的获取与缓存管理、接收用户消息（XML解析）以及被动回复消息（包括文本及超链接）的实现方法，为开发者提供了基础的对接框架与代码示例。 此内容根据文章生成，仅用于文章内容的解释与总结 PHP开发微信公众平台0.微信公众平台官方文档https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.htmlhttps://res.wx.qq.com/op_res/-serEQ6xSDVIjfoOHcX78T1JAYX-pM_fghzfiNYoD8uHVd3fOeC0PC_pvlg4-kmP1.配置与微信服务器的通信1.打开微信公众平台，获取并写入基本信息index.php文件<?php // 微信公众平台基本信息 $token = 'xxxx'; $AppID = 'wx64xxxxxxxxxf014'; $AppSecret = 'd9bxxxxxxxxxxxxxxxxxxxc2'; ?>2.验证消息是否来自微信服务器index.php文件<?php // 微信公众平台基本信息 $token = 'xxxx'; $AppID = 'wx64xxxxxxxxxf014'; $AppSecret = 'd9bxxxxxxxxxxxxxxxxxxxc2'; // 验证消息是否来自微信服务器 // 计算signature微信加密签名，并且与微信请求字段的signature进行值对比，从而证明消息来自微信服务器 if(!empty($_GET['echostr'])){ // 微信通信请求字段 $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $echostr = $_GET['echostr']; // 将token，timestamp，nonce三个字段合为一个数组，并且按照字典排序 $arr = array($token, $timestamp, $nonce); sort($arr,SORT_STRING); // 将数组内容拼接为一个字符串 $str = implode($arr); // 将拼接后的字符串内容进行sha1加密 $sign = sha1($str); // 与微信服务器请求的signature字段内容进行对比，则证明是来自微信服务器的消息 if($sign == $signature){ //将echoStr字段的值返回给微信 echo $echostr; }else{ // 内容不一样则退出 return false; } } ?>3.配置微信公众平台1.登入微信公众平台2.点击基本配置3.在“IP白名单” 点击查看，添加服务器IP地址4.在“服务器配置” 点击修改配置URL：网页地址Token：与php文件中的token一样EncodingAESKey：随机生成一个消息加解密方式：兼容模式5.点击提交-确定6.启用2.获取access_tokenaccess_token有效期为两小时，所以1.5小时就重新刷新获取一次access_tokenaccess_token每天请求上线为2000次，每次请求都获取一次access_token，可以将当前access_token缓存在本地文件1.获取access_token架构：本地没有保存access_token的文件，获取access_token，并且保存在文件本地有保存access_token点文件：判断access_token是否过期：过期了，重新获取access_token，保存替换文件没有过期，直接使用2.创建get_access_token.php文件get_access_token.php文件<?php // 文件名 $file = "access_token.dao"; // access_token获取地址，修改appid和secret $get_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx6xxxxxxxxx014&secret=d9bxxxxxxxxxxxxxxxxxx76c2"; // access_token $access_token = ""; function get_access_token(){ // 引用全局变量 global $file,$get_url,$access_token…