>백엔드 개발 >PHP 튜토리얼 >PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

小云云
小云云원래의
2018-02-22 09:25:182921검색

3년 전에 WeChat 계정을 등록한 것으로 밝혀졌는데, 백그라운드 작업을 "구독 계정"에서 "서비스 계정"으로 변경할 수 없었습니다. 즉시 Tencent 고객 서비스에 문의했습니다. mm. 업그레이드할 수 없는 WeChat 계정의 경우 재등록만 가능하다고 들었습니다.---"*#*(*\\\K30#$e)". , 재등록만 가능합니다. 등록부터 내부 요구사항, 개발 그래픽 요약까지 살펴보겠습니다. <br>

1단계: WeChat 등록

WeChat 공식 계정 공식 웹사이트: https://mp.weixin.qq.com, 등록을 클릭하세요

PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

위 그림과 같이 WeChat ID는 이메일로 등록되며, 각 이메일 주소는 서비스 계정, 구독 계정, 기업 계정 중 한 가지 유형의 계정에만 신청할 수 있습니다.

      • 기본정보

      • 이메일 활성화

      • 유형 선택

      • 정보 등록

      • 공개 계정 정보

안내에 따라 회사 정보를 입력하세요. 시간 우리는 인증 서비스 번호 옵션을 선택했습니다:

PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

서비스 번호를 인증하려면 연간 300위안을 지불해야 합니다. 이 단계는 조금 더 번거롭습니다. 재무 부서에서 지불하고, 영업일 기준 7일을 기다리고 송장을 우편으로 보내는 등의 작업을 수행합니다.

WeChat의 인증은 Tencent의 공식 인증이 아니라 클라이언트의 제3자 인증이라는 점에 유의해야 합니다. 처음에는 이와 상당히 달랐습니다.

PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

인증 완료 후 인증정보는 다음과 같습니다. (중간 스캐닝업체 사업자등록증, 인증계약서 스캐닝 및 직인 날인 등의 세부사항은 생략)

PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

WeChat 인증 후(금색 체크 표시가 있는 것이 이번에 개발된 WeChat입니다):

                                                     ~                PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림                      한 가지는 WeChat의 공식 문서, API 및 데모 샘플 코드를 살펴보는 것입니다. 우회 위험을 줄입니다. PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림참고: 원래 인기 있는 WeChat 개발 서적을 여러 권 읽을 계획이었지만 나중에 시간 문제로 인해 포기했습니다.

WeChat 백엔드에 로그인하고 왼쪽의 "개발자 센터"를 클릭하면 오른쪽에 나타나는 "Developer Documents" 및 "

Online Interface Debugging Tool

"이 문서와 API입니다. WeChat에서 공식적으로 제공하는 Sharp 도구는 개발 과정에서 여러 번 반복적으로 사용됩니다. 이 두 가지는 매우 중요한 정보입니다.

공식 계정 "개발자 센터"에 AppID와 AppSecret을 적어두세요. 나중에 여러번 사용하게 될 것입니다. PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

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

PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

<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:微信开发

首先,结合业务特点,规划微信底部的自定义菜单。

PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

小技巧:自定义菜单不用写代码,用微信官方自带的调试页面即可完成。

 

规划好自定义菜单后,POST JSON到微信服务器,可直接使用微信公众平台接口调试工具

PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

保存生成的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,既完成账号绑定。

PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

后面的多个功能,通过这个表,可从微信的OpenID获得GCDN ID,继而可以使用GCDN论坛中的个人信息。

 

每日签到功能

打开论坛页面,在底部可看到目前GCDN使用的引擎较早,是Discuz!NT 3.6.711版本,故X3.1版本中时尚的签到功能是没有的。针对这个遗憾,本次微信开发做了弥补:用户可通过微信的签到完成这个功能。

PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

 

GCDN回帖微信通知

这是另外一个特色功能:无需操作,只需要绑定GCDN账号,当你在GCDN的发帖有人回复时,会自动收到微信通知。

这个功能的开发,主要是为了还GCDNer的一个期待:在《2013年葡萄城控件用户满意度调查》,论坛用户对此类功能呼声很高,“谢谢你们的努力和尽职尽责,我希望GCDN回帖及时些,最好有及时的短信通知功能,省的我时不时的刷新GCDN页面,催促你们!”--某GCDN用户。

 

实现思路如下图所示:

PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

 

微信通知用户,刚开始想的是文本通知,结果发现微信公众号的政策:如果用户未在24小时内主动和微信互动,则无法用文本通知用户。想到另外一个变通的办法,各大银行的余额动态通知功能。接着仔细找微信提供的功能,原来这种功能是“微信模板消息”。

PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

 

这段文档关于微信的模板消息写的很详细:

为了保证用户不受到骚扰,在开发者出现需要主动提醒、通知用户时,才允许开发者在公众平台网站中模板消息库中选择模板,选择后获得模板ID,再根据模板ID向用户主动推送提醒、通知消息。

约花了半天时间,开发出的功能效果看起来还不错(用户是否在24小时内主动联系,均可发送模板消息),截图如下:

PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림

如想配置这个功能,通过回复文字指令。

    • 回复"取消提醒": 自动关闭微信通知提醒

    • 回复"开通提醒":自动开通微信通知提醒(需要你绑定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 기능의 반복은 비트 단위로 전달됩니다.

관련 추천:

springmvc 통합 jfinal WeChat WeChat 서비스 계정 개발

위 내용은 PHP를 사용하여 WeChat 서비스 계정을 개발하는 그림의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.