Maison  >  Article  >  développement back-end  >  Illustration du développement d'un compte de service WeChat avec PHP

Illustration du développement d'un compte de service WeChat avec PHP

小云云
小云云original
2018-02-22 09:25:182824parcourir

Il s'est avéré que j'avais un compte WeChat enregistré il y a 3 ans, mais l'opération en arrière-plan n'a pas pu être modifiée de « compte d'abonnement » à « compte de service ». J'ai immédiatement contacté le service client de Tencent. mm m'a patiemment dit que le système avait été mis à jour, pour les comptes WeChat qui ne peuvent pas être mis à niveau, vous ne pouvez vous réinscrire que ---- "*#*(*¥)¥K30#$e)". de devenir fou, vous ne pouvez que vous réinscrire. Commençons par l'inscription, la discussion sur les exigences internes, jusqu'au résumé graphique et textuel du développement. <br>

Étape 1 : Inscription WeChat

Sur le site officiel du compte public WeChat : https://mp.weixin.qq.com, cliquez pour s'inscrire

Illustration du développement dun compte de service WeChat avec PHP

Comme le montre l'Illustration du développement dun compte de service WeChat avec PHP ci-dessus, l'identifiant WeChat est enregistré par e-mail. Chaque e-mail ne peut demander qu'un seul type de compte : compte de service, compte d'abonnement ou compte d'entreprise.

      • Informations de base

      • Activation par e-mail

      • Sélectionner le type

      • Inscription des informations

      • Informations du compte public

Entrer dans l'entreprise selon les instructions ici Fournissez simplement les informations. Cette fois, nous avons choisi l'option de Numéro de service certifié :

Illustration du développement dun compte de service WeChat avec PHP

Dans l'ordre. pour authentifier le numéro de service, il faut payer 300 yuans/an, cette étape est un peu plus compliquée : effectuer le paiement auprès du service financier, attendre 7 jours ouvrés, envoyer la facture, etc.

Il est à noter que la certification de WeChat n'est pas officielle de Tencent, mais d'un tiers de son client. C'était bien différent au début.

Illustration du développement dun compte de service WeChat avec PHP

Après l'achèvement de la certification, les informations de certification sont les suivantes (ignorer l'analyse intermédiaire de la licence commerciale de l'entreprise , scannez et tamponnez le sceau officiel Protocole de certification et autres détails) :

Illustration du développement dun compte de service WeChat avec PHP

WeChat authentifié (celui avec la coche dorée est le WeChat développé cette fois) :

 Illustration du développement dun compte de service WeChat avec PHPIllustration du développement dun compte de service WeChat avec PHP

Étape 2 : Documentation WeChat et Apprentissage de l'API

Le développement de WeChat revient à apprendre à utiliser le Contrôle ComponentOne La première chose que vous devez faire est de lire la documentation officielle de WeChat, l'API et l'exemple de code de démonstration. peut réduire considérablement les risques de détours.

Remarque : j'avais initialement prévu de lire plusieurs livres populaires sur le développement de WeChat, mais j'ai ensuite abandonné pour des raisons de temps.

Illustration du développement dun compte de service WeChat avec PHP

Connectez-vous au backend WeChat, cliquez sur « Centre des développeurs » à gauche et « Documentation pour les développeurs » apparaît sur à droite, "Outil de débogage d'interface en ligne" est le document et l'outil API officiellement fournis par WeChat. Au cours du processus de développement, ces deux informations sont très importantes.

Dans le compte officiel "Developer Center", notez l'AppID et l'AppSecret, qui seront utilisés plusieurs fois plus tard.

Illustration du développement dun compte de service WeChat avec PHP

Document officiel de WeChat, lisez-le d'abord de haut en bas :

Illustration du développement dun compte de service WeChat avec 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 du développement dun compte de service WeChat avec 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 du développement dun compte de service WeChat avec PHP

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

 

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

Illustration du développement dun compte de service WeChat avec 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>            }]

                                                                         "type": "view", <br> "name" ": "Dernières nouvelles", <br> "<br>https" 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> }, 🎜> "key": "102" 🎜> } <br>

                                                                                                                                                                                                      > "name": "Enregistrement quotidien", "key": "104" <br> }, <br> { "type": " ", "name": "Requête d'informations", <br> "key": "105" <br> "key": "105" }, <br> "type": "click", <br>          "name": "Mon message",                                                " key " : "106" <br> "key": "107" <br>                                                                      "url":"<br>https://open. /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>Remarque : Après avoir créé le <br>menu personnalisé<br>, en raison des clients WeChat, il est mis en cache sur le client et prend 24 heures pour être affiché sur le client WeChat. Il est recommandé que lors des tests, vous puissiez essayer de ne plus suivre le compte public et de le suivre à nouveau, et vous pourrez voir l'effet après la création. <br><br>Ensuite, nous procédons au développement fonctionnel de base. <br>

Le cœur du compte de service WeChat tourne autour de la communauté GCDN, donc le sous-menu « Communauté GCDN » comporte 5 menus secondaires, parmi lesquels les fonctions d'enregistrement quotidien, de requête d'informations, de mes publications et d'échange de cadeaux sont nécessaires. pour être lié à votre propre premier

compte GCDN<br>compte GCDN. <br><br><br><br>

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

Illustration du développement dun compte de service WeChat avec PHP

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

 

每日签到功能

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

Illustration du développement dun compte de service WeChat avec PHP

 

GCDN回帖微信通知

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

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

 

实现思路如下图所示:

Illustration du développement dun compte de service WeChat avec PHP

 

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

Illustration du développement dun compte de service WeChat avec PHP

 

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

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

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

Illustration du développement dun compte de service WeChat avec 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 Il convient de prêter attention au piège de l'erreur de chemin, PHPStorm fournit une perception suffisamment intelligente.

  • include_onece Le chemin doit être entre guillemets simples et non entre guillemets doubles

  • Travail d'équipe : lorsque les gens travaillent ensemble, les montagnes peuvent bouger. L'itération des fonctions WeChat est communiquée petit à petit.

Recommandations associées :

springmvc a intégré le développement du compte de service jfinal WeChat WeChat

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn