Home WeChat Applet WeChat Development Using delphi+intraweb for WeChat message processing

Using delphi+intraweb for WeChat message processing

Feb 24, 2017 pm 04:22 PM
WeChat development

In the second lecture, using delphi+intraweb for WeChat development 2—intraweb is published in .net mode (deployed in asp.net mvc4 mode). On IIS (.net virtual host), we successfully deployed the iw application in the cloud virtual On the host, in this lecture, we will continue the content of the first lecture and return to WeChat development, this time explaining WeChat message processing.

First of all, clarify a few knowledge points:

1. The http post method used by the WeChat server to forward user messages. In the first lecture, we did not discuss the http data submission method of the WeChat server. Without going into details, WeChat actually uses the http get method for access verification; while forwarding user messages, it uses the http post method, and when forwarding messages, the messages are encoded in xml format, ContentType=text/xml.

2. WeChat server message forwarding can choose three data transmission methods: 1. Plain text; 2. Encryption; 3. Mixed. In this article, for the convenience of debugging, we use clear text to transfer data. The next lecture will explain the processing of message encryption methods.

I originally felt that the content of this lecture was not difficult. It should be easy to implement with .net, php or even Delphi webbroker. But after using iw, I found that the problem is very complicated!

iwThe class that handles http request data is THttpRequest, but I have looked through the properties and methods of THttpRequest and cannot find a place to directly access http content. There is only a THttpRequest.ContentFields property that seems to read http content. , but after actually executing the code and debugging, it was found that this attribute cannot get the xml file passed by the WeChat server at all, and the content is always empty.

After repeated verification, it is found that this ContentFields attribute is only valid for the key value passed when the ContentType is application/x-www-form-urlencoded in the http request, that is, it can be obtained for the submission of the form type. For data, this is the case in the WeChat access in the first lecture. The signature, timestamp, nonce and other field values ​​passed by WeChat can be taken out through THttpRequest.ContentFields.

Things have developed into a complete dilemma now, so how to use the THttpRequest class method to obtain the content when ContentType=text/xml? After research, I found that the THttpRequest class has a Files attribute. At that time, I felt that the hope was in this attribute. After all, xml can also be uploaded as a file, right? Haha, unfortunately, no matter how I experimented at the time (I used it to disassemble the DCU), the number of files with this attribute was always 0, and this hope was lost!

So I posted a message on the iw official question forum and started asking for advice. For 1 and 2 days, there were always people reading but no one responded. After searching for related questions many times, I found that someone had met me. When I had the same question, the author responded that the questioner was unclear and asked to send the author the code via email. Haha, I caught the straw. I immediately pretended to be the questioner and sent the author my code and attached the question. Yeah, Lost in the ocean, haha, iw, it’s really not easy to love you so much.

There is no way to continue searching for other people's questions. The hard work pays off. I finally found a post in which the question asked by the questioner was different from mine, but the answerer mentioned that there is a PostFormData example in iw demos. project, I immediately checked the demo I downloaded, and found that there was no such project at all. I went to the official website to download the example project again, haha, finally it is there! Open the code and take a look, it turns out this is the case! Just like the first lecture, one line of code bothered me for several days.

Dear friends, take a look:

Using delphi+intraweb for WeChat message processing

is the "RegisterContentType" method, haha, can you think of it? Is it mentioned in the help? Holy shit!

Okay, finally it works. Now, after adding the content-type registration, you can use THttpRequest.Files to get the posted xml. This is almost the same as my original prediction. Just give me some comfort. .

Dear friends, my journey of blood and tears tells you that for a web development framework like iw with incomplete help and no source code, search in the question area and iw demos are our biggest reliance. We must use iw, just download the latest demo and take a look.

There’s nothing left to say. I’ll post a screenshot of the code for everyone to take a look at. It’s easier to follow WeChat’s documentation:

Using delphi+intraweb for WeChat message processing

TEventHandler class:

Using delphi+intraweb for WeChat message processing

After deploying to the server, use the WeChat client to test the screenshot:

Using delphi+intraweb for WeChat message processing

If you see this, well, let me tell you a little secret:

After repeated testing, the "RegisterContentType" method only works in SA and ISAPI modes. It is valid. When I compile it into a library according to the second tutorial and deploy it according to the aspx mode, I can't get the xml file anyway. Only the project type has changed due to the deployment requirements, and no other code has changed. I just don’t know why. The screenshot you see above was deployed on my server using ISAPI.

Finally, attach the encoding and decoding function of the date field in the XML format of the WeChat message. WeChat’s date type is an integer value, so the integer value needs to be converted into the TDateTime type. WeChat’s integer The value is calculated as the second difference using '1970-01-01 00:00:00' as the base time. Another thing to note is that WeChat time is UTC time, which means 8 hours must be added when converting to Beijing time.

##///


##/// WeChat’s date and time are all of int64 type, which is the second difference between 1970-01-01 00:00:00. This function is used to return 1970-01-01 00:00:00 Time                                                                                                                                                                                                                              
##/// #/// 1970-01-01 00:00:00               function
GetWxBaseDt: TDateTime
; ##begin Result := VarToDateTime
('1970-01-01 00:00:00'
);       end;
##///

##/// Get the current date suitable for WeChat, Represented in int64, it is the second difference between the current time and 1970-01-01 00:00:00             /// Then subtract Convert 3600*8 to UTC time and the second difference is WeChat time
///
    /// Current time, int64 format

function GetWxNow: Int64;        
begin        
  Result := SecondsBetween(Now, GetWxBaseDt) - 3600 * 8;        
end;        

function GetWxNowStr: string;        
var        
  i64: Int64;        
begin        
  i64 := GetWxNow;        
  Result := IntToStr(i64);        
end;        

##///


/// Pass the CreateTime field value obtained from WeChat xml as a parameter into the function
/// You can use the int type of WeChat Convert the time into TDatetime type
##///
/// TDateTime
##function
ConvertWxDtToDateTime(wxDt: string): TDateTime; var
i64
: Int64; begin
i64
:= StrToInt64(wxDt); Result
:= IncSecond(GetWxBaseDt, i64 + 3600*8); end
;

For more articles related to using delphi+intraweb for WeChat message processing, please pay attention to the PHP Chinese website!

Statement of this Website
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

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP WeChat development: How to implement message encryption and decryption PHP WeChat development: How to implement message encryption and decryption May 13, 2023 am 11:40 AM

PHP is an open source scripting language that is widely used in web development and server-side programming, especially in WeChat development. Today, more and more companies and developers are starting to use PHP for WeChat development because it has become a truly easy-to-learn and easy-to-use development language. In WeChat development, message encryption and decryption are a very important issue because they involve data security. For messages without encryption and decryption methods, hackers can easily obtain the data, posing a threat to users.

Using PHP to develop WeChat mass messaging tools Using PHP to develop WeChat mass messaging tools May 13, 2023 pm 05:00 PM

With the popularity of WeChat, more and more companies are beginning to use it as a marketing tool. The WeChat group messaging function is one of the important means for enterprises to conduct WeChat marketing. However, if you only rely on manual sending, it is an extremely time-consuming and laborious task for marketers. Therefore, it is particularly important to develop a WeChat mass messaging tool. This article will introduce how to use PHP to develop WeChat mass messaging tools. 1. Preparation work To develop WeChat mass messaging tools, we need to master the following technical points: Basic knowledge of PHP WeChat public platform development Development tools: Sub

PHP WeChat development: How to implement user tag management PHP WeChat development: How to implement user tag management May 13, 2023 pm 04:31 PM

In the development of WeChat public accounts, user tag management is a very important function, which allows developers to better understand and manage their users. This article will introduce how to use PHP to implement the WeChat user tag management function. 1. Obtain the openid of the WeChat user. Before using the WeChat user tag management function, we first need to obtain the user's openid. In the development of WeChat public accounts, it is a common practice to obtain openid through user authorization. After the user authorization is completed, we can obtain the user through the following code

PHP WeChat development: How to implement group message sending records PHP WeChat development: How to implement group message sending records May 13, 2023 pm 04:31 PM

As WeChat becomes an increasingly important communication tool in people's lives, its agile messaging function is quickly favored by a large number of enterprises and individuals. For enterprises, developing WeChat into a marketing platform has become a trend, and the importance of WeChat development has gradually become more prominent. Among them, the group sending function is even more widely used. So, as a PHP programmer, how to implement group message sending records? The following will give you a brief introduction. 1. Understand the development knowledge related to WeChat public accounts. Before understanding how to implement group message sending records, I

PHP WeChat development: How to implement voting function PHP WeChat development: How to implement voting function May 14, 2023 am 11:21 AM

In the development of WeChat public accounts, the voting function is often used. The voting function is a great way for users to quickly participate in interactions, and it is also an important tool for holding events and surveying opinions. This article will introduce you how to use PHP to implement WeChat voting function. Obtain the authorization of the WeChat official account. First, you need to obtain the authorization of the WeChat official account. On the WeChat public platform, you need to configure the API address of the WeChat public account, the official account, and the token corresponding to the public account. In the process of our development using PHP language, we need to use the PH officially provided by WeChat

PHP WeChat development: How to implement customer service chat window management PHP WeChat development: How to implement customer service chat window management May 13, 2023 pm 05:51 PM

WeChat is currently one of the social platforms with the largest user base in the world. With the popularity of mobile Internet, more and more companies are beginning to realize the importance of WeChat marketing. When conducting WeChat marketing, customer service is a crucial part. In order to better manage the customer service chat window, we can use PHP language for WeChat development. 1. Introduction to PHP WeChat development PHP is an open source server-side scripting language that is widely used in the field of Web development. Combined with the development interface provided by WeChat public platform, we can use PHP language to conduct WeChat

Steps to implement WeChat public account development using PHP Steps to implement WeChat public account development using PHP Jun 27, 2023 pm 12:26 PM

How to use PHP to develop WeChat public accounts WeChat public accounts have become an important channel for promotion and interaction for many companies, and PHP, as a commonly used Web language, can also be used to develop WeChat public accounts. This article will introduce the specific steps to use PHP to develop WeChat public accounts. Step 1: Obtain the developer account of the WeChat official account. Before starting the development of the WeChat official account, you need to apply for a developer account of the WeChat official account. For the specific registration process, please refer to the official website of WeChat public platform

How to use PHP for WeChat development? How to use PHP for WeChat development? May 21, 2023 am 08:37 AM

With the development of the Internet and mobile smart devices, WeChat has become an indispensable part of the social and marketing fields. In this increasingly digital era, how to use PHP for WeChat development has become the focus of many developers. This article mainly introduces the relevant knowledge points on how to use PHP for WeChat development, as well as some of the tips and precautions. 1. Development environment preparation Before developing WeChat, you first need to prepare the corresponding development environment. Specifically, you need to install the PHP operating environment and the WeChat public platform

See all articles