Heim  >  Artikel  >  Backend-Entwicklung  >  Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

小云云
小云云Original
2018-02-22 09:25:182823Durchsuche

Es stellte sich heraus, dass ich vor 3 Jahren ein WeChat-Konto registriert hatte, der Hintergrundvorgang jedoch nicht von „Abonnementkonto“ auf „Dienstkonto“ geändert werden konnte. Der Kundenservice war ziemlich begeistert. mm hat mir geduldig mitgeteilt, dass das System aktualisiert wurde. Für WeChat-Konten, die nicht aktualisiert werden können, können Sie sich nur nach einer Weile erneut registrieren Um verrückt zu werden, können Sie sich nur erneut registrieren. Beginnen wir mit der Registrierung über die Diskussion der internen Anforderungen bis hin zur grafischen und textlichen Zusammenfassung der Entwicklung. <br>

Schritt 1: WeChat-Registrierung

Klicken Sie auf der offiziellen Website des öffentlichen WeChat-Kontos: https://mp.weixin.qq.com registrieren

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

Wie im Bild oben gezeigt, wird die WeChat-ID per E-Mail registriert. Jede E-Mail kann nur für eine Art von Konto gelten: Dienstkonto, Abonnementkonto oder Unternehmenskonto.

      • Grundlegende Informationen

      • E-Mail-Aktivierung

      • Typ auswählen

      • Informationsregistrierung

      • Öffentliche Kontoinformationen

Geben Sie das Unternehmen ein Gemäß den Anweisungen hier Geben Sie einfach die Informationen ein. Diesmal haben wir die Option Zertifizierte Servicenummer gewählt:

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

In der Reihenfolge Um die Servicenummer zu authentifizieren, müssen Sie 300 Yuan/Jahr bezahlen. Dieser Schritt ist etwas mühsamer: finanzielle Zahlung, 7 Werktage warten, Rechnung verschicken usw.

Es ist zu beachten, dass die Zertifizierung von WeChat nicht offiziell von Tencent stammt, sondern von einem Dritten seines Kunden. Das war am Anfang ganz anders.

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

Nach Abschluss der Zertifizierung lauten die Zertifizierungsinformationen wie folgt (überspringen Sie den Zwischenscan der Geschäftslizenz des Unternehmens). , scannen und stempeln Sie das offizielle Siegel des Zertifizierungsprotokolls und andere Details):

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

Authentifizierter WeChat (der mit dem goldenen Häkchen ist der Diesmal wurde WeChat entwickelt):

 Illustration der Entwicklung eines WeChat-Dienstkontos mit PHPIllustration der Entwicklung eines WeChat-Dienstkontos mit PHP

Schritt 2: WeChat-Dokumentation & API-Lernen

Die WeChat-Entwicklung ist dasselbe wie das Erlernen der Verwendung des ComponentOne-Steuerelements. Als Erstes müssen Sie die offizielle WeChat-Dokumentation, die API und den Demo-Beispielcode lesen kann das Risiko von Umwegen deutlich reduzieren.

Hinweis: Ich hatte ursprünglich vor, mehrere beliebte WeChat-Entwicklungsbücher zu lesen, habe es aber später aus Zeitgründen aufgegeben.

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

Melden Sie sich im WeChat-Backend an, klicken Sie links auf „Entwicklercenter“ und „Entwicklerdokumentation“ wird angezeigt Das richtige „Online-Schnittstellen-Debugging-Tool“ ist das von WeChat offiziell bereitgestellte Dokument und API-Tool, das wiederholt und oft verwendet wird.

Notieren Sie im offiziellen Konto „Developer Center“ die AppID und das AppSecret, die später viele Male verwendet werden.

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

Das offizielle Dokument von WeChat, lesen Sie es zuerst von oben nach unten:

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

在文档的开始,微信官方就提供了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

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

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

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

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

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

 

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

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

保存生成的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>            }]

                                                                    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>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> }, <br> 🎜>           "Schlüssel": "102"                                                               🎜>                                                                                                        <br> }<br>

                                                                                                                                                                                > 🎜> „name“: „Informationsabfrage“ ; "106"                                                                                                                                                                                                        "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><br><br><br><br><br><br><br> <br><br>Hinweis: Nach dem Erstellen des <br>benutzerdefinierten Menüs<br> aufgrund von WeChat-Kunden wird es auf dem Client zwischengespeichert und es dauert 24 Stunden, bis es auf dem WeChat-Client angezeigt wird. Es wird empfohlen, beim Testen zu versuchen, dem öffentlichen Konto nicht mehr zu folgen und ihm erneut zu folgen. Nach der Erstellung können Sie den Effekt sehen. <br><br>Als nächstes fahren wir mit der Kernfunktionsentwicklung fort. <br><br>Der Kern des WeChat-Dienstkontos dreht sich um die GCDN-Community, daher verfügt das Untermenü „GCDN-Community“ über 5 sekundäre Menüs, darunter die Funktionen „Täglicher Check-in“, „Informationsabfrage“, „Meine Beiträge“ und „Geschenkeinlösung“. um an Ihr eigenes erstes <br>GCDN-Konto<br>GCDN-Konto gebunden zu sein. <br><br><br><br><br>

依据上面的逻辑,绑定GCDN账号是前提环节,故需要开发绑定功能。 绑定功能,做了一个页面,通过a标签跳转,用户在输入用户名、密码后进行GCDN鉴权验证,验证通过存储在表:包含GCDN ID、微信的OpenID,既完成账号绑定。

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

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

 

每日签到功能

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

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

 

GCDN回帖微信通知

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

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

 

实现思路如下图所示:

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

 

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

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

 

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

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

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

Illustration der Entwicklung eines WeChat-Dienstkontos mit PHP

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

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

    • 回复"开通提醒":自动开通微信通知提醒(需要你绑定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 Die Gefahr des Pfadfehlers, PHPStorm bietet genügend intelligente Wahrnehmung, sollte beachtet werden.

  • include_onece Der Pfad sollte in einfachen Anführungszeichen stehen, nicht in doppelten Anführungszeichen

  • Teamwork: Wenn Menschen zusammenarbeiten, können Berge versetzen. Die Iteration der WeChat-Funktionen wird Stück für Stück kommuniziert.

Verwandte Empfehlungen:

springmvc integrierte jfinal WeChat WeChat-Dienstkontoentwicklung

Das obige ist der detaillierte Inhalt vonIllustration der Entwicklung eines WeChat-Dienstkontos mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn