Heim  >  Artikel  >  WeChat-Applet  >  Delphi realisiert die WeChat-Entwicklung und den Zugriff auf die öffentliche WeChat-Kontoplattform

Delphi realisiert die WeChat-Entwicklung und den Zugriff auf die öffentliche WeChat-Kontoplattform

高洛峰
高洛峰Original
2017-03-03 09:42:223923Durchsuche

Zuerst müssen Sie die Zugangsinformationen unter http://mp.weixin.qq.com/wiki/home/index.html studieren, da dort alle Grundsätze aufgeführt sind. Seien Sie also sicher Um es sorgfältig zu lesen, implementieren Sie dann mit Delphi eine entsprechende Funktion und beantragen Sie dann ein Testkonto für die öffentliche WeChat-Plattform. http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

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 := False;
schließlich
FreeAndNil(strs);
end;
end;
Wenn das Rückgabeergebnis der Funktion wahr ist, bedeutet dies, dass der Zugriff erfolgreich war! 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 qv.ValueByName['echostr'] <> '' then//Wenn echostr nicht leer ist, zeigt dies eine Verifizierungsanforderung an
begin
Ergebnis := '';
if dmwx.CheckSignature(qv.ValueByName['id'], qv.ValueByName['signature'],
           qv.ValueByName['timestamp'], qv.ValueByName['nonce']) then
Ergebnis := qv.ValueByName['echostr'];//Wenn die Überprüfung erfolgreich ist, geben Sie echostr zurück, um den WeChat-Server darüber zu informieren, dass die Überprüfung erfolgreich war ');
schließlich
FreeAndnil(qv);
end;
exit;//Diese Antwort auf Get beenden.
end;
....Die folgende Implementierung weglassen

Im eigentlichen Projekt habe ich es so implementiert Implementierte den WeChat-Schnittstellencode in einer Einheit wechatImpl und implementierte dann ein DataModule, um die wechatImpl-Methode beim Kapseln weiter zu kapseln und Operationen in der Datenbank zu 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;
end;
Unter diesen ist qWXFWH ein kbmMWuniDACQuery-Objekt, das zum Speichern einer Tabelle mit WeChat-Dienstnummern verwendet wird:
CREATE TABLE WX_FWH (
FID INTEGER,//A Die ID des Dienstkontos wird zur Verwaltung mehrerer Dienstkonten verwendet
FTOKEN VarChar(32), //Token-Wert 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 lautet:
url=www.test.cc/wechat.html?id=1
token=kbmmwtoken1
Auf diese Weise lautet die ID, wenn der WeChat-Server eine Bestätigungsanfrage sendet Wird als Parameter verwendet und zusammen ü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 im Zusammenhang mit Delphis Realisierung der WeChat-Entwicklung und dem Zugriff auf die WeChat-Plattform für öffentliche Konten 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