Heim >WeChat-Applet >WeChat-Entwicklung >Delphi implementiert die WeChat-Entwicklung

Delphi implementiert die WeChat-Entwicklung

高洛峰
高洛峰Original
2017-02-23 13:46:222652Durchsuche

Allgemeine Idee:

1. Der Benutzer sendet eine Nachricht an das Dienstkonto (dies kann ein Menüpunkt oder ein Schlüsselwort sein, wie zum Beispiel: Registrieren Sie ein Mitglied.)

2 .kbmmw Der Webserver empfängt die Nachricht, generiert eine grafische Nachricht an WeChat und bereitet in der grafischen Nachricht eine eigene URL vor. In der URL kann die im ersten Schritt der Nachricht bereitgestellte OpenID in die Parametertabelle der URL geschrieben werden .

3. Der Benutzer klickt auf diese grafische Nachricht

4. Der Webserver empfängt die URL dieser grafischen Nachricht und generiert eine Webseite für WeChat Schreiben Sie die OpenID. Gehen Sie zur Webseite

5. Der Benutzer füllt diese Webseite aus und sendet sie ab (die OpenID wird beim Absenden auch zurückgesendet)

6.Ok, jetzt erhalte ich den gewünschten Inhalt. Die am meisten benötigte OpenID wurde von diesem Benutzer übermittelt und so zurückgesendet.

7. Implementieren Sie Geschäftslogik basierend auf dem in 6 zurückgegebenen Inhalt.

openid: Der einzigartige Wert, der generiert wird, wenn Sie einem Dienstkonto folgen. Aus Sicht des Dienstkontos ist dies der Follower Ihres Dienstkontos. Wenn Sie Nachrichten an Ihre WeChat-Benutzer senden möchten, können Sie nur über diese OpenID in die Entwicklung einsteigen.


:

Hier können Sie zunächst ein Testkonto beantragen Entwicklung. Der Vorgang ist sehr einfach: Bewerben Sie sich einfach mit Ihrer Mobiltelefonnummer, senden Sie einen Bestätigungscode an Ihr Mobiltelefon und schon wird es aktiviert!
Dann benötigen Sie auch eine statische IP und Port 80. Theoretisch kann auch ein dynamischer Domainname verwendet werden. Verknüpfen Sie es mit Ihrem Entwicklungskonto.
Als nächstes müssen Sie sich mit der API von WeChat vertraut machen und einige grundlegende Konzepte verstehen.
Jetzt können Sie mit Delphi entwickeln!

Zuerst müssen Sie die Zugangsinformationen studieren, da alle Prinzipien vorhanden sind. Anschließend müssen Sie Delphi verwenden, um eine entsprechende Funktion zu implementieren, und dann ein Testkonto für die öffentliche WeChat-Plattform beantragen.
function CheckSignature(const signatur, timestamp, nonce, token: string): boolean;
var
strs: TStringList;
tmpStr: string;
begin

strs: = TStringList.Create;
try
strs.Add(token);
strs.Add(timestamp);
strs.Add(nonce);

strs.Sort;
tmpStr := strs[0] + strs[1] + strs[2];
tmpStr := SHA1(tmpStr);

if tmpStr = Signatur then
Ergebnis := True
else
Ergebnis := Falsch;
schließlich
FreeAndNil(strs);
end;
end;
Wenn das Rückgabeergebnis der Funktion wahr ist, bedeutet dies den Zugriff ist erfolgreich! Beziehen Sie sich für diese Funktion auf das von csdn-Freunden hochgeladene Beispiel. Vielen Dank. In diesem Beispiel wird eine Einheit der SHA1-Funktion bereitgestellt, daher müssen Sie sie erneut herunterladen.

Wie verwende ich diese Funktion nach der Vorbereitung dieser Funktion?
Da der WeChat-Server eine Get-Anfrage an den verbundenen Webserver sendet, müssen wir diese CheckSignature in der von uns implementierten PerformGet-Methode des kbmMW-Webservers aufrufen.

function TDJ_FrmPhoneHTTPService.PerformGet(ClientIdent: TkbmMWClientIdentity; const AURL: string;
const Args: array of Variant): Variant;
var
FuncName: string;
qv: TkbmMWHttpQueryValues ;//Verarbeiten Sie die von der Get-Anfrage übergebenen Parameter.
begin

if Length(Args) < 1 then
kbmMWRaiseException(KBMMW_ERR_SERVICE_HTTP_URLMISSING, 'Missing URL.')
else
begin
FuncName := UpperCase(copy(Args[0], 2, Length(Args[0]) - 1));
if FuncName.Equals('WECHAT.HTML') then
begin
// Zur WeChat-Schnittstelle übertragen
qv := TkbmMWHttpQueryValues.Create;
qv.AsString := Args[2];//Die von der Get-Anfrage übergebenen Parameter abrufen.
try
// Verifizierungszugriff if QvalueByname ['Echostr'] & LT; & GT; '' THEN
// Wenn Echostr nicht leer ist, bedeutet dies, dass die Anfrage beginnt result: = ' ';
if
dmwx
.CheckSignature(qv.ValueByName['id'], qv.ValueByName['signature'], qv.ValueByName ['timestamp' ], qv.ValueByName['nonce']) then           Result := qv.ValueByName['echostr'];
//Wenn die Überprüfung erfolgreich ist, geben Sie echostr zurück, um den WeChat-Server darüber zu informieren die Verifizierung ist erfolgreich.
end; SetResponseMimeType('text/HTML');
SetResponsecharset('utf-8');
schließlich
FreeAndnil(qv);
end;
exit;/ /Diese Antwort auf Get beenden.
end;
....Die folgende Implementierung weglassen

Im eigentlichen Projekt habe ich es so implementiert: Implementieren des WeChat-Schnittstellencodes: Implementieren Sie ein DataModule, um die WeChatImpl-Methode weiter zu kapseln. Beim Kapseln können Sie Vorgänge in der Datenbank implementieren.

Nehmen wir die Verifizierung als Beispiel und sehen, wie sie in DataModule implementiert ist.

function tdmwx.CheckSignature(id, Signatur, timestamp, nonce: string): Boolean;
begin
result:=False;
if not qWXFWH.Active then
qWXFWH. Open;
if qWXFWH.Locate('fid', VarArrayOf([id]), []) then//Fragen Sie die Servicenummerntabelle ab, um zu sehen, ob ein entsprechender ID-Datensatz vorhanden ist
begin
if wechatImpl .CheckSignature( Signatur, Zeitstempel, Nonce, qWXFWH.FieldByName('FToken').AsString)//Wenn vorhanden, nehmen Sie den in der Tabelle definierten Token-Wert und rufen Sie die Überprüfungsfunktion auf.
dann
Ergebnis := true;
end;
Ende;
Davon ist qWXFWH ein kbmMWuniDACQuery-Objekt, das zum Speichern einer Tabelle mit WeChat-Dienstkonten verwendet wird:
CREATE TABLE WX_FWH (
FID INTEGER,//Die ID von a Dienstkonto, Erreichen Der Zweck der Verwaltung mehrerer Dienstkonten
FTOKEN VarChar(32),//Der Tokenwert jedes Dienstkontos
FAPPID VarChar(16),
FAPPSECRET varchar(16),
FACCESSTOKEN VARCHAR ( 512),
FEXPIRESIN INTEGER,
FGETDATE DATETIME);
Bei der Registrierung des Servers müssen Sie dieser Tabelle zunächst Registrierungsinformationen hinzufügen, wie zum Beispiel: id=1, token=kbmmwtoken1
Der entsprechende Registrierungsinhalt für:
url=www.test.cc/wechat.html?id=1
token=kbmmwtoken1
Auf diese Weise wird die ID gesendet, wenn der WeChat-Server eine Bestätigungsanfrage sendet Wird als Parameter übergeben, ruft die CheckSignature-Methode des Datenmoduls den in der Datentabelle definierten Tokenwert basierend auf dem Wert der ID ab und ruft dann die Verifizierungsmethode der WeChat-Schnittstelle auf.

Um den obigen Inhalt zusammenzufassen: Um den WeChat-Zugriff zu erreichen, habe ich den implementierten Code in drei Schichten unterteilt:
1 Rufen Sie die Überprüfungsfunktion der Datenbankschicht in der get-Methode des kbmmw-Webservers auf
2. Implementieren Sie die Verifizierungsfunktion in der Datenbankschicht, rufen Sie die vordefinierten WeChat-bezogenen Informationen wie ID und Token aus der Tabelle ab und rufen Sie dann die spezifische WeChat-Schnittstelle auf
3. Implementieren Sie die spezifische WeChat-Schnittstelle für die Datenbank Ebene aufzurufen.

Der Plan ist, es mit Freunden zu teilen, nachdem die Implementierung der WeChat-Schnittstelle abgeschlossen ist. Leider ist die Zeit in letzter Zeit knapp und es gibt viele Aufgaben, sodass es einige Zeit dauern wird. Lassen Sie mich zunächst die Ideen zur Umsetzung mitteilen.

Die Überprüfung der mit dem Webserver verbundenen URL-Adresse ist der erste Schritt bei der Bereitstellung von WeChat-Diensten. Daher müssen die oben genannten zugehörigen Inhalte verstanden werden, bevor Sie fortfahren.
Dies ist tatsächlich der Fall:
WeChat-Benutzer, die Ihrem Dienstkonto folgen, senden Nachrichten an Ihr Dienstkonto, und die WeChat-Plattform leitet sie an die von Ihnen verifizierte URL weiter, die den WeChat-Benutzern Ihres WeChat-Dienstes entspricht Konto, senden Sie eine Nachricht an Ihren Webserver. Der Zweck des von Ihnen entwickelten Webservers besteht darin, auf diese Nachrichten zu antworten und mit den Followern Ihres WeChat-Dienstkontos zu interagieren!

Weitere Artikel zur Delphi-Implementierung der WeChat-Entwicklung finden Sie auf der chinesischen PHP-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