首页 > PHP资讯 > 工具库 > 开发微信服务器接口的实例教程

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

工具库
因ERP系统需要与微信公众号做数据接口,现准备做一个中间服务器。
开发环境:XE10
使用控件:IdHTTPServer

因刚开发阶段,在路由路上直接做了测试机的80端口转发,申请微信公众测试号后,却一直配置失败。跟踪发现是服务器无法收到微信发来的GET请求。代码如下:

Delphi/Pascal code?

unit Unit1;

interface uses  Winapi.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; type  TForm1 = 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; var  Form1: TForm1;Const  Token = 'weixin'; implementation {$R *.dfm} function TForm1.SHA1(Input: String): String;begin  with TIdHashSHA1.Create do  try    Result := LowerCase(HashBytesAsHex(TidBytes(Bytesof(Input))));  finally    Free;  end;end;  function TForm1.CheckSignature(ARequestInfo: TIdHTTPRequestInfo): boolean;var  signature, timestamp, nonce, echostr: String;  tmpstr: TStringList;  temp: String;begin  tmpstr := TStringList.Create;  try    signature := 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;  finally    tmpstr.Free;  end;end;  procedure TForm1.Button1Click(Sender: TObject);begin  IdHTTPServer1.Active := True;end; procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);begin  Memo1.Lines.Add('123');  if CheckSignature(ARequestInfo) then  if ARequestInfo.Params.Values['echostr'] <> '' then  begin    Memo1.Lines.Add(ARequestInfo.Params.Values['echostr']);    AResponseInfo.ContentType := 'text/html; charset=UTF-8';    AResponseInfo.ContentText := ARequestInfo.Params.Values['echostr'];  end;end; end.

以上就是开发微信服务器接口的实例教程的详细内容,更多请关注 第一PHP社区 其它相关文章!

工具库

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持38不支持0