서명 검증
연결 (Concatenate)
먼저, 가맹점은 응답에서 다음 정보를 가져옵니다.
HTTP 헤더
TTPay-Timestamp의 회신 타임스탬프.HTTP 헤더
TTPay-Nonce의 회신 무작위 문자열.응답 본문 (Response Body). 인터페이스에서 반환된 순서에 따라 인터페이스를 확인합니다. 순서가 올바르지 않으면 검증에 실패합니다.
서명 문자열은 3줄로 구성되며, 각 줄마다 하나의 매개변수가 있습니다. 줄은 \n(줄바꿈, ASCII 인코딩 값 0x0A)으로 끝나며, 마지막 줄에는 \n을 추가하지 마십시오. 매개변수 자체가 \n으로 끝나는 경우에도 추가로 \n을 붙여야 합니다.
Reply timestamp\n
Reply random string\n
Reply message body예를 들어 HTTP 회신 메시지는 다음과 같습니다:
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 02 Apr 2019 12:59:40 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 2204
Connection: keep-alive
Keep-Alive: timeout=8
Content-Language: zh-CN
TTPay-Nonce: c5ac7061fccab6bf3e254dcf98995b8c
TTPay-Signature: CtcbzwtQjN8rnOXItEBJ5aQFSnIXESeV28Pr2YEmf9wsDQ8Nx25ytW6FXBCAFdrr0mgqngX3AD9gNzjnNHzSGTPBSsaEkIfhPF4b8YRRTpny88tNLyprXA0GU5ID3DkZHpjFkX1hAp/D0fva2GKjGRLtvYbtUk/OLYqFuzbjt3yOBzJSKQqJsvbXILffgAmX4pKql+Ln+6UPvSCeKwznvtPaEx+9nMBmKu7Wpbqm/+2ksc0XwjD+xlvlECkCxfD/OJ4gN3IurE0fpjxIkvHDiinQmk51BI7zQD8k1znU7r/spPqB+vZjc5ep6DC5wZUpFu5vJ8MoNKjCu8wnzyCFdA==
TTPay-Timestamp: 1554209980
Cache-Control: no-cache, must-revalidate
{"app_id":"xxxx"}그러면 서명 문자열은 다음과 같습니다:
회신 (Reply)
tokenpay 회신 서명은 HTTP 헤더 TTPay-Signature를 통해 전송됩니다. (참고: 조판상 줄바꿈이 포함될 수 있으므로 이는 예시이며 실제 데이터는 한 줄에 있어야 합니다.)
판단 (Judgment)
AES-256-ECB 방식을 사용하여 서명을 생성합니다(서명 생성 참조 가능). 생성된 서명을 회신 서명과 비교합니다. 일치하지 않으면 데이터가 변조된 것입니다.
마지막 업데이트