2.2.2
iOS
await RNIap.buyProduct(MIXED_PACK);
๋ ์คํจํ์ง ์์์ผํฉ๋๋ค.
์๋ ๋ฐ์ค ์ฌ์ฉ์๋ฅผ ์ฌ์ฉํ๋๋ผ๋ Cannot connect to iTunes Store
์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ค์ ์ฅ์น, iPad ๋ฐ iPhone 7
ํด๋น ์ฝ๋๋ฅผ ์คํ ํด๋ณด์ญ์์ค. ์ฌ๊ธฐ์์ ์๋ ๋ฐ์ค ํ๊ฒฝ์ ๋ง๋ค๊ธฐ ์ํด ๋ธ๋ก๊ทธ๋ฅผ ์์ธํ ์ฝ์์ต๋๋ค. https://medium.com/@dooboolab/react -native-in-app-purchase-121622d26b67
๋๋ ๊ทธ๊ฒ์ด ์ค๋๋ ๋งํฌ๋ผ๊ณ ์๊ฐํฉ๋๋ค. https://developer.apple.com/system-status/
@ raynor85 ์ฌ์ ํ์ด ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๊น?
@dooboolab ๋๋ ์ฌ์ ํ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ง๋ง Apple ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ์ธ Apple ID ์ฌ์ฉ์ (์ด์ ์ ์ค์ ๊ตฌ๋งค์ ์ฌ์ฉ)๋ก ์ ํ์ ๊ตฌ๋งคํ๋ ค๊ณ ํ๋๋ฐ RNIap.buyProduct(โmy.sku.productโ)
์คํ ํ ์ฑ๊ณต์ ์ธ ์๋ต์๋ฐ์ ์์์์ต๋๋ค.
์ฌ๋ฏธ์๋ ์ ์ ๊ตฌ๋งค ์ง์ ์ ํ์
๋๋ ๋ชจ๋ฌ์ environment: sandbox
๋ผ๊ณ ์ฐ์ฌ ์์ต๋๋ค. ์๋ง๋ ๊ฐ๋ฐ์ ๋น๋๋ฅผ ์คํ ์ค์ด์๊ธฐ ๋๋ฌธ์ผ ๊ฒ์
๋๋ค. ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๊ตฌ๋งค ๋น์ฉ์ด ์ ํ ์ฒญ๊ตฌ๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ตฌ๋งค ๋ด์ญ์ ํ์ธํ๋ฉด ๊ด๋ จ ๋ด์ฉ์ด ์์ผ๋ฉฐ RNIap.getAvailablePurchases()
๋ฐ RNIap.getPurchaseHistory()
ํ๋ฉด ๋ ๋ค ๋น ์๋ต์ ๋ฐ์์ต๋๋ค. ์ ๊ทธ๋ฐ ๊ฒ๋๊น?
@dooboolab ์ด ์ ๋ฅผ ๋์ ์ค ์ ์์ต๋๊น? ์ค์ Apple ID๋ก ์ถฉ์ ์์ด ์๋ชจํ์ ์ฑ๊ณต์ ์ผ๋ก ๊ตฌ๋งคํ ์ ์์์ง๋ง RNIap.getPurchaseHistory()
๊ฐ ํญ์ ๋น ๋ฐฐ์ด ์ธ ์ด์ ๊ฐ ์์ต๋๊น?
@ raynor85 ํธ๋์ญ์ ๊ฒฐ๊ณผ๋ฅผ ์๋ฒ์ ์ฐ๊ฒฐ ํ์ต๋๊น?
@dooboolab I ๋ชจ๋ ์ฌ์ฉ ์๋ RNIap.buyProduct(sku)
๋ฐ RNIap.buyProductWithoutFinishTransaction(sku)
๋ก RNIap.finishTransaction()
ํ๊ณ , ๋ชจ๋ I ์ฌ์ฉํ RNIap.validateReceiptIos(receiptBody, true);
์, const receiptBody = {'receipt-data': purchase.transactionReceipt, password: '[apple-id-password]'};
ํ์ง๋ง ๋ถ์ด. ๋ํ ๋ด๊ฐ '[apple-id-password]', validateReceiptIos
์๋ต์ ๋ฃ์ ์ํธ๊ฐ ํญ์ ๋์ผํ๋ค๋ ์ ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๋ค์์ ์์
๋๋ค.
{ receipt:
{ receipt_type: 'ProductionSandbox',
adam_id: 0,
app_item_id: 0,
bundle_id: 'io.fantastec.swap',
application_version: '8',
download_id: 0,
version_external_identifier: 0,
receipt_creation_date: '2018-10-09 19:16:09 Etc/GMT',
receipt_creation_date_ms: '1539112569000',
receipt_creation_date_pst: '2018-10-09 12:16:09 America/Los_Angeles',
request_date: '2018-10-09 19:16:10 Etc/GMT',
request_date_ms: '1539112570436',
request_date_pst: '2018-10-09 12:16:10 America/Los_Angeles',
original_purchase_date: '2013-08-01 07:00:00 Etc/GMT',
original_purchase_date_ms: '1375340400000',
original_purchase_date_pst: '2013-08-01 00:00:00 America/Los_Angeles',
original_application_version: '1.0',
in_app:
[ { quantity: '1',
product_id: 'basic_pack',
transaction_id: '1000000455003078',
original_transaction_id: '1000000455003078',
purchase_date: '2018-10-09 19:16:09 Etc/GMT',
purchase_date_ms: '1539112569000',
purchase_date_pst: '2018-10-09 12:16:09 America/Los_Angeles',
original_purchase_date: '2018-10-09 19:16:09 Etc/GMT',
original_purchase_date_ms: '1539112569000',
original_purchase_date_pst: '2018-10-09 12:16:09 America/Los_Angeles',
is_trial_period: 'false' } ] },
status: 0,
environment: 'Sandbox' }
์์๋ค์ํผ receipt_type: 'ProductionSandbox'
๋ ์๋ ๋ฐ์ค ํ๊ฒฝ์์ ์ค์ Apple ID ์ฌ์ฉ์ ์ด๋ฆ์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค (์ค์ ํ
์คํธ ์๋ ๋ฐ์ค ์ฌ์ฉ์๋ฅผ ์์ฑ ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ ์ถ์ ์ด์์๋ ์ง์ฅ).
@ raynor85 ์ฌ์ค, ์ ์ด๋ฐ ์ผ์ด ์ผ์ด๋๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ฐ๊น์ด ์ฅ๋์ ์ด๊ฒ์ ์๋ํด์ผ ํ ์๋ ์์ต๋๋ค. ๋ํ ์ํ ๋นํ์ ํตํด ์ด๊ฒ์ ์ํํด ๋ณด์
จ์ต๋๊น? test flight
์ฑ์ ์
๋ก๋ํ์ง ์์๋ค๋ฉด ์ด๋ฐ ์ผ์ด ์ผ์ด๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ํ ๋ง์ง๋ง ๊ฒฌ์ ์ ๋์ํฉ๋๋ค!
๊ณ ์ฅ๋ ๋ฒ ํ ๋น๋๋ฅผ ์
๋ก๋ํ๊ธฐ ์ ์ ์์
ํ ๊ฐ๋ฐ ๋ฒ์ ์ ๊ฐ๊ณ ์ถ๊ธฐ ๋๋ฌธ์ testFlight์ ์ฑ์ ์
๋ก๋ํ์ง ์์์ต๋๋ค. ์ด ๊ฒฝ์ฐ codepush๊ฐ ์ ์ฉ ํ ์ ์์ต๋๋ค. ์ด์จ๋ const receiptBody = {'receipt-data': purchase.transactionReceipt, password: '[apple-id-password]'}
์ ์๋ฏธ๋ฅผ ์ค๋ช
ํด ์ฃผ์๊ฒ ์ต๋๊น? ์ํธ๋ฅผ ์
๋ ฅํ๋ ค๊ณ ํ์ง๋ง ์ฌ์ ํ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ฉ๋๋ค. password
๋ ์ฌ์ฉ์์ Apple ID ์ํธ๋ฅผ ๋ํ ๋
๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ฌ์ฉ์์๊ฒ ์ ๋ณด๋ฅผ ์
๋ ฅํ์ง ์๊ณ ์ด๋ป๊ฒ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๊น?
๋ํ accessToken
ํ์ํ validateReceiptAndroid
์ด๋ป์ต๋๊น? ์ธ๊ธ ํ ์คํ ์ค๋ฒํ๋ก์ ๋ํ ๋๋ผ์ด ๊ฒ์๋ฌผ์ ํ์ธํ์ง๋ง accessToken์ ์ป์ ์์๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช
ํํ ๊ฐ์ด๋๊ฐ ์์ต๋๋ค. ๋ฐ๋์ ์๋ฒ๋ฅผ ๊ตฌ์ถํ์ง ์๊ณ ๋ access_token์ ์ป๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๊ถ์ฅํฉ๋๊น? ๋ฌธ์๋ ๊ธฐ๊ธฐ์์ ์ง์ ์์์ฆ ํ์ธ์ ์ํ ํ ์ ์๋ค๊ณ ๋งํฉ๋๋ค. https://developer.android.com/google/play/billing/billing_library_overview
๋ฟก ๋นต๋จ
accessToken
๋ฅผ ์ป์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ค์ ๊ณผ์ ์ ํตํด ์ป์ ์ ์์ต๋๋ค.๋ํ ์๋๋ก์ด๋์์ 2.3.5
์ ์์์ฆ์ผ๋ก ์ฌ์ฉํด๋ณด์ธ์. param์ด android ์ฉ transactionReceipt
์์ ์๋ชป๋ ID๋ฅผ ์ ์กํ์ต๋๋ค. ์ด๊ฒ์ผ๋ก ์ฐ์ต์ํ๊ณ ์ฐ๋ฆฌ Readme์์ ์ฑ๊ณต ์ฌ๋ก๋ฅผ ๊ณต์ ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ฑด๋ฐฐ!
@ raynor85 purchaseHistory () ๋๋ getAvailablePurchases ()์์๋ ์๋ต์๋ฐ์ ์ ์์ต๋๋ค. ์ฑ์ด ์์ฐ ๋ ๋๊น์ง ์ด๋ฌํ ๊ธฐ๋ฅ์ด ์๋ํ์ง ์๋์ง ๊ถ๊ธํฉ๋๋ค. @JJMoon ์ด๋ฌํ ๊ธฐ๋ฅ์ด ์๋ ๋ฐ์ค ๋ชจ๋์์ ์๋ํด์ผํฉ๋๊น?
๊ทธ๊ฒ์ ์์ ๋๊ณ "finishTransaction ()"์ ํธ์ถํ์ง ์์๊ธฐ ๋๋ฌธ์ ์๋ ๋ฐ์ค ํ ์คํธ ๊ณ์ "๊ตฌ๋งค๊ฐ ์ฑ๊ณตํ์ต๋๋ค"์ ๋ฃจํ์ ๊ฐํ ์์์ง๋ง Apple ์ธก์์ ์์ ํ ์ฒ๋ฆฌํ์ง ๋ชปํด์ ๋ฐ๋ ๋ฃจํ๋ผ๊ณ ๋ถ๋ ์ต๋๋ค.
์ด ์ค๋ ๋๋ ์ฝ๊ฐ ๋ฒ์ด ๋ฌ์ง๋ง ์๋ ๋ฐ์ค ๊ณ์ ( Error: Cannot connect to iTunes Store
)์ผ๋ก ๋ด ๊ธฐ๊ธฐ์์ xcode๋ฅผ ํตํด ์ฑ์ ์คํํ ๋ ๋์ผํ ์๋ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค. ๋๋ 2.3.19์ ์์ผ๋ฉฐ ๊ฐ์ฅ ์ต์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด ์ค๋ฅ์ ๊ด๋ จ๋ Apple์ ์ฐธ๊ณ ์ฌํญ : https://developer.apple.com/library/archive/technotes/tn2413/_index.html#//apple_ref/doc/uid/DTS40016228 -CH1-ERROR_MESSAGES-CANNOT_CONNECT_TO_ITUNES_STORE
์ ๊ฒฝ์ฐ์๋ ์ด๋ฏธ ์ ํ์ ๊ตฌ๋
ํ๊ณ ์๋๋ฐ ์ ํ์ ๊ตฌ๋
ํ๋ ค๊ณ ํ๋ฉด์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ํ ๊ตฌ๋
์ค์ด๊ณ ๊ตฌ๋
์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๋ ๋ํ๋๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค (์ RNIAP.buySubscription
์์ฒญ์ ์์ํ์ฌ).
๋ฌธ์ ๊ฐ์๋ ๋ค๋ฅธ ์ฌ๋์ ๊ฒฝ์ฐ "์ฑ ๋ด ๊ตฌ๋งค๋ฅผ ์ง์ํ์ง ์๋ ์๋ฎฌ๋ ์ดํฐ์์ ์ฑ์ด ์คํ ์ค์ ๋๋ค." ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์์๋ ๋ ๋ค๋ฅธ ์ด์ ์ ๋๋ค. ์ค์ ์ฅ์น์์์ด ์์ ์ ์ํํด์ผํฉ๋๋ค.
์ ๊ฒฝ์ฐ์๋ ์ด๋ฏธ ์ ํ์ ๊ตฌ๋ ํ๊ณ ์๋๋ฐ ์ ํ์ ๊ตฌ๋ ํ๋ ค๊ณ ํ๋ฉด์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ํ ๊ตฌ๋ ์ค์ด๊ณ ์ RNIAP.buySubscription ์์ฒญ์ ์์ํ์ฌ ๊ตฌ๋ ์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๋ ๋ํ๋๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
๊ทธ๋์,์ด ๊ฒฝ์ฐ ์ด๋ป๊ฒํด์ผํฉ๋๊น? ์ฌ์ฉ์๊ฐ ์ ํ์ ์ค์ ๋ก ๊ตฌ๋งคํ๋์ง ์ด๋ป๊ฒ ์ ์ ์๋์? .. ๊ตฌ๋งค๋ฅผ ๋ณต์ํ๋ ค๊ณ ํ๋๋ฐ ์๋ฌด๊ฒ๋ ๋ฐ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฌธ์ ๊ฐ์๋ ๋ค๋ฅธ ์ฌ๋์ ๊ฒฝ์ฐ "์ฑ ๋ด ๊ตฌ๋งค๋ฅผ ์ง์ํ์ง ์๋ ์๋ฎฌ๋ ์ดํฐ์์ ์ฑ์ด ์คํ ์ค์ ๋๋ค." ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์์๋ ๋ ๋ค๋ฅธ ์ด์ ์ ๋๋ค. ์ค์ ์ฅ์น์์์ด ์์ ์ ์ํํด์ผํฉ๋๋ค.