Ich bin einESIch bin kein Meister oder großer Gott, aber ich hoffe, Lei Feng zu werden. Ohne Shenmas Schreiben werde ich mich einfach beschweren. Wenn die Erklärung nicht klar ist, können Sie weiterhin Fragen stellen. Ich werde mein Bestes geben, um sie zu beantworten.
Dieser Artikel stellt nicht den gesamten Quellcode des Systems bereit. Er wird nur einen Teil des Quellcodes öffnen und über die Entwicklungserfahrung, Ideen und Antworten auf Fragen sprechen Seien Sie für Anfänger hilfreich. Die Experten und Meister werden es sofort durchgehen. Vielen Dank, dass Sie Ihre wertvollen Kommentare hinterlassen haben.
Lass uns aufhören zu reden und zum Punkt kommen.
Grundlagen
phpAktueller MainstreamWEBEntwicklungssprache Unnötig Mehr muss man dazu nicht sagen. Die WeChat-Schnittstelle verwendet hauptsächlich die von WeChat autorisierte Anmeldeschnittstelle, die WeChat JSSDK-Freigabeschnittstelle und die WeChat-Zahlungsschnittstelle. Wir müssen uns über die Reihe von WeChat-Schnittstellen beschweren, die voller Fallstricke sind. Das Vertriebssystem ist ein Marketingmodell, das später erläutert wird. Lassen Sie uns zunächst über den ersten Schritt der WeChat-Anmeldung sprechen (oauth2Autorisierungsschnittstelle eines Drittanbieters), der meiner Meinung nach den Vorteil einer hohen Benutzererfahrung hat Sicherheit und kann als Vertriebssystem für die Zukunft verwendet werden. Der Nachteil besteht darin, dass der Zugriff nur im integrierten Browser von WeChat möglich ist . Sie können nur QR-Codes verwenden (es gibt viele Tools von Drittanbietern online, um QR-Codes in Form von Links zu generieren, und Sie können auch das Programm zur Implementierung verwenden. Wenn Sie interessiert sind, hinterlassen Sie bitte eine Nachricht).
Werfen Sie zunächst einen Blick auf das legendäre WeChat API-Schnittstellendokument , offizielle Website-Dokumentadresse http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
Für die Verwendung dieser Schnittstelle ist ein Authentifizierungsdienst erforderlich Wenn Sie noch keins haben, können Sie ein Testkonto beantragen, um es zu erleben, aber Sie können es nicht bewerben
Anweisungen zum Autorisierungs-Callback-Domainnamen der Webseite
Dokumentenerstellung Es ist relativ klar, dass Sie den Pfad konfigurieren müssen, über den das Projekt WeChat-Benutzerinformationen erhalten muss. Entweder eine oder zwei... Ebenendomäne Namen sind akzeptabel. Das ist relativ klar
Wenn ich nach unten schaue, habe ich es beim ersten Mal nicht verstanden, und beim zweiten Mal habe ich es nicht verstanden. . . . . . Die Entwicklung des Projekts begann damals noch einfacher als heute, und es gab nur sehr wenige Referenzmaterialien im Internet. Glücklicherweise fand ich schließlich einige Hinweise aus einem Artikel und es wurde erledigt. Ich werde mich darüber beschweren
Andere Anweisungen
Führen Sie zunächst einige Parameter einappid und appsecretDiese beiden Parameter finden Sie in vielen Schnittstellenaufrufen auf der öffentlichen WeChat-Plattform.
Der wichtigste Parameter ist auch der Zweck des Aufrufs der Autorisierungsschnittstelle, openid, die die einzige Identifizierung einer WeChat-ID darstellt, die der öffentlichen Plattform entspricht Da davon ausgegangen wird, dass sich der Benutzer mit WeChat angemeldet hat, werden alle nachfolgenden Geschäftsprozesse und Datenbankeinträge darauf aufgebaut.
Lassen Sie uns darüber sprechen, wie Sie die OpenID erhalten und grundlegende Benutzerinformationen wie Avatar, Spitzname, Stadt, Geschlecht usw. Es gibt so viele Schritte, die uns täuschen können , Rechts? Ich werde Ihnen aus Sicherheitsgründen einen Grund nennen. Tut mir leid, dass ich wieder jammere.
Drei Schritte
1Code abrufen, was ist Code? ? ? Ich weiß es nicht, aber ich muss es bekommen, um mit dem nächsten Schritt fortzufahren
Schnittstellenadresse: https://open.weixin.qq.com /connect/oauth2/authorize?appid =APPID&redirect_uri=REDIRECT_URI&resp/span>
appid wurde gerade verbessert und ist auf der öffentlichen Plattform zu finden. redirect_uri ist der entscheidende Punkt. Es ist der Durchgang des Benutzers durch die oben genannte Schnittstellenadresse, die eine Anfrage an den WeChat-Server sendet, und der WeChat-Server übergibt einen Parameter Code über GET und gibt es an redirect_uri zurück, verwenden Sie einfach die Methode $_GET, um es zu akzeptieren. scope ist ebenfalls ein wichtiger Parameter. Es gibt zwei Typen: snsapi_base, snsapi_userinfo, lassen Sie uns über den Unterschied sprechen. Wenn Sie nur die WeChat-Anmeldung implementieren möchten, benötigen Sie nur openid, dann verwenden Sie snsapi_base, Der Vorteil ist, dass der Benutzer beim Besuch nicht weiß, dass Sie seine openid erfasst haben. Zusätzlich zum Erfassen von openid können mit snsapi_userinfo auch weitere WeChat-Benutzerinformationen erfasst werden. Jetzt benötigen Sie einen Avatar und einen Spitznamen Sie können es also direkt verwenden snsapi_userinfo. Der Nachteil besteht darin, dass zuerst die WeChat-Autorisierungsseite angezeigt wird und Sie die Zustimmung des Benutzers einholen müssen, bevor Sie mit dem nächsten Schritt fortfahren
Wie gezeigt:
2. Holen Sie sich openid und access_token
über den soeben erhaltenen Code und appid und Appgeheim
Schnittstelle: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
gibt Daten im Format json
3Avatar-Spitznamen usw. erhalten...
über openid und access_token
Schnittstelle:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
gibt Daten im Format von json
Parameterlang verwendet standardmäßig englische Daten, wenn sie nicht geschrieben werden
Beispielcode-Snippet
a.php
$url='http://www.xxx.com/b.php';
$url=urlencode($url);
$href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxx&redirect_uri=$url&resp /span>
@header("location:$href");
b.php
$code=$_GET['code'];
$url='https://api.weixin.qq.com /sns/oauth2/access_token?appid=xxx&secret=xxx&code='.$code.'&grant_type=authorization_code';
$js/span>
$jsonstr = json_decode($jsonstr,true);
$access_token= $jsonstr['access_token'];
$openid=$ jsonstr['openid'];
$userurl='https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid=' .$openid;
$userinfo=file_get_contents($userurl);
$userinfo = json_decode($userinfo,true); >
Nun, es ist kaum erreicht. . . . . . . . . . Allerdings ist die Informationserfassung nach einer gewissen Zeit nicht stabil. Ich habe lange darüber nachgedacht, wo das Problem liegt ist
? ? ? ? ? Oh, es gibt ein Problem mit der Funktion file_get_contents
Obwohl es möglich ist, file_get_contents Es wurde implementiert, aber die Leistung war extrem instabil. Später wechselte ich zu Curl und es war viel stabiler, erreichte aber nicht 100 % um mehr zu erfassen Es wird durch verschiedene Faktoren verursacht, liegt aber grundsätzlich im akzeptablen Bereich.
Die heutige Zeit ist begrenzt. Es gibt eine andere Möglichkeit, das Verteilungssystem zu definieren, den WeChat-Benutzer-Avatar-Spitznamen und andere Informationen zu erhalten, ohne die Autorisierungsschnittstelle aufzurufen, unionidMehrfach öffentliche Plattformen Was während der Entwicklung benötigt wird: Cookie wird benötigt, um einen dauerhaften Anmeldestatus zu erreichen, und die Warenkorb-Implementierung des Mall-Teils des Vertriebssystem-Clients wird im zweiten Mal erläutert . Anbei finden Sie einen QR-Code für den Systemzugriffspfad. Sie können zunächst einen Blick darauf werfen. Der Zugriff ist nur über WeChat möglich. Sie können Fragen stellen, einschließlich der Systemarchitektur, Front-End-JS-Skripten und Implementierungsproblemen einer Reihe von Funktionsmodulen. Ich werde den Inhalt des nächsten Updates entsprechend den Anforderungen der meisten ändern Menschen Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne dessen Genehmigung verwendet werden.
Das Obige führt die geteilte Erklärung der WeChat-Verteilungsplattform ein, die von der PHP-WeChat-Schnittstelle (1) WeChat oauth2-Schnittstelle entwickelt wurde, einschließlich Aspekten des Inhalts. Ich hoffe, dass sie für Freunde hilfreich sein wird, die an PHP-Tutorials interessiert sind.