因erp系统需要与微信公众号做数据接口,现准备做一个中间服务器。
开发环境:xe10
使用控件:idhttpserver
因刚开发阶段,在路由路上直接做了测试机的80端口转发,申请微信公众测试号后,却一直配置失败。跟踪发现是服务器无法收到微信发来的get请求。代码如下:
Delphi/Pascal code?
unit Unit1;
interface 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; 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; Form1: TForm1; Const Token = #39;weixin #39;; implementation {$R *.dfm} function TForm1.SHA1(Input: String): String; begin with TIdHashSHA1.Create do Result := LowerCase(HashBytesAsHex(TidBytes(Bytesof(Input)))); finally Free; end;signature := ARequestInfo.Params.Values[ #39;signature #39;]; timestamp := ARequestInfo.Params.Values[ #39;timestamp #39;]; nonce := ARequestInfo.Params.Values[ #39;nonce #39;]; echostr := ARequestInfo.Params.Values[ #39;echostr #39;]; tmpstr.Add(Token); tmpstr.Add(timestamp); tmpstr.Add(nonce); tmpstr.Sort; temp := StringReplace(tmpstr.text, #13#10, #39; #39;, [rfReplaceAll]); Result := SHA1(temp) = signature; finally tmpstr.Free; end;
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); begin Memo1.Lines.Add( #39;123 #39;); if CheckSignature(ARequestInfo) then if ARequestInfo.Params.Values[ #39;echostr #39;] #39; #39; then begin Memo1.Lines.Add(ARequestInfo.Params.Values[ #39;echostr #39;]); AResponseInfo.ContentType := #39;text/html; charset=UTF-8 #39;; AResponseInfo.ContentText := ARequestInfo.Params.Values[ #39;echostr #39;]; end; end.
以上就是开发微信服务器接口的实例教程的详细内容,更多请关注php中文网其它相关文章!
微信app下载
微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!