南瓜园

 找回密码
 注册
查看: 1184|回复: 0

白熊原创PHP开发微信公众号(微信开发者中心)

[复制链接]
发表于 2018-5-19 17:46:25 | 显示全部楼层 |阅读模式

微信开发者中心
启用微信公众平台开发者中心需要拥有自己的服务器资源,用于存放自己开发的程序文件。服务器可以是一个虚拟空间,也可以是云主机或云空间,只要这个空间支持程序的运行并且有域名或者拥有可有效访问的IP。在完成开发后,开发者需要把程序上传到服务器,这样才能被微信服务器访问到。
用户可以在新网、万网、新浪SAE云计算平台等互联网应用服务提供商处申请免费域名、空间或购买收费域名、空间使用。新浪SAE应用申请新浪云账号创建新浪云应用创建应用版本上传微信接口代码申请SAE中级认证微信开发者中心
接入微信公众平台进行开发,需要启用服务器、填写服务器配置信息、验证服务器地址的有效性,之后即可根据接口文档实现具体业务逻辑的开发工作。配置和启用服务器
第1步:登录微信公众平台(网址是https://www.mp.weixin.com),在左侧列表中最下方找到"开发"项,单击下面的"基本配置"项,之后右侧出现新的内容,单击下面的"成为开发者"按钮


第2步:单击"修改配置"按钮

单击"修改配置"按钮后,进入配置页面

第3步:填写配置信息,填写完毕后,单击"提交"按钮,进行验证

第4步:在弹出的提示框中,单击"确定"按钮

第5步:生成AppSecret

第6步:单击右下角"启用"按钮,启动服务器配置
如果单击"确定"按钮后,页面顶端提示"token"验证失败,可以重试几次,有时微信服务器不稳定会造成这种情况,并不是程序本身有问题。

单击"确定"按钮,确认启用服务器配置

启用服务器配置成功后的页面

消息体加解密实现
公众号消息加解密是公众平台为了进一步加强公众号安全保障,提供的新机制。开发者需注意,公众账号主动调用API的情况将不受影响。只有被动回复用户的消息时,才需要进行消息加解密。
启用加解密功能(即选择兼容模式或安全模式)后,公众平台服务器在向公众账号服务器配置地址(可在"开发者中心"修改)推送消息时,URL将新增加两个参数(加密类型和消息体签名),并以此来体现新功能,加密算法采用AES。
为了配合消息加密功能的上线,并帮助开发者适配新特性,公众平台提供了3种加解密的模式供开发者选择,即明文模式、兼容模式、安全模式(可在"开发者中心"选择相应模式),选择兼容模式和安全模式前,需在开发者中心填写消息加解密密钥EncodingAESKey。
· 明文模式:维持现有模式,没有适配加解密新特性,消息体明文收发,默认设置为明文模式
· 兼容模式:公众平台发送消息内容将同时包括明文和密文,消息包长度增加到原来的3倍左右;公众号回复明文或密文均可,不影响现有消息收发;开发者可在此模式下进行调试
· 安全模式(推荐):公众平台发送消息体的内容只含有密文,公众账号回复的消息体也为密文,建议开发者在调试成功后使用此模式收发消息配置失败常见问题与分析请求URL超时
这种情况一般是由于公众号服务器网速或响应速度慢,可以先重试几次或者过一段时间后再试,如果还是这样,则需要考虑更换速度更快、性能更好的服务器。系统发生错误,请稍后重试
这种情况一般是由于微信服务器短时间内异常引起的,重试或者过一段时间尝试即可。Token验证失败
这种情况需要具体分析验证过程被卡在哪一个环节了,可以通过调用$_SERVER来获取服务器和执行环境信息来分析。
这里需要使用以下两个元素:
· $_SERVER['REMOTE_ADDR']
来访者的IP,此处为微信服务器的IP
· $_SERVER['QUERY_STRING']
查询请求字符串,此处为微信服务器发过来的GET请求字符串
将以上两个变量记录到日志中,函数定义如下:
function traceHttp(){
$content=date('Y-m-d H:i:s')."\nREMOTE_ADDR:".$_SERVER['REMOTE_ADDR']."\nQUERY_STRING:".$_SERVER['QUERY_STRING']."\n\n";
$max_size=100000;
$log_filename='log.xml';
if(file_exists($log_filename) and (abs(filesize($log_filename))>$max_size)){
unlink($log_filename);
}
file_put_contents($log_filename,$content,FILE_APPEND);
}
上面的代码,在具有读写权限的空间下,使用file_put_contents()函数把字符串写到文件中。
然后在程序的数据处理之前调用该函数,记录信息,代码如下:
define('TOKEN','weixin');
traceHttp();
$wechatObj=new wechatCallbackapiTest();
if(isset($_GET['echostr'])){
$wechatObj->valid();
}else{
$wechatObj->responseMsg();
}
当我们提交URL和Token验证的时候,程序目录下应当生成一个log.xml文件,内容类似如下:
2014-5-9 11:09:27
REMOTE_ADDR:101.226.61.144
QUERY_STRING:signature=6e35c6f3d3279338781047dbffd09426b9ecdee3&echostr=5979420653038092664×tamp=1392001400&nonce=1392192345消息交互原理分析
从用户发送交互请求,到公众号的接收与回应,中间会经过微信服务器的处理,并最终将返回的内容送至客户端,整个消息的交互过程见下图:

具体的消息交互过程如下:
1 当普通用户向公众号发消息时,用户发送的消息首先会被发送到微信服务器上。
2 微信服务器将用户消息封装为XML数据包,然后将封装后的消息通过POST请求方式发送到公众号填写的URL所对应的服务器上。
3 公众号服务器接收到用户消息后进行处理,处理完消息后,将需要回复的消息封装为微信公众平台指定的XML数据包,将POST请求结果返回给微信服务器。
4 微信公众平台接收到POST请求结果后,再将公众号回复消息进行处理,并最终将回复内容返回给普通微信用户。
整个消息交互过程为一次完整的POST请求,如果微信服务器在5秒内收不到POST请求的响应就会断掉连接,并重新发起请求,总共重试三次。如果重试三次仍未得到公众号服务器的回复,微信服务器则会丢掉该普通用户发送的消息。因此,程序需要保证在5秒内回复POST请求给微信服务器。微信开发调试工具接口调试工具
微信公众平台提供了在线接口调试工具,网址为 。
该工具可以帮助开发者检测调用微信公众平台开发者API时发送的请求参数是否正确,提交相关信息后可获得服务器的验证结果。接口调试工具使用步骤
第1步:选择合适的接口
在接口类型和接口列表的下拉菜单中选择要调试的接口

第2步:系统会生成该接口的参数表,您可以直接在文本框内填入对应的参数值。(红色星号表示该字段必填)

第3步:点击检查问题按钮,即可得到相应的调试信息。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

请大家牢记南瓜园网址 www.nan2008.com

QQ|小黑屋|手机版|Archiver|南瓜园

GMT+8, 2024-11-23 12:40 , Processed in 0.080334 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表