추가 기능 제출 관리

Microsoft Store 제출 API에서 제공하는 여러 메서드를 사용하여 앱에 대한 추가 기능(앱에서 바로 구매 제품 또는 IAP라고도 함) 제출을 관리할 수 있습니다. API 사용을 위한 필수 조건을 비롯하여 Microsoft Store 제출 API에 대한 자세한 내용은 Microsoft Store 서비스를 사용하여 제출 만들기 및 관리를 참조하세요.

Important

Microsoft Store 제출 API를 사용하여 추가 기능에 대한 제출을 만드는 경우 파트너 센터에서 변경하는 대신 API를 사용하여 제출을 추가로 변경해야 합니다. 파트너 센터를 사용하여 원래 API를 사용하여 만든 제출을 변경하는 경우 더 이상 API를 사용하여 해당 제출을 변경하거나 커밋할 수 없습니다. 경우에 따라 제출이 제출 프로세스를 더 이상 진행할 수 없는 오류 상태로 남을 수 있습니다. 이러한 문제가 발생하는 경우, 해당 제출을 삭제하고 새 제출을 생성해야 합니다.

추가 기능 제출 관리 메서드

추가 기능 제출을 가져오고, 만들고, 업데이트하고, 커밋 또는 삭제하려면 다음 메서드를 사용합니다. 이러한 방법을 사용하려면 파트너 센터 계정에 추가 기능이 이미 있어야 합니다. 파트너 센터에서 제품 유형과 제품 ID를 정의하거나 추가 기능 관리에 설명된 Microsoft Store 제출 API 메서드를 사용하여 추가 기능을 만들 수 있습니다.

메서드 URI 설명
GET https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId} 기존 추가 기능 제출 가져오기
GET https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}/status 기존 추가 기능 제출의 상태 가져오기
게시 https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions 새 추가 기능 제출 만들기
PUT https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId} 기존 추가 기능 제출 업데이트
게시 https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}/commit 새로운 또는 업데이트된 추가 기능 제출 커밋
Delete https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId} 추가 기능 제출 삭제하기

추가 기능 제출 만들기

추가 기능에 대한 제출을 만들려면 이 프로세스를 수행합니다.

  1. 아직 수행하지 않은 경우 파트너 센터 계정으로 Azure AD 애플리케이션 연결 및 클라이언트 ID와 키 얻기를 비롯하여 Microsoft Store 서비스를 사용하여 제출 만들기 및 관리에 설명된 필수 조건을 완료합니다. 이 작업은 다음 작업 후에 한 번만 실행하면 됩니다. 클라이언트 ID 및 키가 있으면 새 Azure AD 액세스 토큰을 만들어야 할 때마다 다시 사용할 수 있습니다.

  2. Azure AD 액세스 토큰 가져오기. Microsoft Store 제출 API의 메서드에 이 액세스 토큰을 전달해야 합니다. 액세스 토큰을 가져온 후 만료되기까지 60분이 걸립니다. 토큰이 만료된 후 새 토큰을 가져올 수 있습니다.

  3. Microsoft Store 제출 API에서 다음 메서드를 실행합니다. 이 메서드는 마지막으로 게시된 제출의 복사본인 진행 중인 새 제출을 만듭니다. 자세한 내용은 추가 기능 제출 만들기를 참조하세요.

    POST https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions
    

    응답 본문에는 새 제출 ID, Azure Blob Storage 제출을 위한 추가 기능 아이콘 업로딩용 SAS(Shared Access Signature) RUI, 새 제출에 대한 모든 데이터(목록과 가격 정보 등)가 포함된 추가 기능 제출 리소스가 포함되어 있습니다.

    참고 항목

    SAS URI는 계정 키를 요구하지 않고 Azure Storage의 보안 리소스에 대한 액세스를 제공합니다. SAS URI 및 Azure Blob Storage를 통한 SAS URI 사용에 대한 배경 정보는 공유 액세스 서명, 1부: SAS 모델 이해공유 액세스 서명, 2부: Blob Storage를 사용하여 SAS 만들기 및 사용을 참조하세요.

  4. 제출을 위해 새 아이콘을 추가하는 경우 아이콘을 준비하고 ZIP 보관 파일에 추가합니다.

  5. 새 제출에 대해 필요한 변경 사항으로 추가 기능 제출 데이터를 업데이트하고 다음 메서드를 실행하여 제출을 업데이트합니다. 자세한 내용은 추가 기능 제출 업데이트를 참조하세요.

    PUT https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}
    

    참고 항목

    제출에 대한 새 아이콘을 추가하는 경우 ZIP 보관 파일에서 이러한 파일의 상대 경로 및 이름을 참조하도록 제출 데이터를 업데이트해야 합니다.

  6. 제출에 대한 새 아이콘을 추가하는 경우 이전에 호출한 POST 메서드의 응답 본문에 제공된 SAS URI를 사용하여 Azure Blob Storage에 ZIP 보관 파일을 업로드합니다. 다음과 같은 다양한 플랫폼에서 이 작업을 수행하는 데 사용할 수 있는 다양한 Azure 라이브러리가 있습니다.

    다음 C# 코드 예제는 .NET용 Azure Storage 클라이언트 라이브러리의 CloudBlockBlob 클래스를 사용하여 Azure Blob Storage에 ZIP 보관 파일을 업로드하는 방법을 보여 줍니다. 이 예제에서는 ZIP 보관 파일이 스트림 개체에 이미 작성되었다고 가정합니다.

    string sasUrl = "https://productingestionbin1.blob.core.windows.net/ingestion/26920f66-b592-4439-9a9d-fb0f014902ec?sv=2014-02-14&sr=b&sig=usAN0kNFNnYE2tGQBI%2BARQWejX1Guiz7hdFtRhyK%2Bog%3D&se=2016-06-17T20:45:51Z&sp=rwl";
    Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob blockBob =
      new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob(new System.Uri(sasUrl));
    await blockBob.UploadFromStreamAsync(stream);
    
  7. 다음 메서드를 실행하여 제출을 커밋합니다. 이렇게 하면 제출이 완료되었으며 업데이트가 이제 계정에 적용되어야 한다는 사실을 파트너 센터에 알립니다. 자세한 내용은 추가 기능 제출 커밋하기를 참조하세요.

    POST https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}/commit
    
  8. 다음 메서드를 실행하여 커밋 상태를 확인합니다. 자세한 내용은 추가 기능 제출의 상태 가져오기를 참조하세요.

    GET https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}/status
    

    제출 상태 확인하려면 응답 본문의 상태 값을 검토합니다. 이 값은 CommitStarted에서 PreProcessing(요청이 성공하는 경우)으로, 또는 CommitFailed(요청에 오류가 있는 경우)로 변경되어야 합니다. 오류가 있는 경우 statusDetails 필드에 오류에 대한 자세한 내용이 포함됩니다.

  9. 커밋이 성공적으로 완료되면 수집을 위해 제출이 스토어로 전송됩니다. 이전 방법을 사용하거나 파트너 센터를 방문하여 제출 진행 상황을 계속 모니터링할 수 있습니다.

코드 예제

다음 문서는 여러 다른 프로그래밍 언어로 추가 기능 제출을 만드는 방법을 보여 주는 자세한 코드 예제를 제공합니다.

StoreBroker PowerShell 모듈

Microsoft Store 제출 API를 직접 호출하는 대신 이 API를 기반으로 명령줄 인터페이스를 구현하는 오픈 소스 PowerShell 모듈도 제공합니다. 이 모듈을 StoreBroker라고 합니다. 이 모듈을 사용하여 Microsoft Store 제출 API를 직접 호출하는 대신 명령줄에서 앱, 플라이트, 추가 기능 제출을 관리할 수 있습니다. 또는 소스에서 이 API를 호출하는 방법에 대한 예제를 더 찾아볼 수 있습니다. StoreBroker 모듈은 많은 자사 애플리케이션이 스토어에 제출되는 기본 방식으로 Microsoft 내에서 많이 사용됩니다.

자세한 내용은 GitHub의 StoreBroker 페이지를 참조하세요.

데이터 리소스

추가 기능 제출을 관리하는 Microsoft Store 제출 API 메서드는 다음과 같은 JSON 데이터 리소스를 사용합니다.

추가 기능 제출 리소스

이 리소스는 추가 기능 제출에 대해 설명합니다.

{
  "id": "1152921504621243680",
  "contentType": "EMagazine",
  "keywords": [
    "books"
  ],
  "lifetime": "FiveDays",
  "listings": {
    "en": {
      "description": "English add-on description",
      "icon": {
        "fileName": "add-on-en-us-listing2.png",
        "fileStatus": "Uploaded"
      },
      "title": "Add-on Title (English)"
    },
    "ru": {
      "description": "Russian add-on description",
      "icon": {
        "fileName": "add-on-ru-listing.png",
        "fileStatus": "Uploaded"
      },
      "title": "Add-on Title (Russian)"
    }
  },
  "pricing": {
    "marketSpecificPricings": {
      "RU": "Tier3",
      "US": "Tier4",
    },
    "sales": [],
    "priceId": "Free",
    "isAdvancedPricingModel": true
  },
  "targetPublishDate": "2016-03-15T05:10:58.047Z",
  "targetPublishMode": "Immediate",
  "tag": "SampleTag",
  "visibility": "Public",
  "status": "PendingCommit",
  "statusDetails": {
    "errors": [
      {
        "code": "None",
        "details": "string"
      }
    ],
    "warnings": [
      {
        "code": "ListingOptOutWarning",
        "details": "You have removed listing language(s): []"
      }
    ],
    "certificationReports": [
      {
      }
    ]
  },
  "fileUploadUrl": "https://productingestionbin1.blob.core.windows.net/ingestion/26920f66-b592-4439-9a9d-fb0f014902ec?sv=2014-02-14&sr=b&sig=usAN0kNFNnYE2tGQBI%2BARQWejX1Guiz7hdFtRhyK%2Bog%3D&se=2016-06-17T20:45:51Z&sp=rwl",
  "friendlyName": "Submission 2"
}

이 리소스의 값은 다음과 같습니다.

Type 설명
id string 제출 ID. 이 ID는 추가 기능 제출 만들기, 모든 추가 기능 가져오기추가 기능 가져오기 요청에 대한 응답 데이터에서 사용할 수 있습니다. 파트너 센터에서 만든 제출의 경우 이 ID는 파트너 센터의 제출 페이지 URL에서도 사용할 수 있습니다.
contentType string 추가 기능에 제공되는 콘텐츠의 형식입니다. 이는 다음 값 중 하나일 수 있습니다.
  • NotSet
  • BookDownload
  • EMagazine
  • ENewspaper
  • MusicDownload
  • MusicStream
  • OnlineDataStorage
  • VideoDownload
  • VideoStream
  • ASP
  • OnlineDownload
키워드 배열 추가 기능에 대해 최대 10개의 키워드를 포함하는 문자열 배열입니다. 앱은 이러한 키워드를 사용하여 추가 기능을 쿼리할 수 있습니다.
수명(lifetime) string 추가 기능의 수명입니다. 이는 다음 값 중 하나일 수 있습니다.
  • 계속 허용됩니다.
  • OneDay
  • ThreeDays
  • FiveDays
  • OneWeek
  • TwoWeeks
  • OneMonth
  • TwoMonths
  • ThreeMonths
  • SixMonths
  • OneYear
목록 개체 키 및 값 쌍의 사전입니다. 여기서 각 키는 2자로 된 ISO 3166-1 alpha-2 국가 코드이고 각 값은 추가 기능에 대한 목록 정보를 포함하는 목록 리소스입니다.
가격 책정 개체 추가 기능에 대한 가격 정보를 포함하는 가격 책정 리소스입니다.
targetPublishMode string 제출에 대한 게시 모드입니다. 이는 다음 값 중 하나일 수 있습니다.
  • Immediate
  • 수동
  • SpecificDate
targetPublishDate string targetPublishMode가 SpecificDate로 설정된 경우 ISO 8601 형식의 제출에 대한 게시 날짜입니다.
tag string 추가 기능에 대한 사용자 지정 개발자 데이터입니다(이 정보는 이전에 태그라고 함).
visibility string 추가 기능의 가시성입니다. 이는 다음 값 중 하나일 수 있습니다.
  • 숨겨져 있음
  • 공공 사업
  • 프라이빗
  • NotSet
status string 제출 상태. 이는 다음 값 중 하나일 수 있습니다.
  • None
  • 취소됨
  • PendingCommit
  • CommitStarted
  • CommitFailed
  • PendingPublication
  • 게시 중
  • 게시된 날짜
  • PublishFailed
  • PreProcessing
  • PreProcessingFailed
  • 자격증
  • CertificationFailed
  • Release
  • ReleaseFailed
statusDetails 개체 상태 오류에 대한 정보를 포함하여 제출 상태에 대한 추가 세부 정보가 포함된 상태 세부 정보 리소스를 자세히 설명합니다.
fileUploadUrl string 제출에 대한 패키지를 업로드하기 위한 SAS(공유 액세스 서명) URI입니다. 제출에 대한 새 패키지를 추가하는 경우 패키지가 포함된 ZIP 보관 파일을 이 URI에 업로드합니다. 자세한 내용은 추가 기능 제출 만들기를 참조하세요.
friendlyName string 파트너 센터에 표시되는 제출의 식별 이름입니다. 이 값은 제출을 만들 때 생성됩니다.

목록 리소스

이 리소스는 추가 기능에 대한 목록 정보를 포함합니다. 이 리소스의 값은 다음과 같습니다.

Type 설명
description string 추가 기능 목록에 대한 설명입니다.
아이콘 개체 추가 기능 목록의 아이콘에 대한 데이터가 들어 있는 아이콘 리소스입니다.
title string 추가 기능 목록에 대한 제목입니다.

아이콘 리소스

이 리소스에는 추가 기능 목록에 대한 아이콘 데이터가 포함되어 있습니다. 이 리소스의 값은 다음과 같습니다.

Type 설명
fileName string 제출을 위해 업로드한 ZIP 아카이브의 아이콘 파일 이름입니다. 아이콘은 정확히 300 x 300픽셀의 .png 파일이어야 합니다.
fileStatus string 아이콘 파일의 상태. 이는 다음 값 중 하나일 수 있습니다.
  • None
  • PendingUpload
  • Uploaded
  • PendingDelete

가격 리소스

이 리소스에는 추가 기능에 대한 가격 책정 정보가 포함되어 있습니다. 이 리소스의 값은 다음과 같습니다.

Type 설명
marketSpecificPricings 개체 키 및 값 쌍의 사전으로, 각 키는 2자로 된 ISO 3166-1 alpha-2 국가 코드이고 각 값은 가격 계층입니다. 이러한 항목은 특정 시장에서 추가 기능에 대한 사용자 지정 가격을 나타냅니다. 이 사전의 모든 항목은 지정된 시장의 priceId 값으로 지정된 기본 가격을 재정의합니다.
sales 배열 더 이상 사용되지 않음 추가 기능에 대한 판매 정보를 포함하는 판매 리소스의 배열입니다.
priceId string 가격 계층으로서, 추가 기능의 기본 가격을 나타냅니다.
isAdvancedPricingModel 부울 값 true인 경우 0.99 USD에서 1999.99 USD까지의 확장된 기준 가격 세트에 액세스할 수 있는 권한이 개발자 계정에 부여됩니다. false인 경우 0.99 USD에서 999.99 USD까지의 원래 기준 가격 세트에 액세스할 수 있는 권한이 개발자 계정에 부여됩니다. 여러 계층에 대한 자세한 내용은 기준 가격을 참조하세요.

참고 이 필드는 읽기 전용입니다.

판매 리소스

이 리소스에는 추가 기능에 대한 판매 정보가 포함됩니다.

Important

판매 리소스는 더 이상 지원되지 않으며, 현재 Microsoft Store 제출 API를 사용하여 추가 기능 제출에 대한 판매 데이터를 가져오거나 수정할 수 없습니다. 앞으로 Microsoft Store 제출 API를 업데이트하여 추가 기능 제출에 대한 판매 정보에 프로그래밍 방식으로 액세스하는 새로운 방법을 도입할 예정입니다.

이 리소스의 값은 다음과 같습니다.

Type Description
이름 string 판매의 이름입니다.
basePriceId string 판매의 기본 가격에 사용할 가격 계층입니다.
startDate string ISO 8601 형식의 판매에 대한 시작 날짜입니다.
endDate string ISO 8601 형식의 판매에 대한 종료 날짜입니다.
marketSpecificPricings 개체 키 및 값 쌍의 사전으로, 각 키는 2자로 된 ISO 3166-1 alpha-2 국가 코드이고 각 값은 가격 계층입니다. 이러한 항목은 특정 시장에서 추가 기능에 대한 사용자 지정 가격을 나타냅니다. 이 사전의 모든 항목은 지정된 시장의 basePriceId 값으로 지정된 기본 가격을 재정의합니다.

상태 세부 정보 리소스

이 리소스에는 제출 상태에 대한 추가 세부 정보가 포함되어 있습니다. 이 리소스의 값은 다음과 같습니다.

Type 설명
오류 개체 제출에 대한 오류 세부 정보가 포함된 상태 세부 리소스의 배열입니다.
경고 개체 제출에 대한 경고 세부 정보가 포함된 상태 세부 리소스의 배열입니다.
certificationReports 개체 제출에 대한 인증 보고서 데이터에 대한 액세스를 제공하는 인증 보고서 리소스의 배열입니다. 인증에 실패하는 경우 이러한 보고서를 검사하여 자세한 정보를 확인할 수 있습니다.

상태 세부 정보 리소스

이 리소스에는 제출에 대한 관련 오류 또는 경고에 대한 추가 정보가 포함되어 있습니다. 이 리소스의 값은 다음과 같습니다.

Type 설명
코드 string 오류 또는 경고 유형을 설명하는 제출 상태 코드입니다.
details string 문제에 대한 자세한 내용이 포함된 메시지입니다.

인증 보고서 리소스

이 리소스는 제출에 대한 인증 보고서 데이터에 대한 액세스를 제공합니다. 이 리소스의 값은 다음과 같습니다.

Type 설명
날짜 string 보고서가 생성된 날짜 및 시간(ISO 8601 형식)입니다.
reportUrl string 보고서에 액세스할 수 있는 URL입니다.

열거형

이러한 메서드는 다음 열거형을 사용합니다.

가격 책정 계층

다음 값은 추가 기능 제출에 대한 가격 리소스 리소스에서 사용할 수 있는 기준 가격을 나타냅니다.

설명
Base 가격 계층은 설정되지 않았습니다. 추가 기능의 기본 가격을 사용합니다.
NotAvailable 지정 지역에서 사용할 수 없는 추가 기능입니다.
Free 추가 기능은 무료입니다.
계층xxxx 추가 기능에 대한 기준 가격을 계층xxxx 형식으로 지정하는 문자열입니다. 현재 다음 범위의 기준 가격이 지원됩니다.

  • 가격 책정 리소스isAdvancedPricingModel 값이 true인 경우 사용자 계정에 대해 사용 가능한 기준 가격 값은 Tier1012 - Tier1424입니다.
  • 가격 책정 리소스isAdvancedPricingModel 값이 false인 경우 사용자 계정에 대해 사용 가능한 기준 가격 값은 Tier2 - Tier96입니다.
각 계층과 관련된 시장별 가격을 포함하여 개발자 계정에 사용할 수 있는 기준 가격을 나열한 전체 표를 보려면 파트너 센터에서 앱 제출에 대한 가격 책정 및 가용성 페이지로 이동하여 지역/국가 및 사용자 지정 가격 섹션에 있는 표 보기 링크를 클릭합니다(일부 개발자 계정의 경우, 이 링크는 가격 책정 섹션에 있음).

제출 상태 코드

다음 값은 제출의 상태 코드를 나타냅니다.

설명
None 코드가 지정되지 않았습니다.
InvalidArchive 패키지가 포함된 ZIP 보관 파일이 잘못되었거나 인식할 수 없는 보관 형식이 있습니다.
MissingFiles ZIP 보관 파일에 제출 데이터에 나열된 모든 파일이 없거나 보관 파일의 잘못된 위치에 있습니다.
PackageValidationFailed 제출에서 하나 이상의 패키지의 유효성을 검사하지 못했습니다.
InvalidParameterValue 요청 본문의 매개 변수 중 하나가 잘못되었습니다.
InvalidOperation 시도한 작업이 잘못되었습니다.
InvalidState 시도한 작업이 패키지 플라이트의 현재 상태에 대해 유효하지 않습니다.
ResourceNotFound 지정된 패키지 플라이트를 찾을 수 없습니다.
ServiceError 내부 서비스 오류로 인해 요청이 성공하지 못했습니다. 요청을 다시 시도합니다.
ListingOptOutWarning 개발자가 이전 제출에서 목록을 제거했거나 패키지에서 지원하는 목록 정보를 포함하지 않았습니다.
ListingOptInWarning 개발자가 목록을 추가했습니다.
UpdateOnlyWarning 개발자가 업데이트 지원만 있는 항목을 삽입하려고 합니다.
기타 제출이 인식할 수 없거나 분류되지 않은 상태입니다.
PackageValidationWarning 패키지 유효성 검사 프로세스로 인해 경고가 발생했습니다.