๊ตฌ๋งค ์์
์ ํ๋ฆฌ์ผ์ด์
์์ ๊ตฌ๋งค๋ฅผ ์์ํ๊ณ ํ๋ ์ด์ด๊ฐ Purchase Options UI๋ก ๊ฒฐ์ ๋ฐฉ๋ฒ์ ์ ํํ๋๋ก ํฉ๋๋ค.
์ฝ๋ ์๊ฐ 1๋ถ์ต๊ทผ ์
๋ฐ์ดํธ: 8์ผ ์
ํ๋ ์ด์ด๊ฐ ์ ํ์ ๊ตฌ๋งคํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ฉด Unity ์ธ์ฑ ๊ตฌ๋งค(IAP) SDK๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์์ ๊ตฌ๋งค๋ฅผ ์์ํฉ๋๋ค. ํ๋ ์ด์ด์๊ฒ ๋ค์ดํฐ๋ธ ์คํ ์ด, ๊ฒฐ์ ์ ๊ณต์
์ฒด ๋๋ ์น ์คํ ์ด์ ๊ฐ์ ์๊ฒฉ์ด ์๋ ๊ฒฐ์ ์ต์
์ ์ ๊ณตํ๋ ๊ฒ์ ๋ด ๊ตฌ์ฑ ์์์ธ ๊ตฌ๋งค ์ต์
UI๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Purchase Options UI๋ D2C(Direct-to-Consumer) ๊ฒฐ์ ์ ๊ธฐ๋ณธ ํตํฉ ๊ฒฝ๋ก์
๋๋ค. ์ด๋ฅผ ํ์ํ๋ ค๋ฉด ํ๋งคํ๋ ค๋ ๋ฆฌ์คํ
์ด ์๋ ๋จ์ผ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ UI์ ๊ฒฐ์ ์ต์
์ด ํ์๋ฉ๋๋ค. ๋ผ์ฐํ
๊ท์น return for that player. You don't build the interface yourself. If a project hasn't configured a payment provider, its purchase behavior doesn't change.
๋์ ์ ์์ฒด ๊ตฌ๋งค ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๊ณ ์ถ๋ค๋ฉด, ์ฌ์ฉ์ ์ง์ UI๋ฅผ ๋น๋ํ๊ณ ๋ผ์ฐํ
์ถ๋ ฅ์ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ ์กฐ๊ฑด
Purchase Options UI๋ฅผ ํตํด ๊ตฌ๋งค๋ฅผ ์์ํ๊ธฐ ์ ์ ๋ค์ ๋จ๊ณ๋ฅผ ์๋ฃํ์ญ์์ค.
- ์๊ฒฉ ์นดํ๋ก๊ทธ๋ฅผ ์์ฑํ๊ณ ํ์นํฉ๋๋ค.
- IAP ์๋น์ค๋ฅผ ์ด๊ธฐํํ๊ณ ์คํ ์ด์ ์ฐ๊ฒฐํฉ๋๋ค.
- D2C ์ต์ ์ ํ์ํ๋ ค๋ฉด ํ๋ ์ด์์ ๊ฒฐ์ ์ ๊ณต์ ์ฒด๋ฅผ ์ฐ๊ฒฐํ๊ณ ํ๋ ์ด์ด์๊ฒ ์ ์ฉ๋๋ ๋ผ์ฐํ ๊ท์น์ ์ถ๊ฐํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ตฌ๋งค ์์
๊ตฌ๋งค๋ฅผ ์์ํ๊ณ Purchase Options UI๋ฅผ ํ์ํ๋ ค๋ฉด ํ๋งคํ๋ ค๋ ๋ฆฌ์คํ
์ ๊ฐ ์๋ ์์ ๋ฅผ ํธ์ถํฉ๋๋ค. ์ด ๋ ํ๋ ์ด์ด๊ฐ ๊ตฌ๋งคํ๋ ํน์ ๋ฆฌ์คํธ๋ฅผ ์๋ณํฉ๋๋ค. ์ ํ์ ๋ํด ๋ ๊ฐ ์ด์์ ๋ฆฌ์คํธ๋ฅผ ์ ์ํ์ง ์์ ๊ฒฝ์ฐ, ํด๋น ๊ฐ ํด๋น ์ ํ์ SKU์ ์ผ์นํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ ํ ๋ฐ ์นดํ๋ก๊ทธ ๋ชฉ๋ก์ ์ฐธ์กฐํ์ญ์์ค.
catalogListingIdIPaymentOptionProviderShowPurchaseOptioncatalogListingIdcatalogListingIdGetPaymentOptionProviderUGUI()GetPaymentOptionProviderUITK()IPaymentProvidersExtendedServiceIPaymentOptionProviderpublic async void BuyProduct(string catalogListingId){ // Show the Purchase Options UI with the payment options the player is eligible for. await m_PaymentOptionProvider.ShowPurchaseOption(catalogListingId);}
ํ๋ ์ด์ด๊ฐ ๊ตฌ๋งค๋ฅผ ์๋ฃํ๋ฉด SDK๊ฐ ์ฝ๋ฐฑ์ ํธ์ถํ์ฌ ์ฃผ๋ฌธ์ ์ดํํ ์ ์์ต๋๋ค. ๊ตฌ๋งค๋ฅผ ์ํํ๊ณ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ SDK๋ฅผ ํตํด ๊ตฌ๋งค ์ํ์ ์ฐธ๊ณ ํ์ญ์์ค.
OnPurchasePendingUI๋ฅผ ํ์ํ๊ธฐ ์ ์ ์ ๊ฒฉ์ฑ ํ์ธ
Unity๋ Purchase Options UI๋ฅผ ํ์ํ๊ธฐ ์ ์ ๊ท์ ์ค์ ๋๋ ์๊ฒฉ ๊ท์น์ ํ๊ฐํ์ง ์์ต๋๋ค. D2C ๊ฒฐ์ ์ ์ ํฉํ์ง ์์ ํ๋ ์ด์ด์๊ฒ UI๋ฅผ ํ์ํ๊ณ ๊ท์ ์ค์ ๊ฒ์ฌ ํ์ ๋ฅผ ๋ฐํํ๋ฉด ๊ตฌ๋งค๊ฐ ์คํจํฉ๋๋ค.
false์ด๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ๋จผ์ ์ ๋ฅผ ํธ์ถํ์ญ์์ค. ํ๋ ์ด์ด๊ฐ ์๊ฒฉ์ด ์๋ ๊ฒฝ์ฐ UI ํ์ ๋์ ์ ์ ํํ์ฌ ๋ค์ดํฐ๋ธ ์คํ ์ด๋ฅผ ํตํด ๊ตฌ๋งค๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
IPaymentProvidersExtendedServiceIsUserEligibleForPurchasePurchaseProductvar m_PaymentProviderStoreController = new StoreController(PaymentProvider.Name);var m_PaymentProviderStoreExtendedService = m_PaymentProviderStoreController.PaymentProviderStoreExtendedService;// Obtain the Payment Option Provider. ํ๋ก์ ํธ๊ฐ UI ํดํท ์ฌ์ฉํ๋ ๊ฒฝ์ฐ GetPaymentOptionProviderUITK๋ฅผ ์ฌ์ฉํฉ๋๋ค.var m_PaymentOptionProvider = m_PaymentProviderStoreExtendedService?.GetPaymentOptionProviderUGUI();public async void BuyProduct(string catalogListingId){ if (await m_PaymentProviderStoreExtendedService.IsUserEligibleForPurchase()) { // Show the Purchase Options UI with the eligible payment options. m_PaymentOptionProvider.ShowPurchaseOption(catalogListingId); } else { // The player isn't eligible for D2C payment options. ๋ค์ดํฐ๋ธ ๊ตฌ๋งค๋ฅผ ์ง์ ์ฒ๋ฆฌํฉ๋๋ค. m_PaymentProviderStoreController.PurchaseProduct(catalogListingId); }}
Purchase Options UI๊ฐ ์ ๊ณตํ๋ ์ฌํญ

Purchase Options UI๋ ๋ค์ ์์ค๋ก ๊ตฌ์ฑ๋ 2~3๊ฐ์ง ๊ฒฐ์ ์ต์
์ ํ ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
- ํญ์ ์กด์ฌํ๋ ๋ค์ดํฐ๋ธ(Apple ์ฑ ์คํ ์ด ๋๋ Google Play ์คํ ์ด).
- ๋น์ ์ ๋ผ์ฐํ ๊ท์น์ ํตํด ํ๋ฉดํ๋ ๊ฒฐ์ ์ ๊ณต์ ์ฒด์ ๋๋ค. UI๋ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ์ ํฉํ ๊ณต๊ธ์๋ฅผ ํ์ํฉ๋๋ค. ๋๋จธ์ง ๊ณต๊ธ์๋ ํด๋ฐฑ ์ญํ ์ ํ๋ฉฐ ํ์๋์ง ์์ต๋๋ค.
- ํ๋ก์ ํธ์ Unity ์น์์ด ์ค์ ๋์ด ์๊ณ ๋ผ์ฐํ ๊ท์น์ด ๊ฒ์ ๋ด ์น์์ ์ ๊ทผํ๋ ๊ฒ์ ์ ํํ ๋ ๋ํ๋๋ ์น์ ์ง์ ์ ์ ๋๋ค.
UI๋ ํ์ฌ ๊ตฌ๋งค๋ฅผ ์๋ฃํ๋ ๊ฒฐ์ ์ต์
์ ์น์ ์ํธ๋ฆฌ ํฌ์ธํธ์ ๊ตฌ๋ถํ์ฌ ํ๋ ์ด์ด๊ฐ ๋ ๋ง์ ์ํ์ ์ฐพ์๋ณผ ์ ์๋๋ก ํฉ๋๋ค. ๊ด์ ๋ฐ ์ด๋์ด ๋ชจ๋์ ์ธ๋ก ๋ฐ ๊ฐ๋ก ๋ฐฉํฅ์ ๋ชจ๋ ์ง์ํฉ๋๋ค.
๋ณด์
๋ณด๋์ค ๊ฐ์น, ํ๋งค ๊ฐ๊ฒฉ, ์๊ฐ ์ ํ ํํ ๋ฑ ๊ฒฐ์ ์ ๊ณต์
์ฒด ๋๋ ์น์ ์ต์
์ ๋ํ ๋ณด์์ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ Purchase Options UI์ ํ์๋ฉ๋๋ค. ์นดํ๋ก๊ทธ์ SKU ํ๋๋ฅผ ํตํด ๋ณด์์ ์ค์ ํฉ๋๋ค. ๊ตฌ๋งค ์ต์
UI์ ์น์ ๋ชจ๋์ ๋์ผํ SKU๊ฐ ํ์๋๋ ๊ฒฝ์ฐ UI๋ ์ผ๊ด๋ ์๊ฐ์ ์ฒ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ํ๋ ์ด์ด๊ฐ ๋์ผํ ๋ณด์์ผ๋ก ์ธ์ํฉ๋๋ค.
๊ณต๊ธ์ ๋ฉ๋ชจ๋ฆฌ
ํ๋ ์ด์ด๊ฐ ์ฑ๊ณต์ ์ธ ๊ตฌ๋งค๋ฅผ ์๋ฃํ๋ฉด SDK๋ ํด๋น ๊ธฐ๊ธฐ์์ ์ฌ์ฉํ ๊ณต๊ธ์๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ํ์ ๊ตฌ๋งค ์ UI๋ ํด๋น ๊ณต๊ธ์๋ฅผ ๊ธฐ๋ณธ ์ก์
์ผ๋ก ํ์ํ๊ณ , ํด๋นํ๋ ๋ค๋ฅธ ๊ณต๊ธ์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ ์งํฉ๋๋ค. ํ๋ ์ด์ด๋ ์ธ์ ๋ ์ง ๋ค๋ฅธ ๊ณต๊ธ์๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
๋น๋์ ๋ํ UI ๋นํ์ฑํ
ShowPurchaseOption์ง์ ๊ตฌ๋งค UI ๋น๋
Purchase Options UI๋ ์ ํ ์ฌํญ์
๋๋ค. ์์ฒด ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ค๋ฉด SDK๋ฅผ ํตํด ์ง์ ๋ผ์ฐํ
์ถ๋ ฅ์ ์ฌ์ฉํ๊ณ ๊ธฐ๋ณธ UI๋ฅผ ๊ฑด๋๋ฐ์ญ์์ค.
- ๋ฅผ ํธ์ถํ์ฌ ํ๋ ์ด์ด๊ฐ ์ฌ์ฉํ ์ ์๋ ๊ณต๊ธ์ ๋ชฉ๋ก์ ์ ๋ ฌํ์ญ์์ค.
IPaymentProvidersExtendedService.GetEligiblePaymentProviders() - ๊ตฌ์
์ ๊ฐ์ ๋ก ํ๊ธฐ ์ํด ๋ฅผ ํธ์ถํฉ๋๋ค.
IPaymentProvidersExtendedPurchaseService.SetPaymentProviderOverride(string)
์์ธํ ๋ด์ฉ์ ์ฝ๋์์ ๋ผ์ฐํ
์ค๋ฒ๋ผ์ด๋๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ง์ญ๋ณ ๊ฐ์ฉ์ฑ
Purchase Options UI๋ ํ๋ซํผ ํ๋ก๊ทธ๋จ์ด ๋ค์ดํฐ๋ธ ๋ฐ D2C ๊ฒฐ์ ์ต์
์ ํจ๊ป ์ ๊ณตํ๋ ์ง์ญ(์: ๋ฏธ๊ตญ, ์ผ๋ณธ)์ ์ํด ๊ณ ์๋์์ต๋๋ค. EU ๋ฐ ํ๊ตญ๊ณผ ๊ฐ์ด ์ธ๋ถ ํ๋ ์ ํ
์ด์
๋ง ํ์ํ ์ง์ญ์์๋ ๊ตญ๊ฐ๋ณ๋ก UI๋ฅผ ๋นํ์ฑํํ๊ณ ํ๋ ์ ํ
์ด์
๋ ์ด์ด๋ฅผ ์ง์ ์ฒ๋ฆฌํฉ๋๋ค.
๋ค์ ๋จ๊ณ
์ด ํ์ด์ง๋ IAP๋ฅผ ์ฌ์ฉํ์ฌ D2C(Direct-to-Consumer) ๊ฒฐ์ ์ ๊ณต์
์ฒด๋ฅผ ์ค์ ํ๋ ์ํฌํ๋ก์ ์ผ๋ถ์
๋๋ค. ์ด ์ํฌํ๋ก๋ฅผ ๊ณ์ํ๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.