Heim  >  Artikel  >  Backend-Entwicklung  >  PHP WeChat öffentliche Plattformentwicklung WeChat-Gruppen-Messaging-Beispielfreigabe

PHP WeChat öffentliche Plattformentwicklung WeChat-Gruppen-Messaging-Beispielfreigabe

墨辰丷
墨辰丷Original
2018-06-01 11:33:142831Durchsuche

Dieser Artikel stellt hauptsächlich die von PHP WeChat entwickelte öffentliche Plattform vor. Interessierte Freunde können sich darauf beziehen

Das Senden von Gruppennachrichten im offiziellen WeChat-Konto ist abgeschlossen. Füllen Sie hier einfach den einfachen Textversand aus. Sie können auch Sprachbilder usw. senden, das Datenformat ist jedoch unterschiedlich. Unten finden Sie einen Link zum Abfragen des Datensendeformats des Datentyps.

2. Der Prozess des Versendens von Gruppentextnachrichten

Besorgen Sie sich ein öffentliches Testkonto (diejenigen, die ein Konto haben, benötigen kein Testkonto, aber formelle Konten haben mehr Einschränkungen). Benutzer folgen dem oben genannten öffentlichen Konto. Das Konto erhält unser access_token über appid und appsecret und sendet Gruppentextnachrichten über access_token

3. Holen Sie sich ein öffentliches Testkonto + folgen Sie dem öffentlichen Konto

1), erhalten Sie ein öffentliches Testkonto

Greifen Sie auf den Link oben zu und wählen Sie „Interface Test Number Application“, um es direkt zu öffnen

http://mp.weixin.qq.com/ debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

Scannen Sie den QR-Code, um sich über den WeChat-Client anzumelden.

Nach dem Anmelden können Sie die Informationen eines öffentlichen Testkontos abrufen. Es gibt hauptsächlich zwei Parameter, appId und appsecret, die ein offizielles Konto eindeutig identifizieren und als Parameter verwendet werden müssen, um die Informationen des Benutzers zu erhalten. ,

2) Schnittstelleninformationen konfigurieren

Für diesen Schritt können Sie sich auf die WeChat-Zugriffsanweisungen beziehen. Diese Seite bietet einen PHP-Beispiel-Download Sehr einfach und grundsätzlich: Ändern Sie einfach das benutzerdefinierte TOKEN und legen Sie dann die Überprüfungsseite auf Ihrem eigenen Server ab.

Hier gebe ich ein Beispiel dafür, was ich getan habe:

Bereiten Sie Ressourcen vor:

Domainname + Leerzeichen (meiner ist Sae-Leerzeichen + Wanwang-Domainname), PHP nur zur Überprüfung Ich habe eine wx_sample.php

wx_sample.php

<?php
/**
* wechat php test
*/

//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();

class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];

//valid signature , option
if($this->checkSignature()){
echo $echoStr;
exit;
}
}

public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

//extract post data
if (!empty($postStr)){
/* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
the best way is to check the validity of xml by yourself */
libxml_disable_entity_loader(true);
$postObj = simplexml_load_string($postStr, &#39;SimpleXMLElement&#39;, LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>"; 
if(!empty( $keyword ))
{
$msgType = "text";
$contentStr = "Welcome to wechat world!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}

}else {
echo "";
exit;
}
}

private function checkSignature()
{
// you must define TOKEN by yourself
if (!defined("TOKEN")) {
throw new Exception(&#39;TOKEN is not defined!&#39;);
}

$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];

$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
// use SORT_STRING rule
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
return true;
}else{
return false;
}

}
}

?>

im Space-Stammverzeichnis erstellt, auf das die Datei

verweist, und dann das Konfigurationsinformations-Token ausgefüllt (muss mit dem übereinstimmen). wx_sample.php oben Das Token ist konsistent), URL (die Adresse von wx_sample.php)

und dann senden

Wenn die Eingabeaufforderung fehlschlägt, Bitte überprüfen Sie den Token und die URL. Wenn es sich um Ihren eigenen Domainnamen und -bereich handelt, registrieren Sie ihn bitte für Baidu Sae und Sina Sae. Sie müssen ihn selbst beantragen und die Zertifizierung bestehen (machen Sie einfach ein Foto von Ihrer Hand, die den Ausweis hält). und laden Sie es hoch, es ist sehr einfach, es dauert nur 2 Tage), dieser Schritt ist notwendig】

3) Konfigurieren Sie den Domänennamen für die Sicherheit der JS-Schnittstelle

Achten Sie darauf, kein Protokoll einzuschließen beim Ausfüllen dieses Domainnamens: http://www.sagosoft.com/ Dies ist eine URL, kein Domainname.

Der Domainname sollte ähnlich wie www.sagosoft sein .com [Andernfalls wird beim Zugriff auf WeChat js-sdk eine ungültige URL-Domäne angezeigt]

4) Folgen Sie dem öffentlichen Konto

Nur indem Sie der Öffentlichkeit folgen Konto kann der Benutzer die Anmeldung Dritter autorisieren und Benutzerinformationen erhalten, indem er den Link mit den öffentlichen Kontoinformationen öffnet. Daher müssen wir auch unseren WeChat verwenden, um der WeChat-ID zu folgen:

Es ist immer noch die Seite, die nach erfolgreicher Anmeldung angezeigt wird. Wir können sehen, dass die Seite einen QR-Code hat Sie können den QR-Code scannen. Wenn Sie dem QR-Code folgen, werden rechts in der „Benutzerliste“ weitere Benutzerinformationen angezeigt. Wie in der folgenden Abbildung gezeigt:

5) Konfigurieren Sie die Rückruffunktion

Wenn wir auf eine Webseite eines Drittanbieters zugreifen (d. h. unsere eigene Webseite) Auf dem WeChat-Client können wir den WeChat-Webseitenautorisierungsmechanismus verwenden. Wir benötigen nicht nur die zuvor erhaltenen App-IDs und Appsecrets, sondern auch die Domänennameneinstellungen für den Rückruf nach der Autorisierung, d der Benutzer autorisiert. Die spezifische Konfiguration ist wie folgt:

Auf der Seite gibt es gerade eine „Webseitenautorisierung zum Erhalten grundlegender Benutzerinformationen“. Klicken Sie auf die nachfolgende Änderung

um den Callback-Domänennamen einzugeben:

Der Domänenname ist der oben konfigurierte Stammdomänenname, wenn die URL, die Sie oben in den „Schnittstellenkonfigurationsinformationen“ eingegeben haben, zcr.sinaaappc.com/wx_sample ist. php, geben Sie hier einfach zcr.sinaaappc.com ein.

Wenn Ihre URL nicht auf der schwarzen Liste steht, wird sie oben angezeigt

Hinweis:

1、这里填写的是域名(是一个字符串),而不是URL,因此请勿加http://等协议头;
2、授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com无法进行OAuth2.0鉴权

到这里,我们就完成了公众号测试账号的获取和配置,已经用户关注微信公众号。

4、通过appid和appsecret获取我们的access_token

  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

参数说明:


返回说明

正常情况下,微信会返回下述JSON数据包给公众号:

复制代码 代码如下:

{"access_token":"ACCESS_TOKEN","expires_in":7200}

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):


复制代码 代码如下:

{"errcode":40013,"errmsg":"invalid appid"}

例子:

获取access_token:

复制代码 代码如下:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx4d1cb8dbd827a16e9&secret=d462d4c36b116795d1d99dcf0547af5443d

返回数据:


{
"access_token": "qR5UK2vMf5aTHV8e-uB10FZW0caTZm_1kbkUe4OPK2ILVvNaoa7pLzYWqLUAmx6Sjq1E7pKHrVAtuG0_1MPkqmDfOkm2750kaLWNk59DS-iDOpjjxompJtXa3WhbN5FKRWNhADAVAR",
"expires_in": 7200
}

5、通过access_token群发短信

  在公众平台网站上,为订阅号提供了每天一条的群发权限,为服务号提供每月(自然月)4条的群发权限。而对于某些具备开发能力的公众号运营者,可以通过高级群发接口,实现更灵活的群发能力。

请注意:

1、对于认证订阅号,群发接口每天可成功调用1次,此次群发可选择发送给全部用户或某个分组;
2、对于认证服务号虽然开发者使用高级群发接口的每日调用限制为100次,但是用户每月只能接收4条,无论在公众平台网站上,还是使用接口群发,用户每月只能接收4条群发消息,多于4条的群发将对该用户发送失败;
3、具备微信支付权限的公众号,在使用群发接口上传、群发图文消息类型时,可使用标签加入外链;
4、开发者可以使用预览接口校对消息样式和排版,通过预览接口可发送编辑好的消息给指定用户校验效果。

1)根据分组进行群发【订阅号与服务号认证后均可用】

调用接口:

复制代码 代码如下:

http请求方式: POSThttps://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN

在body添加如下数据(以JSON格式数据发送)——发送其他格式数据,只需要改里面参数信息即可,具体可查看微信官方文档:


{
"filter":{
"is_to_all":false,
"group_id":2
},
"text":{
"content":"CONTENT"
},
"msgtype":"text"
}

参数说明:

例子:发送给所有人

url:

复制代码 代码如下:

https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=KBoNONaJZ4-KhafQVJoQ6VBX0F-bls7nAsJBn8Fy7GLwav4Be1lRJcob1RHH6wW35IxxFwkJnZfnc-On9EQITg3oxEWUw7O2YyVW9naDknu6PQX9fnSmQcr8ojTK8Ug-HDTcAAABXN

发送的json数据:发送给所有人


{
"filter":{
"is_to_all":true
},
"text":{
"content":"CONTENT"
},
"msgtype":"text"
}

返回数据:

{
"errcode": 0,
"errmsg": "send job submission success",
"msg_id": 1000000003
}

参数意义:

错误码及其以及查询:

全局错误码解析

使用postman模拟https请求发送如下图所示:

2)根据OpenID列表群发【订阅号不可用,服务号认证后可用】

发送的http请求url:(注意:和上面的不同)


复制代码 代码如下:

http请求方式: POSThttps://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN

数据格式:


复制代码 代码如下:

{"touser":["OPENID1","OPENID2"],"msgtype": "text","text": { "content": "hello from boxer."}}

其中OPENID1和OPENID2是我们要发送的微信用户openId(用户的唯一标示)。

例子:

发送"oF3PcsnsrMiJzEwalZZbAfWQpxCI","oF3PcshH1CUIhR_WYau6swUiPzlw" 两个用户。

内容为:hello from boxer.欢迎来到百度

url:


复制代码 代码如下:

https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=wRyTbnsiu18ssEhMPLf4bDfeT-Bt6e6tgR4CQGVLBipRcyJPkdAKPYfM6-qkKuHUN8uRKJh6Xvm0OuAdFgqOo8Ru8hoDxl-cGc9bh-ezJb2ZUcJSnQk2s416zI8kbEOfOGYdAFARJB

json数据:


{
"touser":[
"oF3PcsnsrMiJzEwalZZbAfWQpxCI",
"oF3PcshH1CUIhR_WYau6swUiPzlw"
],
"msgtype": "text",
"text": { "content": "hello from boxer.<a href=&#39;http://www.seewoedu.com/&#39;>欢迎希沃学院</a>"}
}


返回数据:


{
"errcode": 0,
"errmsg": "send job submission success",
"msg_id": 3147483654
}


使用postman模拟发送请求如下:

微信号接收到的内容:

PHP WeChat öffentliche Plattformentwicklung WeChat-Gruppen-Messaging-Beispielfreigabe

致谢:感谢您的阅读!

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

PHP实现屏蔽关键字的方法
PHP实现的自定义数组排序函数与排序类的方法
PHP实现的自定义数组排序函数与排序类

Das obige ist der detaillierte Inhalt vonPHP WeChat öffentliche Plattformentwicklung WeChat-Gruppen-Messaging-Beispielfreigabe. 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