开发微信服务器接口的实例教程
- 微信应用
- 2024-10-14 18:36:01
开发微信服务器接口的实例教程
因ERP系统需要与微信公众号做数据接口,现准备做一个中间服务器。 开发环境:XE10 使用控件:IdHTTPServer 因刚开发阶段,在路由路上直接做了测试机的80端口转发,申请微信公众测试号后,却一直配置失败。跟踪发现是服务器无法收到微信发来的GET请求
因ERP系统需要与微信公众号做数据接口,现准备做一个中间服务器。 开发环境:XE10 使用控件:IdHTTPServer 因刚开发阶段,在路由路上直接做了测试机的80端口转发,申请微信公众测试号后,却一直配置失败。跟踪发现是服务器无法收到微信发来的GET请求
因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.开发微信服务器接口的实例教程由讯客互联微信应用栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“开发微信服务器接口的实例教程”