일반 아이디어:
1. 사용자가 서비스 계정으로 메시지를 보냅니다. (회원 등록과 같은 메뉴 항목이나 키워드일 수 있습니다.)
2 .kbmmw 웹 서버는 메시지를 수신하고 WeChat에 대한 그래픽 메시지를 생성하며 그래픽 메시지에 자체 URL을 준비합니다. URL에서 메시지의 첫 번째 단계에서 가져온 openid를 URL의 매개변수 테이블에 쓸 수 있습니다. .
3. 사용자가 이 그래픽 메시지를 클릭합니다.
4. 웹 서버는 이 그래픽 메시지의 URL을 수신하고 이 URL을 기반으로 WeChat용 웹 페이지를 생성합니다. openid 작성 웹페이지로 이동
5. 사용자가 이 웹페이지를 작성하고 제출합니다. (제출 시 openid도 다시 제출됩니다.)
6.자, 이제 원하는 콘텐츠를 얻었습니다. 가장 필요한 openid입니다. 해당 사용자가 제출했고, 이렇게 다시 제출되었습니다.
7. 6에서 반환된 내용을 기반으로 비즈니스 로직을 구현합니다.
openid: WeChat 사용자로서 서비스 계정을 팔로우할 때 생성되는 고유 값입니다. 서비스 계정 관점에서 보면 서비스 계정의 팔로어입니다. WeChat 사용자에게 메시지를 보내려면 이 openid를 통해서만 개발에 들어갈 수 있습니다.
:
우선 여기에서 테스트 계정을 신청할 수 있습니다. 개발. 절차는 매우 간단합니다. 휴대폰 번호를 사용하여 신청하고 휴대폰으로 인증 코드를 보내면 활성화됩니다!
그러면 고정 IP와 포트 80도 필요합니다. 이론적으로는 동적 도메인 이름도 사용할 수 있습니다. 개발 계정에 바인딩합니다.
다음으로 WeChat의 API에 익숙해지고 몇 가지 기본 개념을 이해해야 합니다.
이제 델파이로 개발할 수 있습니다!
먼저 접근 정보를 공부해야 합니다. 여기에는 원칙이 모두 나와 있으므로 주의 깊게 읽어야 합니다. 그런 다음 Delphi를 사용하여 해당 기능을 구현한 다음 WeChat 공개 플랫폼 인터페이스 테스트 계정을 신청해야 합니다.
함수 CheckSignature(const 서명, 타임스탬프, nonce, 토큰: 문자열): boolean;
var
strs: TStringList;
tmpStr: string;
begin
strs: = TStringList.Create;
시도
strs.Add(token);
strs.Add(timestamp);
strs.Add(nonce);
strs.Sort;
tmpStr := strs[0] + strs[1] + strs[2];
tmpStr := SHA1(tmpStr);
if tmpStr = 서명 then
결과 := True
else
Result := False;
finally
FreeAndNil(strs);
end;
end;
함수의 반환 결과가 true이면 접근을 의미합니다. 성공했습니다! 이 기능에 대해서는 csdn friends가 업로드한 예제를 참조하세요. 감사합니다. 이 예시에서는 SHA1 기능의 단위가 제공되므로 다시 다운로드해야 합니다.
이 기능을 준비했다면 다음은 이 기능을 어떻게 사용해야 할까요?
WeChat 서버는 연결된 웹 서버로 Get 요청을 보내기 때문에 우리가 직접 구현한 kbmMW 웹 서버의 PerformGet 메서드에서 이 CheckSignature를 호출해야 합니다.
함수 TDJ_FrmPhoneHTTPService.PerformGet(ClientIdent: TkbmMWClientIdentity; const AURL: 문자열;
const Args: Variant 배열): Variant;
var
FuncName: 문자열;
qv: TkbmMWHttpQueryValues ;//Get 요청에 의해 전달된 매개변수를 처리합니다.
begin
if Length(Args) < 1 then
kbmMWRaiseException(KBMMW_ERR_SERVICE_HTTP_URLMISSING, 'Missing URL.')
else
시작
FuncName := UpperCase(copy(Args[0], 2, Length(Args[0]) - 1));
if FuncName.Equals('WECHAT.HTML') then
시작
// WeChat 인터페이스로 전송
qv := TkbmMWHttpQueryValues.Create;
qv.AsString := Args[2];//get 요청에 의해 전달된 매개변수를 가져옵니다.
try
// 인증 액세스
ValueByName['echostr' ValueByName 그런 다음 '; if dmwx
.
CheckSignature
(qv.ValueByName['id'], qv .ValueByName['signature'], qv.ValueByName['timestamp' ], qv.ValueByName['nonce']) then 결과 := qv.ValueByName['echostr'];// 확인이 성공하면 echostr을 반환하여 확인이 성공했음을 WeChat 서버에 알립니다.
end;
SetResponseMimeType('text/HTML'); SetResponsecharset('utf-8') ; finally
FreeAndnil(qv);
end;
exit;/ /Get에 대한 이 응답을 종료합니다.
end;
....다음 구현을 생략합니다
실제 프로젝트에서는 WeChat 인터페이스 코드를 구현하면서 이렇게 구현했습니다. wechatImpl 유닛에서는 DataModule을 구현하여 wechatImpl 메서드를 추가로 캡슐화할 때 데이터베이스에 대한 작업을 구현할 수 있습니다.
검증을 예로 들어 DataModule에서 어떻게 구현되는지 살펴볼까요?
함수 tdmwx.CheckSignature(id, 서명, 타임스탬프, nonce: 문자열): Boolean;
begin
결과:=False;
qWXFWH.Active가 아닌 경우
qWXFWH. 열기;
if qWXFWH.Locate('fid', VarArrayOf([id]), []) then//서비스 번호 테이블을 쿼리하여 해당 ID 레코드가 있는지 확인
시작
if wechatImpl .CheckSignature( 서명, 타임스탬프, nonce, qWXFWH.FieldByName('FToken').AsString)//존재하는 경우 테이블에 정의된 토큰 값을 가져와서 확인 함수를 호출합니다.
그런 다음
결과:= 사실;
끝;
end;
그 중 qWXFWH는 WeChat 서비스 계정의 테이블을 저장하는 데 사용되는 kbmMWuniDACQuery 개체입니다. 테이블 구조는 다음과 같습니다.
CREATE TABLE WX_FWH (
FID INTEGER,// service account, 도달 다수의 서비스 계정을 관리하는 목적
FTOKEN VarChar(32),//각 서비스 계정의 토큰 값
FAPPID VarChar(16),
FAPPSECRET varchar(16),
FACCESSTOKEN VARCHAR ( 512),
FEXPIRESIN INTEGER,
FGETDATE DATETIME);
서버를 등록할 때 먼저 이 테이블에 등록 정보를 추가해야 합니다(예: id=1, token=kbmmwtoken1해당 등록 내용:
url=www.test.cc/wechat.html?id=1
token=kbmmwtoken1
이러한 방식으로 WeChat 서버가 확인 요청을 보낼 때 ID는 매개변수로 전달되면 datamodule의 CheckSignature 메소드는 id 값을 기반으로 데이터 테이블에 정의된 토큰 값을 얻은 다음 WeChat 인터페이스의 확인 메소드를 호출합니다.
위 내용을 요약하면 WeChat 액세스를 달성하기 위해 구현된 코드를 세 가지 레이어로 나누었습니다.
1 kbmmw 웹 서버의 get 메서드에서 데이터베이스 레이어의 확인 기능을 호출합니다
2. 데이터베이스 계층에서 검증 기능을 구현하고, 사전 정의된 WeChat 관련 정보(예: ID, 토큰)를 테이블에서 가져온 후 특정 WeChat 인터페이스를 호출합니다.
3. 데이터베이스에 대한 특정 WeChat 인터페이스를 구현합니다. 호출할 레이어입니다.
위챗 인터페이스 구현이 완료된 후 친구들과 공유할 계획입니다. 아쉽게도 최근 시간이 촉박하고 할 일이 많아 시간이 좀 걸릴 것 같습니다. 먼저 구현 아이디어를 공유하겠습니다.
웹 서버에 연결된 URL 주소 확인은 위챗 서비스 제공의 첫 번째 단계이므로, 진행하기 전에 위의 관련 내용을 이해해야 합니다.
실제로는 다음과 같습니다.
귀하의 서비스 계정을 팔로우하는 WeChat 사용자는 귀하의 서비스 계정으로 메시지를 보내고, WeChat 플랫폼은 귀하가 확인한 URL로 해당 메시지를 전달합니다. 이는 귀하의 WeChat 서비스의 WeChat 사용자와 동일합니다. 계정을 사용하여 웹 서버에 메시지를 보냅니다. 귀하가 개발하는 웹 서버의 목적은 이러한 메시지에 응답하고 WeChat 서비스 계정의 팔로어와 상호 작용하는 것입니다!