1단계: WeChat 등록
WeChat 공식 계정 공식 웹사이트: https://mp.weixin.qq.com, 등록을 클릭하세요
위 그림과 같이 WeChat ID는 이메일로 등록되며, 각 이메일 주소는 서비스 계정, 구독 계정, 기업 계정 중 한 가지 유형의 계정에만 신청할 수 있습니다.
기본정보
이메일 활성화
유형 선택
정보 등록
공개 계정 정보
안내에 따라 회사 정보를 입력하세요. 시간 우리는 인증 서비스 번호 옵션을 선택했습니다:
서비스 번호를 인증하려면 연간 300위안을 지불해야 합니다. 이 단계는 조금 더 번거롭습니다. 재무 부서에서 지불하고, 영업일 기준 7일을 기다리고 송장을 우편으로 보내는 등의 작업을 수행합니다.
WeChat의 인증은 Tencent의 공식 인증이 아니라 클라이언트의 제3자 인증이라는 점에 유의해야 합니다. 처음에는 이와 상당히 달랐습니다.
인증 완료 후 인증정보는 다음과 같습니다. (중간 스캐닝업체 사업자등록증, 인증계약서 스캐닝 및 직인 날인 등의 세부사항은 생략)
WeChat 인증 후(금색 체크 표시가 있는 것이 이번에 개발된 WeChat입니다):
~ 한 가지는 WeChat의 공식 문서, API 및 데모 샘플 코드를 살펴보는 것입니다. 우회 위험을 줄입니다. 참고: 원래 인기 있는 WeChat 개발 서적을 여러 권 읽을 계획이었지만 나중에 시간 문제로 인해 포기했습니다.
WeChat 백엔드에 로그인하고 왼쪽의 "개발자 센터"를 클릭하면 오른쪽에 나타나는 "Developer Documents" 및 "
Online Interface Debugging Tool"이 문서와 API입니다. WeChat에서 공식적으로 제공하는 Sharp 도구는 개발 과정에서 여러 번 반복적으로 사용됩니다. 이 두 가지는 매우 중요한 정보입니다.
공식 계정 "개발자 센터"에 AppID와 AppSecret을 적어두세요. 나중에 여러번 사용하게 될 것입니다.
WeChat 공식 문서, 먼저 위에서 아래로 읽어보세요:
在文档的开始,微信官方就提供了PHP示例代码,下载地址。 且其明确的告之,微信公众号接口只支持80接口.
官方文档写的非常细,如获取access token是基于HTTP请求,用的是GET方式,其他的文档请直接参阅文档:
access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
http请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
<br>
备注:access_token的有效时间是7200s,既需要自行做一个缓存,2小时刷新一次access_token; 我在这里用的是文件的缓存方式,添加了时间戳。
<br>
Step3:开发环境搭建
这节,我们着手搭建环境。
首先选择http://git.oschina.net 搭建源码托管环境,OSC提供了免费的私有项目,配合使用TortoiseGit-1.8.11.0-64bit,使得搭建源码托管环境非常简单。另外,其在国内访问Git速度超快(赞一个!)
接着安装软件,配置电脑开发环境:
Windows 8.1 64位 中文版
JetBrains PhpStorm 8.0.2
SQL Server 2008
PHP 5
为了方便测试,和公司网管沟通,把微信的***.gcpowertools.com.cn/ 80端口映射到我的局域网电脑。事后证明,这种本地调试方法非常高效,极大了提高了开发、调试效率。最后,为了方便调试微信数据,需要写log进行日志呈现,这里我使用的是读写文件的方式。
function writeLogBegin($msg = "begin log..............")
{
$logFile = date('Y-m-d') . '.txt';
$msg = date('Y-m-d H:i:s') . ' >>> ' . $msg . "\r\n";
file_put_contents("c:\\log.txt", $msg);
}
Step4:微信开发
首先,结合业务特点,规划微信底部的自定义菜单。
小技巧:自定义菜单不用写代码,用微信官方自带的调试页面即可完成。
规划好自定义菜单后,POST JSON到微信服务器,可直接使用微信公众平台接口调试工具。
保存生成的access_token, 类似如下的文本:
vU2rq8nzdXZWmcS3jO1OAZzRL5dnm3OIlsPF8ZCKHkTGfrG8f87QpwYa4mBpkTvnuy0pQJsfyq_L5xLIqPSoIBIqdsVAaKOuEgBrPpQ4
接着选择“自定义菜单”,输入刚才保存的access_token,输入如下的JSON字符串:
{ <br> "button":[ <br> { <br> "name":"学习中心", <br> "sub_button":[ <br> { <br> "type":"click", <br> "name":"联系葡萄城", <br> "key":"101" <br> }]
ㅋㅋㅋ .weixin.qq.com/connect/oauth2/authorize?appid=wx9665cf3fcdaee2f1&redirect_uri=http:// www.gcpowertools.com.cn&response_type=code&scope=snsapi_base&state=118#wechat_redirect"<br> 유형: "보기", "이름":"최신 버전", "url": "<br>https://open.weixin. qq.com/connect/oauth2/authorize?appid=wx9665cf3fcdaee2f1&redirect_uri=http:// www.gcpowertools.com.cn&response_type=code&scope=snsapi_base&state=118#wechat_redirect"<br> <br> "이름":"금메달 서비스 쿼리", "키" : "102" ""키 ":"103 "<br>} <br>ㅋㅋㅋ " type":"클릭", "유형":"클릭", "이름":"내 게시물", "이름":"인기 Q&A",
"key":"10 7" <br> 'url":"<br>https: //open.weixin.qq.com/connect/oauth2/authorize? appid=wx9665cf3fcdaee2f1&redirect_uri=http://www.gcpowertools.com.cn&response_type=code&scope=snsapi_base&state=118#wechat_redirect"<br> ~ <br>참고: Create<br>맞춤 메뉴 <br>이후 WeChat 클라이언트 캐싱으로 인해 WeChat 클라이언트가 표시되는 데 24시간이 소요됩니다. 테스트하실 때 공개 계정을 언팔로우 하신 후 다시 팔로우를 시도해 보시고 생성 후 효과를 확인하시는 것을 추천드립니다. <br><br>다음으로 핵심기능 개발을 진행합니다. <br><br>WeChat 서비스 계정의 핵심은 GCDN 커뮤니티를 중심으로 이루어지기 때문에 "GCDN 커뮤니티" 하위 메뉴에는 5개의 보조 메뉴가 있으며 그 중 일일 체크인, 정보 조회, 내 게시물 및 선물 교환 기능이 바인딩되어야 합니다. 나만의 <br>GCDN 계정<br> GCDN 계정. <br><br><br><br><br><br>
依据上面的逻辑,绑定GCDN账号是前提环节,故需要开发绑定功能。 绑定功能,做了一个页面,通过a标签跳转,用户在输入用户名、密码后进行GCDN鉴权验证,验证通过存储在表:包含GCDN ID、微信的OpenID,既完成账号绑定。
后面的多个功能,通过这个表,可从微信的OpenID获得GCDN ID,继而可以使用GCDN论坛中的个人信息。
每日签到功能
打开论坛页面,在底部可看到目前GCDN使用的引擎较早,是Discuz!NT 3.6.711版本,故X3.1版本中时尚的签到功能是没有的。针对这个遗憾,本次微信开发做了弥补:用户可通过微信的签到完成这个功能。
GCDN回帖微信通知
这是另外一个特色功能:无需操作,只需要绑定GCDN账号,当你在GCDN的发帖有人回复时,会自动收到微信通知。
这个功能的开发,主要是为了还GCDNer的一个期待:在《2013年葡萄城控件用户满意度调查》,论坛用户对此类功能呼声很高,“谢谢你们的努力和尽职尽责,我希望GCDN回帖及时些,最好有及时的短信通知功能,省的我时不时的刷新GCDN页面,催促你们!”--某GCDN用户。
实现思路如下图所示:
微信通知用户,刚开始想的是文本通知,结果发现微信公众号的政策:如果用户未在24小时内主动和微信互动,则无法用文本通知用户。想到另外一个变通的办法,各大银行的余额动态通知功能。接着仔细找微信提供的功能,原来这种功能是“微信模板消息”。
这段文档关于微信的模板消息写的很详细:
为了保证用户不受到骚扰,在开发者出现需要主动提醒、通知用户时,才允许开发者在公众平台网站中模板消息库中选择模板,选择后获得模板ID,再根据模板ID向用户主动推送提醒、通知消息。
约花了半天时间,开发出的功能效果看起来还不错(用户是否在24小时内主动联系,均可发送模板消息),截图如下:
如想配置这个功能,通过回复文字指令。
回复"取消提醒": 自动关闭微信通知提醒
回复"开通提醒":自动开通微信通知提醒(需要你绑定GCDN账号)
上面的开发过程,用到的PHP的 curl 实现HTTP GET、POST请求的源码:
/** * @param $url * @param null $data * @return mixed */ function https_request($url, $data = null) { // 模拟提交数据函数 $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在 curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer if (!empty($data)) { curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包 } curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 $tmpInfo = curl_exec($curl); // 执行操作 if (curl_errno($curl)) { echo 'Errno' . curl_error($curl);//捕抓异常 } curl_close($curl); // 关闭CURL会话 return $tmpInfo; // 返回数据 }
雷区:如果你所在电脑有代理,务必添加如下代码:
//使用网络代理begin curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_PROXY, '192.168.0.1'); //替换代理地址 curl_setopt($curl, CURLOPT_PROXYPORT, '880'); //替换代理端口 curl_setopt($curl, CURLOPT_PROXYTYPE, 'HTTP'); curl_setopt($curl, CURLOPT_PROXYUSERPWD, 'grapecity/r:r'); //替换代理用户名 //使用网络代理end<br>Step5:开发总结
近2个月的开发时间,投入了约1.5人,粗略估算有3个人月开发投入。
少数的几次非控件业务的研发,主要为了方便GCDN社区用户的使用,桥接微信、GCDN。
选择使用PHP脚本语言不错,微信官方用PHP作为默认微信开发脚本,另外PHP开发微信的博客非常多。
完整项目经验很重要:“坑才是大爱!”
坑的定义:有时候没有问题,有时候有问题。100%有问题的,不叫坑,叫bug。
Git利器: 协作开发,牛!
include_onece 경로 오류의 함정인 PHPStorm은 충분한 지능적 인식을 제공하므로 주의를 기울여야 합니다.
include_onece 경로에 작은따옴표를 사용하고 큰따옴표를 사용하지 마세요
팀워크: 사람들이 함께 일하면 산도 움직일 수 있습니다. WeChat 기능의 반복은 비트 단위로 전달됩니다.
관련 추천: