重庆小潘seo博客

当前位置:首页 > 重庆网络营销 > 小潘杂谈 >

小潘杂谈

开发微信服务器接口的实例教程

时间:2020-09-04 23:30:08 作者:重庆seo小潘 来源:
因ERP系统需要与微信公众号做数据接口,现准备做一个中间服务器。开发环境:XE10使用控件:IdHTTPServer因刚开发阶段,在路由路上直接做了测试机的80端口转发,申请微信公众测试号后,却一直配置失败。跟踪发现是服务器无法收到微信发来的GET请求。代码如下

因ERP系统需要与微信公众号做数据接口,现准备做一个中间服务器。开发环境:XE10使用控件:IdHTTPServer因刚开发阶段,在路由路上直接做了测试机的80端口转发,申请微信公众测试号后,却一直配置失败。跟踪发现是服务器无法收到微信发来的GET请求。代码如下:

Delphi/Pascal code?

unit Unit1;interface usesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdBaseComponent,IdComponent, IdCustomTCPServer, IdCustomHTTPServer, IdHTTPServer, IdContext,IdHashSHA, IdGlobal; typeTForm1 = class(TForm)IdHTTPServer1: TIdHTTPServer;Button1: TButton;Memo1: TMemo;procedure Button1Click(Sender: TObject);procedure IdHTTPServer1CommandGet(AContext: TIdContext;ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);private{ Private declarations }public{ Public declarations }function SHA1(Input: String): String;function CheckSignature(ARequestInfo: TIdHTTPRequestInfo): boolean;end; varForm1: TForm1;ConstToken = 'weixin'; implementation {$R *.dfm} function TForm1.SHA1(Input: String): String;beginwith TIdHashSHA1.Create dotryResult := LowerCase(HashBytesAsHex(TidBytes(Bytesof(Input))));finallyFree;end;end;function TForm1.CheckSignature(ARequestInfo: TIdHTTPRequestInfo): boolean;varsignature, timestamp, nonce, echostr: String;tmpstr: TStringList;temp: String;begintmpstr := TStringList.Create;trysignature := ARequestInfo.Params.Values['signature'];timestamp := ARequestInfo.Params.Values['timestamp'];nonce := ARequestInfo.Params.Values['nonce'];echostr := ARequestInfo.Params.Values['echostr'];tmpstr.Add(Token);tmpstr.Add(timestamp);tmpstr.Add(nonce);tmpstr.Sort;temp := StringReplace(tmpstr.text, #13#10, '', [rfReplaceAll]);Result := SHA1(temp) = signature;finallytmpstr.Free;end;end;procedure TForm1.Button1Click(Sender: TObject);beginIdHTTPServer1.Active := True;end; procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);beginMemo1.Lines.Add('123');if CheckSignature(ARequestInfo) thenif ARequestInfo.Params.Values['echostr'] <> '' thenbeginMemo1.Lines.Add(ARequestInfo.Params.Values['echostr']);AResponseInfo.ContentType := 'text/html; charset=UTF-8';AResponseInfo.ContentText := ARequestInfo.Params.Values['echostr'];end;end; end.以上就是开发微信服务器接口的实例教程的详细内容,更多请关注小潘博客其它相关文章!