search
HomeWeChat AppletWeChat Developmentdelphi realizes WeChat development and access to WeChat public account platform

First, you need to study the access information, at http://mp.weixin.qq.com/wiki/home/index.html, because the principles are all there, so you must read it carefully. Then, use Delphi to implement a corresponding function, and then apply for a WeChat public platform interface test account. http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

function CheckSignature(const signature, 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 = signature then
Result := True
else
Result := False;
finally
FreeAndNil(strs);
end;
end;
When the return result of the function is true, it means the access is successful! For this function, refer to the example uploaded by csdn friends, thank you. In this example, a unit of the SHA1 function is provided, so you need to download it back.

After preparing this function, next, how to use this function?
Because the WeChat server sends a Get request to the connected web server, we need to call this CheckSignature in the PerformGet method of the kbmMW web server implemented by ourselves.

function TDJ_FrmPhoneHTTPService.PerformGet(ClientIdent: TkbmMWClientIdentity; const AURL: string;
const Args: array of Variant): Variant;
var
FuncName: string;
qv: TkbmMWHttpQueryValues ;//Process the parameters passed by the Get request.
begin

if Length(Args) 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
          // Transfer to WeChat interface
       qv := TkbmMWHttpQueryValues.Create;
      qv.AsString:= Args[2];//Get the parameters passed by the get request.
        try
                                                                Access
                                                                                                                                                                                                                                                     If qv.ValueByName['echostr'] '' then//If echostr is not empty, it indicates a verification request dmwx.CheckSignature(qv.ValueByName['id'], qv.ValueByName['signature'],
          qv.ValueByName['timestamp'], qv.ValueByName['nonce']) then
                         qv.ValueByName['echostr']; // If the verification is successful, return echostr to inform the WeChat server that the verification is successful. ');
finally
FreeAndnil(qv);
end;
exit;//End this response to Get.
end;
....Omit the following Implementation

In the actual project, I implemented it like this. I implemented the WeChat interface code in a unit wechatImpl, and then implemented a DataModule to further encapsulate the wechatImpl method. When encapsulating, to implement Operations on the database.

Let’s take verification as an example and see how it is implemented in DataModule?

function tdmwx.CheckSignature(id, signature, timestamp, nonce: string): Boolean;
begin
result:=False;
if not qWXFWH.Active then
qWXFWH. Open;
if qWXFWH.Locate('fid', VarArrayOf([id]), []) then//Query the service number table to see if there is a corresponding id record
begin
if wechatImpl.CheckSignature( signature, timestamp, nonce, qWXFWH.FieldByName('FToken').AsString)//exists, then take the token value defined in the table and call the verification function.
then
Result := true;
end;
end;
Among them, qWXFWH is a kbmMWuniDACQuery object, used to save a table of WeChat service numbers. The table structure is as follows:
CREATE TABLE WX_FWH (
FID INTEGER,//A The id of the service account is used to manage multiple service accounts.
FTOKEN VarChar(32),//The token value of each service account
FAPPID VarChar(16),
FAPPSECRET varchar(16),
FACCESSTOKEN VARCHAR (512),
FEXPIRESIN INTEGER,
FGETDATE DATETIME);
When registering the server, you must first add registration information to this table, such as: id=1,token=kbmmwtoken1
The corresponding registration content is:
url=www.test.cc/wechat.html?id=1
token=kbmmwtoken1
In this way, when the WeChat server sends a verification request, the id will be used as a parameter Passed over together, the CheckSignature method of datamodule will obtain the token value defined in the data table based on the value of id, and then call the verification method of the WeChat interface.

To summarize the above content, in order to achieve WeChat access, I divided the implemented code into three layers:
1. Call the verification function of the database layer in the get method of kbmmw web server
2. Implement the verification function in the database layer, obtain the predefined WeChat related information, such as id and token, from the table, and then call the specific WeChat interface
3. Implement the specific WeChat interface for the database layer to call.

The plan is to share it with friends after the implementation of the WeChat interface is completed. Unfortunately, time is tight recently and there are many chores, so it will take some time. Let me first share the ideas for implementation.

Verification of the URL address connected to the web server is the first step in providing WeChat services. Therefore, the above related content must be understood before proceeding.
It’s actually like this:
WeChat users who follow your service account send messages to your service account, and the WeChat platform will forward them to the URL you verified, which is equivalent to the WeChat users of your WeChat service account , send a message to your Web server. The purpose of the Web server you develop is to respond to these messages and interact with followers of your WeChat service account!

For more articles related to Delphi's realization of WeChat development and access to the WeChat public account platform, please pay attention to the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.