플랫폼 기술-SPI 서비스 액세스 문서


SPI란 무엇입니까

  • 서비스 제공자 인터페이스
    • API: 플랫폼은 인터페이스를 제공하고 이를 구현합니다. 호출합니다.
    • SPI: 플랫폼은 표준을 제공하고, 사용자는 이를 구현하며, 여러 구현이 있을 수 있습니다

image

SPI 정산 프로세스

image

해야 할 일은 세 번째 상자의 작업입니다.

애플리케이션 비즈니스 시나리오

먼저 "타사 애플리케이션" 라벨이 있는 앱이 있어야 합니다. 신청하려면 여기를 클릭하세요.

응용 프로그램이 성공한 후 응용 프로그램의 콘솔에 들어가면 "API 서비스 공급자" 메뉴가 표시됩니다.

image

참고: 개요에서 현재 응용 프로그램의 AppKey 및 AppSecret을 볼 수 있습니다.

  • AppKey: 두 가지 기능이 있습니다.
    • 씬 소유자(SPI를 소개하는 사람)가 이 AppKey를 씬에 바인딩하면 특정 씬에 대한 개발 권한을 갖게 됩니다. 이 페이지에서 이를 확인할 수 있습니다. 장면.
    • SPI 호출자는 구현한 서비스로 전송하려면 TargetAppkey에서 이 AppKey를 입력해야 합니다.
  • AppSecret: 개방형 플랫폼(TOP)이 구현한 서비스를 호출하면 메시지에 서명됩니다(자세한 내용은 관련 서명 참조). ) 장). 이 키는 서명할 때 사용됩니다. 서명 확인을 위해 이 키를 사용해야 합니다.

"날씨" 장면을 예로 들어보겠습니다. 장면 소유자가 이 장면을 AppKey에 바인딩하면 이 페이지에서 "날씨" 장면을 볼 수 있습니다.

현재 현장상태는 "개발중" 입니다. 이 상태 외에도 장면에는 "온라인 및 실행 중" 및 "업그레이드 중"과 같은 여러 상태가 있습니다.

  • "개발 중"에서 "온라인 및 실행 중"으로: 출시 신청이 승인되었습니다.
  • "온라인 및 실행 중"에서 "업그레이드 중"으로 클릭하여 업그레이드를 입력하고 API를 클릭하여 버전을 업그레이드하세요. "업그레이드 취소"를 클릭하거나 릴리스를 신청하고 검토를 통과하면 "온라인 및 실행 중"으로 돌아갑니다.

image

Scene에 들어가면 아래 그림과 같이 Scene에 구현되는 모든 API를 볼 수 있습니다.

image

한편, 장면 옆에는 현재 상태가 있습니다.

문서 읽기

개발하기 전에 문서를 주의 깊게 읽으십시오. "Develop Documentation"을 클릭하면 아래 그림을 볼 수 있습니다.

image

문서에 따라 엄격하게 개발하고 다음 사항에 특히 주의하세요.

  • 요청 방법: POST 또는 GET;
  • 요청 인코딩: UTF-8 또는 GBK;
  • 공용 요청 매개변수, 비즈니스 요청 매개변수 및 응답 매개변수 문서와 완전히 일치해야 합니다. 반환 값은 반환 예시를 참조하세요.
  • 예외 처리: 지정된 필드를 여기 사양에 따라 반환하면 개방형 플랫폼은 이를 사용하여 반환의 성공 여부를 결정합니다.
  • 요청 예시: 여기 예시를 사용하여 매개변수를 바꾸고 구현한 서비스를 테스트할 수 있습니다. 이 방법은 오류 문제를 해결하는 데 매우 유용합니다.

서비스 개발

서비스 개발은 자체적으로 연구하고 개발하는 과정이므로 개발을 위해 문서에 있는 프로토콜을 엄격하게 따르기만 하면 됩니다. 개발 언어 및 배포 환경에 대한 특별한 요구 사항은 없습니다.

보안을 위해 서비스에서 서명을 확인하고 요청자의 IP를 확인하는 것이 좋습니다. 귀하의 개발을 용이하게 하기 위해 SDK가 제공됩니다. SDK 다운로드 페이지는 아래 그림을 참조하십시오.

image

서명 확인

필수! 서명 확인의 목적은 해커가 악의적으로 귀하의 서비스에 전화하는 것을 방지하고 서비스 시작 소스가 Alibaba 플랫폼인지 확인하는 것입니다.

현재 서명 확인 방법은 JAVA, PHP, .NET 세 가지 버전의 SDK만 제공합니다. 기타 언어는 직접 구현해야 합니다.

서명 방법 생성 규칙은 다음과 같습니다.

  • 나중에 사용할 수 있도록 쿼리 매개변수와 헤더 매개변수를 맵에 저장합니다. 설명의 편의를 위해 이 맵의 이름은 params입니다. 참고: 쿼리의 sign 매개변수는 params에 넣을 수 없습니다.
  • 본문의 유형이 form-data인 경우 파일을 제외한 본문의 모든 매개변수를 params에 넣습니다. 기술적인 이유로 양식 데이터를 통해 전달된 파일은 서명되지 않습니다.
  • 본문의 유형이 json 또는 xml인 경우 나중에 사용할 수 있도록 본문을 임시로 저장하세요. 설명의 편의를 위해 이 콘텐츠의 이름은 body입니다.
  • 매개변수를 키의 알파벳 순서로 정렬한 후 순회하여 키1+값2+키2+값2 형식으로 문자를 구성합니다. . 문자열은 설명의 편의를 위해 나중에 서명 문자열이라고 부르겠습니다. 값이 비어 있으면 대신 ""를 사용하세요. 본문이 비어 있지 않으면 서명 문자열 끝에 본문의 모든 내용을 추가합니다.
  • 서명 문자열의 머리 부분과 꼬리 부분에 비밀을 추가합니다. 이 비밀은 SP가 애플리케이션에 적용될 때 획득됩니다. 이 시점에서 서명 문자열이 생성됩니다.
  • 서명 문자열에 대해 md5 및 hex를 수행하고 최종적으로 서명을 받습니다. 요약하면 기호 생성 공식은 다음과 같습니다.
    hex(md5(secret+sorted(header_params+url_params+form_params)+body)+secret)
  • 마지막으로 생성된 기호를 다음과 비교합니다. 쿼리 서명의 정확성은 얻은 서명과 비교하여 확인할 수 있습니다.

서명확인 샘플코드는 다음과 같습니다.

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; ㅋㅋㅋ 738585932624564L;
 
protected void doPost(HttpServletRequest req, HttpServletResponse rsp)는 ServletException, IOException을 발생시킵니다. ln(result.isSuccess());
        System.out.println (result.getRequestBody());
    }
 
}



참고: HTTP 요청의 URL 매개변수 인코딩 문자 세트와 문자열을 MD5 다이제스트의 바이트 스트림으로 변환할 때의 문자 세트는 일관되어야 합니다. 그렇지 않으면 중국어 매개변수가 포함된 서명이 TOP와 일치하지 않게 됩니다.

IP 출처 확인

필수! 해커가 개방형 플랫폼에서 시작된 HTTP 요청을 가로채서 재생 공격을 위해 다른 장소로 가져가는 것을 방지합니다.

Taobao Open Platform Gateway의 송신 IP 세그먼트는 taobao.top.ipout.get을 통해 얻을 수 있습니다. 최신 데이터를 얻으려면 정기적으로 API를 호출해야 합니다.

IP 소스 검증 샘플 코드는 다음과 같습니다.

public class TestHttpServlet은 HttpServlet을 확장합니다. ServletException, IOException이 발생합니다.
// 최신 IP 세그먼트 목록은 taobao.top.ipout.get
List ipList = new ArrayList();
ipList.add("140.205.144.0/24");
ipList를 통해 얻을 수 있습니다. .add("140.205.145.0/24");
ipList.add("140.205.40.0/24");
ipList.add("140.205.39.0/24");
ipList.add("140.205.51.0 / 24") ;
ipList.add("140.205.56.0/24");
boolean isSuccess = SpiUtils.checkRemoteIp(req, ipList);
if (!isSuccess) {
            rsp.get Writer().write("access 거부됨");
              rsp.getWriter().flush();

또 다른 방법은 HTTP 서버에서 IP 액세스 규칙을 구성하는 것입니다. 예를 들어 TOP IP만 /taobao 디렉터리에 액세스하도록 허용하도록 Nginx를 구성합니다. 140.205 .145.0/24;

140.205.39.0/24 허용;
140.205.40.0/24 허용;
140.205.51.0/24 허용;
140.205.56.0/24 허용;
모두 거부;
}



구성 서비스

"개발 및 테스트"를 클릭하여 아래 표시된 페이지로 들어갑니다.

image

여기에는 두 개의 주소 입력 상자가 있습니다.

  • 테스트 환경 주소: 이 주소는 테스트 전용입니다. 이에 대해서는 다음 섹션에서 자세히 설명합니다.
  • 온라인 환경 주소: 본 SPI 서비스가 출시되어 온라인이 되었을 때, 온라인 환경에서 호출되는 주소는 이 URL입니다.

테스트 서비스

테스트를 시작할 수 있는 곳은 두 곳이 있습니다.

1) SPI 테스트 도구입니다. 이 도구에 들어가려면 이 페이지에서 "테스트 시작"을 클릭하세요. 아래 그림을 참조하세요.

image

기본적으로 테스트 사례는 하나뿐입니다: 연기 테스트입니다. 이 테스트는 프로토콜에 따라 SPI 테스트 도구로 구성되어 테스트 환경 주소로 전송되는 HTTP 요청입니다.

테스트 케이스 추가를 원하시면 SPI 플랫폼 담당자에게 문의해주세요.

테스트가 완료된 후 테스트 세부정보에서 이 HTTP 요청의 모든 매개변수를 볼 수 있습니다. 특히, 귀하의 서비스가 정상적인지 여부를 사전 점검할 수 있는 "응답 정보"의 내용에 주의를 기울이시기 바랍니다.

image

2) 일일 API 테스트 도구, 샌드박스 환경: 여기서 테스트는 SPI의 전체 프로세스를 테스트하는 것입니다. 이는 서비스가 온라인에 출시되기 전에 필수적인 단계입니다. 서비스가 정상적으로 운영되고 있습니다.

TOP API를 호출하면 TOP가 요청을 테스트 환경 주소로 라우팅합니다. API 호출자에게 AppKey를 알려야 하며 후자는 매개변수 targetAppkey를 채우기 위해 그 앞에 "10"을 추가합니다.

당신이 직접 게스트 API 호출자가 될 수도 있습니다. 전제 조건은 먼저 장면 소유자가 이 API를 샌드박스에 추가한 다음 이 API 호출 권한을 신청하는 것입니다. 샌드박스 테스트를 위한 targetAppkey는 앞에 "10"이 붙은 앱 키이기도 하며 서명 키는 샌드박스 키입니다.

API 호출 방법에 대한 문서를 읽으려면 여기로 이동하세요.

출시 신청

테스트가 완료된 후 "Complete Test"를 클릭하면 그림 5의 장면 목록 페이지로 돌아갑니다. 새로 구성된 URL을 게시하여 적용할 수 있다고 생각되면 "공개 신청"을 클릭하세요. 이 시나리오가 "검토 필요"로 구성된 경우 SPI 플랫폼 담당자의 검토를 거쳐야 릴리스되고 적용됩니다. 그렇지 않으면 즉시 적용됩니다.

FAQ

  • 이 문서에 대한 FAQ는 아직 없습니다