lightbulb_outline Please take our October 2018 developer survey. Start survey

인앱 결제 관리

인앱 결제 덕분에 재무 트랜잭션을 처리하는 번거로움은 사라졌지만, 그래도 몇 가지 관리 작업은 수행할 필요가 있습니다. 즉, 다음과 같은 작업이 있습니다.

  • Google Play Developer Console에서 상품 목록 설정 및 유지 관리
  • 테스트 계정 등록
  • 필요 시 환불 처리

테스트 계정을 등록하려면 Google Play 게시자 계정이 있어야 합니다. 이미 Google Play에 게시자 계정이 있으면 기존 계정을 사용하면 됩니다. 인앱 결제를 지원하려고 새 계정에 등록할 필요는 없습니다. 게시자 계정이 없으면 Google Play 개발자로 등록하여 Google Play Developer Console을 통해 게시자 계정을 설정할 수 있습니다.

상품 목록을 만들고 사용자에게 환불하려면 Google Payments 판매자 계정이 있어야 합니다. 판매자 계정이 없으면 Developer Console을 통해 등록하면 됩니다.

상품 목록 생성

Google Play Developer Console은 개발자가 게시한 각각의 앱에 대한 상품 목록을 제공합니다. 앱의 상품 목록에 나열되어 있는 아이템만 Google Play의 인앱 결제 기능을 통해 판매할 수 있습니다. 각 앱마다 자체적인 상품 목록이 있으며, 다른 앱의 상품 목록에 표시되는 아이템을 판매할 수는 없습니다.

개발자 계정에 나열되어 있는 앱에 대한 In-app Products 페이지를 열어 앱의 상품 목록에 액세스할 수 있습니다. Google Payments 판매자 계정을 보유하고 있고 앱의 매니페스트에 com.android.vending.BILLING 권한이 포함되어 있는 경우에만 In-app Products 페이지가 나타납니다. 이 권한에 대한 자세한 내용은 앱의 매니페스트 업데이트를 참조하세요.

상품 목록에는 앱에서 판매 중인 아이템, 즉 인앱 상품, 구독 또는 이 두 가지의 조합이 지정되어 있습니다. 각 아이템마다 상품 목록에는 상품 ID, 상품 설명, 가격 등의 정보가 수록되어 있습니다. 알파 및 베타 채널에 게시된 앱을 비롯하여, 게시된 어떤 앱에 대한 상품 목록이든 만들 수 있습니다.

상품 목록에는 앱에서 판매 중인 아이템에 대한 메타데이터만 저장되며, 디지털 콘텐츠는 저장되지 않습니다. 앱에서 판매하는 디지털 콘텐츠를 저장하고 제공할 책임은 앱 개발자에게 있습니다.

참고: 이전에는 게시되지 않은 초안 버전을 업로드하여 앱을 테스트할 수 있었습니다. 이 기능은 더 이상 지원되지 않으며, 그 대신 알파 또는 베타 배포 채널에 앱을 게시해야 합니다. 자세한 내용은 초안 앱 지원 중단 을 참조하세요.

그 밖에도, 앱 패키지에는 상품 목록이 하나만 있을 수 있습니다. 어떤 앱에 대한 상품 목록을 생성하고 여러 가지 APK 기능을 사용하여 그 앱에 대해 두 개 이상의 APK를 배포하면, 앱 목록과 연관된 모든 APK 버전에 상품 목록이 적용됩니다. 여러 가지 APK 기능을 사용하는 경우에는 각 APK마다 상품 목록을 개별적으로 만들 수 없습니다.

상품 목록에 아이템을 추가하는 방법은 두 가지가 있습니다. 인앱 상품 페이지에 한 번에 하나씩 아이템을 추가하거나, 쉼표로 구분된 값(CSV) 파일에서 아이템을 가져와서 아이템을 일괄적으로 추가할 수 있습니다. 앱에 인앱 아이템이 몇 개밖에 없거나 테스트 목적으로 상품 목록에 아이템을 몇 개만 추가할 경우에는 한 번에 한 아이템씩 추가하는 것이 유용합니다. CSV 파일을 사용하는 방법은 앱에 있는 인앱 아이템 개수가 많을 때 유용합니다.

참고: 구독을 포함한 상품 목록의 일괄 업로드는 지원되지 않습니다. 또한, 일괄 업로드로 기존 아이템을 업데이트할 때 가격 템플릿에 링크되어 있는 인앱 상품에 대한 변경 내용을 포함할 수 없습니다.

상품 목록에 한 번에 하나씩 아이템 추가

Developer Console UI를 사용하여 상품 목록에 아이템을 추가하려면 다음 단계를 따르세요.

  1. 게시자 계정에 로그인합니다.
  2. All applications 패널에서 앱 이름을 클릭한 다음, In-app Products 페이지를 엽니다.
  3. Add new product를 클릭합니다. 판매 중인 아이템의 상품 유형과 ID를 입력한 후 Continue를 클릭합니다.

    상품 유형

    상품 유형은 Managed product 또는 Subscription일 수 있습니다. 아이템을 만든 후에는 아이템의 상품 유형을 변경할 수 없습니다. 자세한 내용은 상품 유형 선택을 참조하세요.

    참고: 구독 아이템의 경우, 아이템을 게시한 후에는 아이템의 가격을 변경할 수 없습니다.

    상품 ID

    상품 ID는 앱의 네임스페이스 전체에서 고유한 ID입니다. 상품 ID는 소문자나 숫자로 시작하고 소문자(a-z), 숫자(0-9), 밑줄(_), 마침표(.)로만 구성되어야 합니다. 상품 ID android.testandroid.test로 시작하는 모든 상품 ID와 마찬가지로 예약됩니다.

    참고: 상품 ID 네임스페이스는 신중하게 계획하세요. 일단 아이템이 생성되고 나면 아이템의 상품 ID를 수정할 수 없고 앱 내에서 상품 ID를 재사용할 수도 없습니다.

  4. 아이템에 대한 추가 정보를 입력하고 Save를 클릭합니다.

    게시 상태

    아이템의 게시 상태는 Active 또는 Inactive일 수 있습니다. 결제 중에 사용자에게 보이도록 하려면 아이템의 게시 상태를 Active로 설정하고 Google Play에 아이템의 앱을 게시해야 합니다.

    참고: 테스트 계정을 사용 중인 경우 사용자는 게시되지 않은 앱 내에 있는 활성 아이템도 볼 수 있습니다. 자세한 내용은 인앱 결제 테스트를 참조하세요.

    언어와 번역

    기본적으로, 인앱 상품은 상위 앱에서 기본 언어를 상속합니다.

    Add Translations를 선택하여 인앱 상품에 대해 현지화된 제목과 설명을 제공할 수 있습니다. Google Play에서 기본 언어로 제공된 제목과 설명을 기반으로 인앱 상품의 제목과 설명이 자동으로 번역되도록 하려면 제공하려는 언어만 선택하면 됩니다. 특정 언어로 사용자 지정 번역을 제공할 수도 있습니다.

    제목
    제목은 아이템에 대해 간략히 설명해주는 이름입니다. 제목의 예를 들자면, "Sleeping potion"이 있습니다. 각 아이템마다 제목이 있어야 합니다. 결제 중에 사용자에게 제목이 표시됩니다. 최적의 모양이 되도록 하려면 제목이 25자를 초과하면 않는 것이 좋지만, 최대 55자까지 사용할 수는 있습니다.
    설명
    설명은 아이템에 대한 자세한 설명입니다. 설명의 예를 들자면, "Instantly puts creatures to sleep. Does not work on angry elves."가 있습니다. 각 아이템마다 설명이 있어야 합니다. 설명은 최대 80자까지 쓸 수 있습니다.
    가격

    가격은 자국 통화 단위로 제시하거나 기존 가격 템플릿에 가격을 링크합니다. 개발자가 입력하는 가격이나 가격 템플릿의 가격을 기반으로 다양한 통화에 대한 국가별 가격이 자동으로 채워집니다. 이렇게 생성된 가격에는 현재 환율과 지역별로 적절한 가격 패턴이 적용됩니다(그림 1 참조).

    다른 통화에 대한 가격을 수동으로 변경할 수도 있지만, 통화가 앱이 출시되는 대상 국가 중 하나에서 사용되는 경우에만 변경할 수 있습니다. Google Play Developer Console의 Pricing & Distribution 페이지에서 앱의 대상 국가를 지정할 수 있습니다.

USD 단위로 가격이 1.99달러인 아이템은 보통
  AUD, EUR, BOB 등의 다른 화폐 단위에서는 다른 금액이 됩니다. 가격에 세금을 부가하는 국가도 있습니다.
그림 1. 인앱 상품에 대한 추가 통화 지정

상품 목록에 아이템 일괄 추가

CSV 파일을 사용하여 상품 목록에 아이템을 일괄적으로 추가하려면 먼저 CSV 파일부터 만들어야 합니다. CSV 파일에서 지정하는 데이터 값은 In-app Products UI를 통해 수동으로 지정하는 것과 동일한 데이터 값을 나타냅니다(상품 목록에 한 번에 하나씩 아이템 추가 참조).

인앱 상품 내에서 CSV 파일을 가져오고 내보내는 경우 국가별 가격을 염두에 두세요. 자동 채우기를 사용하는 경우 세금을 제외한 기본 가격을 제시할 수 있으며, 그러면 세금을 포함한 가격이 자동으로 채워집니다. 자동 채우기를 사용하지 않을 경우에는 제시 가격에 세금을 포함해야 합니다.

참고: 구독을 포함한 상품 목록의 일괄 업로드는 지원되지 않습니다. 또한, 일괄 업로드 시 기존 아이템을 업데이트하면 가격 템플릿에 링크되어 있는 인앱 상품에 대한 변경 내용을 포함할 수 없습니다.

CSV 파일에 지정되어 있는 아이템을 가져오려면 다음 절차를 수행하세요.

  1. 게시자 계정에 로그인합니다.
  2. All applications 패널에서 앱 이름을 선택한 다음, In-app Products 페이지를 엽니다.
  3. 인앱 상품 목록 페이지에서 Import/Export > Import in-app products from CSV file을 클릭한 후 CSV 파일을 선택합니다.

    CSV 파일은 컴퓨터의 로컬 위치에 있거나 컴퓨터에 연결된 로컬 디스크에 있어야 합니다.

  4. 상품 목록에 있는 기존 아이템을 덮어쓰려면 Overwrite 체크박스를 선택합니다.

    이 옵션을 선택하면 CSV 파일에 있는 product_id의 값이 상품 목록에 있는 기존 아이템의 In-app Product ID와 일치하는 경우에만 기존 아이템의 값을 덮어씁니다. 덮어쓰더라도 상품 목록에는 있지만 CSV 파일에는 없는 아이템은 삭제되지 않습니다.

인앱 상품 목록 페이지에서 Export to CSV를 클릭하면 기존 상품 목록을 CSV 파일로 내보낼 수도 있습니다. 이는 상품 목록에 아이템을 수동으로 추가했는데 CSV 파일을 통한 상품 목록 관리를 시작하려는 경우에 유용합니다.

아이템의 일괄 처리 서식 지정

CSV 파일에서는 데이터 값 구분을 위해 쉼표(,)와 세미콜론(;)을 사용합니다. 쉼표는 기본 데이터 값의 구분에 사용되고, 세미콜론은 하위 값의 구분에 사용됩니다. 예를 들어, CSV 파일의 구문은 다음과 같습니다.

"product_id","publish_state","purchase_type","autotranslate ","locale; title; description","autofill","country; price"

이에 대한 설명과 자세한 사용 방법은 아래 내용을 참조하세요.

product_id
이는 In-app Products UI에서 In-app Product ID 설정과 같은 것입니다. 상품 목록에 이미 존재하는 product_id를 지정하고 CSV 파일을 가져오는 동안 상품 목록을 덮어쓰기로 선택하는 경우, 기존 아이템에 대한 데이터를 CSV 파일에 지정된 값으로 덮어쓰게 됩니다. 덮어쓰기 기능을 사용할 경우 상품 목록에는 있지만 CSV 파일에는 없는 아이템은 삭제되지 않습니다.
publish_state
이는 In-app Products UI에서 Publishing State 설정과 같은 것입니다. published 또는 unpublished일 수 있습니다.
purchase_type
이는 In-app Products UI에서 Product Type 설정과 같은 것입니다. In-app Products UI에서 Managed per user account와 같은 managed_by_android 또는 In-app Products UI에서 Unmanaged와 같은 managed_by_publisher일 수 있습니다.
autotranslate
이는 In-app Products UI에서 Fill fields with auto translation 체크박스를 선택하는 것과 같습니다. true 또는 false일 수 있습니다.
locale

이는 In-app Products UI에서 Language 설정과 같은 것입니다. 기본 로케일에 대한 항목이 있어야 합니다. 기본 로케일은 로케일 목록에서 첫 번째 항목이어야 하며, titledescription을 포함해야 합니다. titledescription의 기본 버전 외에도 번역 버전을 제공하고 싶다면 다음 구문 규칙에 따르세요.

  • autotranslatetrue이면 다음 형식을 사용하여 기본 로케일, 기본 제목, 기본 설명, 기타 로케일을 지정하세요.

    "true,"default_locale; default_locale_title; default_locale_description; locale_2; locale_3, ..."

  • autotranslatefalse이면 다음 형식을 사용하여 기본 로케일, 기본 제목, 기본 설명뿐 아니라 번역된 제목과 설명도 지정하세요.

    "false,"default_locale; default_locale_title; default_locale_description; locale_2; locale_2_title; local_2_description; locale_3; locale_3_title; locale_3_description; ..."

locale 필드와 함께 사용할 수 있는 언어 코드의 목록은 표 1을 참조하세요.

title
이는 In-app Products UI에서 Title 설정과 같은 것입니다. title에 세미콜론이 포함된 경우 백슬래시로 이스케이프되어야 합니다(예: \;). 또한, 백슬래시 역시 백슬래시로 이스케이프되어야 합니다(예: \\).
description
이는 In-app Products UI에서 Description과 같은 것입니다. description에 세미콜론이 포함된 경우 백슬래시로 이스케이프되어야 합니다(예: \;). 또한, 백슬래시 역시 백슬래시로 이스케이프되어야 합니다(예: \\).
autofill

이는 In-app Products UI에서 Auto Fill을 클릭하는 것과 같은 것입니다. true 또는 false일 수 있습니다. countryprice를 지정하는 구문은 어떤 autofill 설정을 사용하느냐에 따라 달라집니다.

  • autofilltrue로 설정되어 있으면 자국 통화로 기본 가격만 지정하면 되며, 다음 구문을 사용하세요.

    "true","default_price_in_home_currency"

  • autofillfalse로 설정되어 있으면 각각의 통화에 대해 countryprice를 지정해야 하며, 다음 구문을 사용하세요.

    "false", "home_country; default_price_in_home_currency; country_2; country_2_price; country_3; country_3_price; ..."

참고: autofill의 값으로 false를 사용하고 국가 가격을 수동으로 설정하는 경우에는 제시하는 가격에 세율을 포함한 국가별 가격 패턴을 포함해야 합니다.

country
가격을 지정하는 대상 국가입니다. 앱이 대상으로 삼는 국가만 나열할 수 있습니다. 국가 코드는 2자로 된 대문자 ISO 국가 코드(예: "US")로, ISO 3166-2에 규정되어 있습니다.
price
이는 In-app Products UI에서 Price와 같은 것입니다. 가격은 마이크로 단위로 지정해야 합니다. 통화 가치를 마이크로 단위로 전환하려면 실제 가치에 1,000,000을 곱합니다. 예를 들어, 1.99달러에 인앱 아이템을 판매하고 싶으면 price 필드에 1990000을 지정하세요.

표 1. locale 필드에 사용할 수 있는 언어 코드

언어 코드 언어 코드
중국어 zh_TW 이탈리아어 it_IT
체코어 cs_CZ 일본어 ja_JP
덴마크어 da_DK 한국어 ko_KR
네덜란드어 nl_NL 노르웨이어 no_NO
영어 en_US 폴란드어 pl_PL
프랑스어 fr_FR 포르투갈어 pt_PT
핀란드어 fi_FI 러시아어 ru_RU
독일어 de_DE 스페인어 es_ES
히브리어 iw_IL 스웨덴어 sv_SE
힌디어 hi_IN -- --

가격 템플릿

여러 앱을 같은 가격으로 판매하거나 여러 인앱 상품을 하나 이상의 앱에서 같은 가격으로 판매할 경우 가격 템플릿을 추가할 수 있습니다. 이러한 템플릿을 사용하면 공유된 가격을 더 쉽게 관리할 수 있습니다.

가격 템플릿 추가

가격 템플릿을 만들 때는 유료 앱과 인앱 상품에 적용할 수 있는 새로운 가격 정보를 제공하세요. 가격 템플릿을 추가하려면 다음 절차를 따르세요.

  1. 게시자 계정에 로그인합니다.
  2. Settings 패널에서 Pricing template 페이지를 엽니다.
  3. 첫 번째 가격 템플릿을 추가하면 Add a Pricing Template 배너가 나타납니다. Add template을 선택하여 새 템플릿을 만듭니다. 새 템플릿의 Pricing 탭이 나타납니다.

    그렇지 않으면, 가격 템플릿의 목록을 확인합니다. New pricing template을 선택합니다. 새 템플릿의 Pricing 탭이 나타납니다.

  4. 템플릿에 대한 세부정보를 제공합니다. 이름, 가격, 국가별 가격에 세금을 포함할지 여부 등이 세부정보에 해당합니다.

    제시하는 가격과 세금 옵션을 바탕으로, Developer Console에서는 현재 환율과 국가별 가격 패턴을 사용하여 다양한 국제 통화에 대한 가격이 생성됩니다.

  5. Create template을 선택하여 템플릿 추가를 마칩니다.

가격 템플릿과 가격이 동일한 유료 앱과 인앱 상품 세트 사이에 링크를 만들 수 있습니다. 이 링크 과정을 완료한 후, 가격 템플릿의 모든 변경 내용은 템플릿에 링크한 아이템의 가격에 적용됩니다. 링크 과정을 완료하려면 가격 템플릿의 Linked Items 탭을 사용하거나 유료 앱 또는 인앱 상품의 가격 페이지에 있는 Price 섹션을 사용하세요.

참고: 앱 내부의 구독은 가격이 일정하므로, 구독을 가격 템플릿과 링크할 수는 없습니다. 하지만 가격 템플릿에서 가격을 가져와 새 구독에 적용할 수 있습니다.

인앱 상품과 유료 앱에 가격 템플릿 링크

인앱 상품에 가격 템플릿을 링크하려면 다음 절차를 따르세요.

  1. 게시자 계정에 로그인합니다.
  2. Settings 패널에서 Pricing template 페이지를 엽니다. 이 페이지에는 자신의 계정용으로 생성한 가격 템플릿의 목록이 표시됩니다.
  3. 인앱 상품에 링크하려는 기존 가격 템플릿을 선택한 후 템플릿의 Linked Items 탭을 선택합니다. 이 탭에는 인앱 상품과 유료 앱에 가격 템플릿을 링크하기 위한 옵션이 표시됩니다(그림 2 참조).
  4. 탭의 Link In-App Products 섹션에서 앱의 이름을 입력하거나 선택합니다. 이 앱에는 가격 템플릿에 링크하려는 인앱 상품이 포함되어 있어야 합니다.
  5. 선택한 앱을 바탕으로, 활성 상태이지만 가격 템플릿에 아직 링크되지는 않은 인앱 상품의 목록이 나타납니다. 인앱 상품과 같은 행에 나타나는 Link 버튼을 선택하여 가격 템플릿에 링크하려는 인앱 상품을 선택합니다.
  6. 그러면 인앱 상품의 가격이 가격 템플릿에 링크됩니다. 가격 템플릿 내에서 가격을 변경하면 링크된 인앱 상품의 가격에 영향을 줍니다.

유료 앱의 가격에 가격 템플릿을 링크하려면 비슷한 절차를 따릅니다. 가격 템플릿의 Linked Items 탭에 있는 Link Paid Apps 섹션에서 유료 앱을 선택합니다.

Sleeping Potion 인앱 상품이 Basic Inventory 아이템에 링크되어 있지만,
  Invisibility Potion은 그렇지 않습니다.
그림 2. 가격 템플릿의 Linked Items 탭에서 가격 템플릿에 링크할 인앱 상품과 유료 앱을 변경할 수 있습니다.

가격 템플릿에 인앱 상품이나 유료 앱 링크

가격 템플릿에 인앱 상품을 링크하려면 다음 절차를 따르세요.

  1. 게시자 계정에 로그인합니다.
  2. All applications 패널에서 앱 이름을 선택한 다음, In-app Products 페이지를 엽니다.
  3. 가격 템플릿에 링크하려는 인앱 상품을 선택합니다. 아이템의 세부정보 페이지가 나타납니다.
  4. Pricing 섹션에서 이 인앱 상품의 가격에 링크하려는 가격 템플릿을 선택합니다.
  5. 그러면 인앱 상품의 가격이 선택한 가격 템플릿에 링크됩니다. 가격 템플릿 내에서 가격을 변경하면 이 인앱 상품의 가격에 영향을 줍니다.

가격 템플릿에 유료 앱의 가격을 링크하려면 앱의 Pricing & Distribution 페이지에서 비슷한 절차를 따릅니다.

가격 템플릿에 링크되어 있는 아이템 삭제

앱이 발전함에 따라, 일부가 가격 템플릿에 링크되어 있는 이전 버전의 인앱 상품을 제거하거나 유료 앱의 게시를 취소하는 것이 유용하다는 판단을 내릴지도 모르겠습니다. 가격 템플릿에 링크되어 있는 인앱 상품을 삭제하거나 유료 앱의 게시를 취소하려면 다음 단계를 완료하세요. 가격 템플릿에서 인앱 상품이나 유료 앱을 미리 링크 해제할 필요는 없습니다.

템플릿에 링크되어 있는 인앱 상품 삭제

템플릿에 링크되어 있는 인앱 상품을 삭제하려면 다음 절차를 따르세요.

  1. 게시자 계정에 로그인합니다.
  2. 삭제하려는 인앱 상품이 포함되어 있는 앱을 선택합니다.
  3. 앱의 In-app Products 페이지를 엽니다.
  4. 삭제하려는 인앱 상품을 선택합니다.
  5. 인앱 상품이 활성인지 비활성인지 나타내는 버튼(그림 3의 상자에 포함되어 있음)을 선택합니다. 드롭다운 메뉴에 Delete 옵션이 포함되어 있습니다.
  6. Delete를 선택하고, 이때 나타나는 확인 대화상자에서 Yes를 선택합니다.
그림 3. 가격 템플릿에 링크되어 있는 인앱 상품 삭제

템플릿에 링크된 유료 앱의 게시 취소

그림 4. 이미 게시되어 가격 템플릿에 링크되어 있는 앱의 게시 취소

이미 게시되어 템플릿에 링크되어 있는 유료 앱의 게시를 취소하려면 다음 절차를 따르세요.

  1. 게시자 계정에 로그인합니다.
  2. 게시 취소하려는 앱을 선택합니다.
  3. Unpublish app(그림 4의 상자에 포함되어 있음)을 선택하고, 이때 나타나는 확인 대화상자에서 Unpublish를 선택합니다.

가격 템플릿 삭제

가격 템플릿이 더 이상 필요하지 않으면 다음 단계를 완료하여 템플릿을 삭제할 수 있습니다.

  1. 게시자 계정에 로그인합니다.
  2. Settings 패널에서 Pricing template 페이지를 열면 자신의 계정을 통해 생성한 가격 템플릿의 목록이 표시됩니다.
  3. 삭제하려는 가격 템플릿을 선택합니다.
  4. 가격 템플릿의 Linked Items 탭에서 템플릿에 링크되어 있는 인앱 상품의 링크을 해제합니다.
  5. Delete template을 선택합니다.

상품 유형 선택

아이템의 상품 유형에 따라 Google Play가 아이템 구매를 관리하는 방식이 결정됩니다. 지원되는 상품 유형에는 "managed product"와 "subscription"이 포함됩니다. 다양한 상품 유형에 대한 지원은 In-app Billing API의 버전에 따라 다를 수 있으므로, 앱에 사용되는 In-app Billing API의 버전에 유효한 상품 유형을 선택해야 합니다.

자세한 내용은 In-app Billing API에 대한 문서를 참조하세요.

환불 처리

인앱 결제에서는 사용자가 Google Play로 환불 요청을 보낼 수 없습니다. 인앱 구매에 대한 환불 요청은 앱 개발자에게 전송되도록 해야 합니다. 그래야 Google Payments 판매자 계정을 통해 환불을 처리할 수 있습니다. 이렇게 환불 처리를 하면 Google Play가 Google Payments에서 환불 알림을 받아 해당 앱으로 환불 메시지를 보냅니다. 자세한 내용은 IN_APP_NOTIFY 메시지 처리 인앱 결제 가격을 참조하세요.

중요: 이 API를 사용하여 환불하거나 인앱 결제 트랜잭션을 취소할 수는 없습니다. Google Payments 판매자 계정을 통해 수동으로 처리해야 합니다. 하지만 API를 사용하여 주문 정보를 검색할 수는 있습니다.

주문 번호 사용

사용자가 인앱 아이템을 구매하면 Google에서는 해당 트랜잭션에 고유하고 영구적인 주문 번호를 할당합니다. Google Play는 구매 흐름 완료 시 그 주문 번호를 PURCHASE_STATE_CHANGED 인텐트의 orderId 필드에 대한 값으로 개발자에게 제공합니다.

참고: 테스트 구매에는 orderId 필드가 없습니다. 테스트 트랜잭션을 추적하려면 purchaseToken 필드를 대신 사용하세요. 테스트 구매 실행에 대한 자세한 내용은 인앱 결제 테스트를 참조하세요.

앱에서는 주문 번호를 인앱 구매 트랜잭션을 위한 범용 식별자로 사용할 수 있습니다. 구매 후에는 주문 번호를 조정 보고서에서 트랜잭션을 추적하기 위한 수단으로 사용하거나 고객 지원 목적으로 사용할 수 있습니다.

주문 번호 자체는 Google에서 할당하고 관리하는 형식의, 숫자로만 구성된 문자열입니다.

2012년 12월 5일 이후에 이루어진 트랜잭션의 경우, Google Payments에서는 (Google 주문 번호가 아니라) 판매자 주문 번호를 할당하고 판매자 주문 번호를 orderId의 값으로 보고합니다. 다음 예시를 참조하세요.

"orderId" : "GPA.1234-5678-9012-34567"

2012년 12월 5일 이전 날짜의 트랜잭션에 대해서는 Google Checkout에서 Google 주문 번호를 할당하고 그 번호를 orderId의 값으로 보고했습니다. 다음은 Google 주문 번호를 가진 orderId의 예시입니다.

"orderId" : "556515565155651"

테스트 계정 설정

Google Play Developer Console을 통해 하나 이상의 테스트 계정을 설정할 수 있습니다. 테스트 계정은 Developer Console에서 테스트 계정으로 등록하는 정식 Google 계정입니다. 테스트 계정은 Google Play Developer Console에 업로드했지만 아직 게시하지는 않은 앱에서 인앱 구매를 실행할 권한이 주어져 있습니다.

어떤 Google 계정이든 테스트 계정으로 사용할 수 있습니다. 테스트 계정은 여러 사람들에게 개발자가 보유한 게시자 계정의 로그인 자격 증명에 액세스할 권한을 주지 않아도 그들이 앱에서 인앱 결제를 테스트할 수 있도록 하려는 경우에 유용합니다. 테스트 계정을 소유하고 관리하고 싶으면 스스로 직접 테스트 계정을 만들어 다른 개발자나 테스트 참가자들에게 자격 증명을 배포하면 됩니다.

테스트 계정에는 다음 세 가지 제한 사항이 있습니다.

  • (앱을 게시할 필요는 없지만) 테스트 계정 사용자는 게시자 계정에 이미 업로드된 앱 내에서만 구매 요청을 실행할 수 있습니다.
  • 테스트 계정은 앱의 상품 목록에 나열되고 게시된 아이템 구매에만 사용할 수 있습니다.
  • 테스트 계정 사용자는 게시자 계정에 대한 액세스 권한이 없으므로 게시자 계정에 앱을 업로드할 수 없습니다.

게시자 계정에 테스트 계정을 추가하려면 다음 단계를 따르세요.

  1. 게시자 계정에 로그인합니다.
  2. Settings 아이콘을 클릭합니다.
  3. License Testing 패널을 찾습니다.
  4. 등록하려는 테스트 계정의 이메일 주소를 추가합니다. 이때 각각의 계정은 쉼표로 구분하세요.
  5. Save를 클릭하여 프로필 변경 내용을 저장합니다.

앱의 라이선스 키 가져오기

Google Play Developer Console은 각 앱에 대한 공용 라이선스 키를 제공합니다.

앱에 대한 키를 찾으려면 다음 단계를 따르세요.

  1. All applications 패널을 엽니다.
  2. 앱 이름을 클릭한 후 Services & APIs 페이지를 엽니다.
  3. 그림 5에 표시된 페이지에서 Your License Key for This Application이라는 레이블이 지정된 섹션이 나올 때까지 아래로 스크롤합니다.

이전에는 Developer Console에서 각 개발자 계정마다 공개 키가 하나씩 제공되었습니다. 각 앱마다 새로운 공개 키로 앱을 전환하기 위해, Developer Console은 앱 고유 키를 이전의 개발자 키로 설정합니다. 이를 통해 (이전의) 개발자 키에 종속되는 앱에 대한 호환성을 보장합니다.

그림 5. Services & APIs 페이지에서 각 앱에 대한 라이선스 키를 찾을 수 있습니다.

지원을 받을 수 있는 곳

인앱 결제를 구현하는 동안 의문점이 있거나 문제가 발생하면 다음 표에 나와 있는 지원 리소스를 참조하세요(표 2 참조). 적당한 포럼으로 쿼리를 보내면 필요한 지원을 더 빠르게 받을 수 있습니다.

표 2. Google Play 인앱 결제를 위한 개발자 지원 리소스

지원 유형 리소스 주제 범위
개발 및 테스트 문제 Google Groups: Android 개발자 인앱 결제 통합 질문, 사용자 환경 아이디어, 응답 처리, 코드 난독 처리, IPC, 테스트 환경 설정.
Stack Overflow: http://stackoverflow.com/questions/tagged/ android
결제 Issue Tracker 결제 프로젝트 Issue Tracker 특히 인앱 결제 샘플 코드와 관련된 버그 및 문제 보고서.

위에 나열된 그룹에 글을 게시하는 일반적인 방법은 Resources 탭의 Developer Forums 문서를 참조하세요.