iw14.0.50來了,終於可以直接在地址欄輸入url打開iw功能頁面了;可以自由使用EasyUI等js框架了;顯示模式對話框也不再七繞八繞惹人煩了;
示例代碼已經放出!請移步使用delphi+intraweb進行微信開發1~4代碼示例進行下載,雖為示例代碼但是是從我項目中移出來的,封裝很完備適於自行擴展和修改。
iw14.0.50來了,在新的版本中最吸引我的就是增加了完善的httphandler功能:終於可以直接在地址欄輸入url打開iw功能頁面了;可以自由使用EasyUI等js框架了;顯示模式對話框也不再七繞八繞惹人煩了;呵呵,我感覺iw第一次接近主流web開發工具了!
興奮過了,來嘗試一下吧。其實iw的坑還是挺多的,雖然已經接近主流了,但是,後面慢慢都會說到…
1、新建一個iw工程,選擇Stand Alone Server / Service ,這種模式下進行開發是最理想的,調試很方便,正式發布時可以再建立一個library型的工程發布到.net服務器上。(是的,大家沒有看錯,現在iw已經脫離了isapi模式,可以像部署.net mvc4應用一樣部署到iis上,後面會解釋,.net虛擬主機也可以發布iw應用了!巨大的進步。)
2、保存工程後在工程中添加一個新的單元文件,例如起名為wxapi.pas,這個文件中的代碼將承擔微信接入工作。代碼如下:
interface
uses
Classes, IW.Content.Base, System.SysUtils,HTTPApp, IWApplication,
IW.HTTP.Request, IW.HTTP.Reply;
type
/// <summary>
/// 從TContentBase繼承下來的類,就相當於asp.net中的httphandler
/// </summary>
TWxApi = class(TContentBase)
function Execute(aRequest: THttpRequest; aReply: THttpReply; const aPathname: string; aSession: TIWApplication; aParams: TStrings): Boolean; override;
public
constructor Create; override;
end;
implementation
uses
ServerController, UserSessionUnit, Crypt.SHA1;
{ TWxApi }
constructor
begin
inherited;
// 文件不需要真實存在
FileMustExist := False;
end;
function TWxApi.Execute(aRequest: THttpRequest; aReply: THttpReply;
const aPathname: string; aSession: TIWApplication;
aParams: TStrings): Boolean;
var
signature: string;
timestamp: string;
nonce: string;
echostr: string;
strs: TStringList;
tmpStr: string;
begin
Result := True;
signature := aParams.Values[‘signature‘];
timestamp := aParams.Values[‘timestamp‘];
nonce := aParams.Values[‘nonce‘];
echostr := aParams.Values[‘echostr‘];
strs := TStringList.Create;
strs.Add(‘MyTestToken‘); // Token,要和微信接口配置信息保持一致
strs.Add(timestamp);
strs.Add(nonce);
strs.Sort;
tmpStr := strs[0]+strs[1]+strs[2];
tmpStr := SHA1(AnsiString(tmpstr));
if tmpStr