{"id":138013,"date":"2021-09-29T00:00:00","date_gmt":"2021-09-29T00:00:00","guid":{"rendered":"https:\/\/adapty.io\/blog\/android-in-app-purchases-part-4-billing-library-error-codes-and-how-not-to-fail-testing\/"},"modified":"2025-06-26T13:05:05","modified_gmt":"2025-06-26T13:05:05","slug":"android-in-app-purchases-part-4-billing-library-error-codes-and-how-not-to-fail-testing","status":"publish","type":"post","link":"https:\/\/adapty.io\/ko\/blog\/android-in-app-purchases-part-4-billing-library-error-codes-and-how-not-to-fail-testing\/","title":{"rendered":"Android \uc778\uc571 \uad6c\ub9e4, 4\ubd80: \uacb0\uc81c \ub77c\uc774\ube0c\ub7ec\ub9ac \uc624\ub958 \ucf54\ub4dc \ubc0f \ud14c\uc2a4\ud2b8\ub97c \ub9dd\uce58\uc9c0 \uc54a\ub294 \ubc29\ubc95"},"content":{"rendered":"
\uc624\ub298\uc6b0\ub9ac\ub294getResponseCode()<\/a>\uba54\uc18c\ub4dc\uc5d0\uc11c\uacb0\uc81c \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud1b5\ud574 \ubcfc \uc218 \uc788\ub294\uc624\ub958 \ucf54\ub4dc<\/a>\uc5d0\ub300\ud574 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p> \ucf5c\ubc31\uc5d0\uc624\ub958\ub97c \uc804\ub2ec\ud55c \ubc29\ubc95\uc758 \uc608\ub294\uc774 \uae30\uc0ac<\/a>\uc5d0\uc11c\ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\uc6b0\ub9ac\ub294\uc774\ubbf8 \uc774\uc804 \uae30\uc0ac\uc5d0\uc11c \uc0ac\uc6a9\uc790\uac00 \uc544\ubb34\uac83\ub3c4 \uad6c\ub9e4\ud558\uc9c0 \uc54a\uace0\uad6c\ub9e4 \ub300\ud654 \uc0c1\uc790\ub97c \ub2eb\uc744 \ub54c \ubc1c\uc0dd\ud558\ub294 \uc624\ub958 \uc911 \ud558\ub098\uc778USER_CANCELED<\/strong><\/a>\ub97c\uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4.\ub2e4\ub978\uc624\ub958\ub4e4\uc744 \uc54c\uc544 \ubd05\uc2dc\ub2e4.<\/p> \ucc98\uc74c\uc0b4\ud3b4\ubcfc \uc624\ub958\ub294ERROR<\/strong><\/a>(responseCode 6)\uc640DEVELOPER_ERROR<\/strong><\/a>(responseCode 5)\uc785\ub2c8\ub2e4.\uccab\ubc88\uc9f8\uc758 \uacbd\uc6b0,Google\uc740”Fatalerror during the API action\u201d \ubb38\uc11c\ub97c\uae30\ub85d\ud558\uace0 \ub450 \ubc88\uc9f8\uc758 \uacbd\uc6b0 “Invalidarguments provided to the API\u201d\ub97c\uae30\ub85d\ud569\ub2c8\ub2e4.\uc608\ub97c\ub4e4\uc5b4,querySkuDetailsAsync()<\/a>\uc694\uccad\uc744\uc704\ud574setType()<\/a>\uc73c\ub85c\ube48 \ubb38\uc790\uc5f4\uc744 \ube4c\ub354\uc5d0 \uc804\ub2ec\ud588\uc744 \ub54c DEVELOPER_ERROR\ub97c\uc5bb\uc744 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4.<\/p> \ud558\uc9c0\ub9cc\uadf8\ub807\uac8c \uac04\ub2e8\ud55c \uac83\uc740 \uc544\ub2d9\ub2c8\ub2e4.\uacc4\uc18d\uc9c4\ud589\ud558\uba74\uc11c launchBillingFlow()<\/a>\uba54\uc18c\ub4dc\uc5d0\uc11c\uc218\uc815\ub41cSkuDetails<\/a>\ub97c\uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4.(\uc2e4\uc81c\uc81c\ud488\uc758 SkuDetails\uc5d0\uc11cjson(json)\uc744\uac00\uc838\uc640\uc11c productID\ub97c\ubcc0\uacbd\ud558\uace0 \uc0c8 SkuDetails\uc81c\uc791\uc790\uc5d0\uac8c\uc804\ub2ec\ud588\uc2b5\ub2c8\ub2e4)\uc0ac\uc2e4,\uc774\uac83\uc740\uadfc\uac70 \uc5c6\ub294 \uc8fc\uc7a5\uc774\uace0,\ub098\ub294DEVELOPER_ERROR<\/strong>\ub97c\uc5bb\uc744 \uac70\ub77c\uace0 \uc608\uc0c1\ud588\uc9c0\ub9cc …ERROR<\/strong>\ub97c\uc5bb\uc5c8\uc2b5\ub2c8\ub2e4.<\/p> \ubb3c\ub860\uc774\uac83\uc740 \uc778\uc704\uc801\uc778 \uc608\uc600\uc2b5\ub2c8\ub2e4.\uad6c\uae00\uc774\uacb0\uc81c\ub97c \uac70\ubd80\ud55c \uacbd\uc6b0\uac00 \ud6e8\uc52c \ud604\uc2e4\uc801\uc778 \uc0ac\ub840\uc785\ub2c8\ub2e4.\uae30\uc0ac\ub05d\ubd80\ubd84\uc5d0\uc11c \uc54c\ub824\ub4dc\ub9ac\uaca0\uc9c0\ub9cc,\ud14c\uc2a4\ud2b8\uce74\ub4dc\ub85c \uad6c\ub9e4\ub97c \ud14c\uc2a4\ud2b8\ud560 \ub54c \uad6c\ub9e4 \ub300\ud654 \uc0c1\uc790\uc5d0\uc11c “testcard, always declined\u201d\ub97c\uc120\ud0dd\ud558\uba74 \uc801\uc808\ud55c \ud14d\uc2a4\ud2b8\uc640 \ud568\uaed8 ERROR<\/strong>\uc5ed\uc2dc\ubc18\ud658\ub429\ub2c8\ub2e4.<\/p> \uad6c\ub3c5(subscription)\ubcc0\uacbd\uc744\uc124\uba85\ud55c\uc138 \ubc88\uc9f8 \uae30\uc0ac<\/a>\uc5d0\uc11c,\uc6b0\ub9ac\ub294\ube44\ub840 \ubc30\ubd84 \ubc29\uc2dd \uc911 \ud558\ub098\uc5d0 \ub300\ud574 \uc5f0\uac04 \uad6c\ub3c5 \uac00\uaca9\uc744 \uac70\uc7583\ubc30\ub098\uc778\uc0c1\ud588\ub294\ub370,\uadf8\ub807\uac8c\ud558\uc9c0 \uc54a\uc740 \uacbd\uc6b0 \ubc1c\uc0dd\ud588\uc5b4\uc57c \ud558\ub294 \uc2e4\uc218\uac00 \ubb34\uc5c7\uc778\uc9c0\uc5d0\ub300\ud574\uc11c\ub294 \ub9d0\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.\uac1c\uc815\uc911\uc785\ub2c8\ub2e4.<\/p> \uc798\ubabb\ub41c\ube44\ub840 \ubc30\ubd84 \ubaa8\ub4dc\uac00 \uc9c0\uc815\ub41c \uac83\uc73c\ub85c \ubc1d\ud600\uc84c\uae30 \ub54c\ubb38\uc5d0,\ub17c\ub9ac\uc801\uc73c\ub85c\ub3d9\uc77c\ud55c DEVELOPER_ERROR<\/strong>\uc744\uac00\uc838\uc640\uc57c \ud569\ub2c8\ub2e4.\uadf8\ub300\uc2e0, SERVICE_UNAVAILABLE<\/strong><\/a>(responseCode 2)\ub97c\uc5bb\uc5c8\uc2b5\ub2c8\ub2e4.\ub610\ud55c\ube44\ub840 \ubc30\ubd84 \ubaa8\ub4dc\ub85c \ubd80\uc801\uc808\ud55c \uc22b\uc790\ub97c \uc785\ub825\ud558\uace0 (\uc774\uac83\uc740enum\uc774\uc544\ub2c8\ub77c int\uc785\ub2c8\ub2e4.\uc544\ubb34\ub3c4\uc6b0\ub9ac\ub97c \ub9c9\uc744 \uc218 \uc5c6\uc8e0.)\uc798\ubabb\ub41cpurchaseToken\uc744\uc9c0\uc815\ud558\ub294 \uacbd\uc6b0\uc5d0\ub3c4 \uc774\ub97c \uc5bb\uc2b5\ub2c8\ub2e4.SERVICE_UNAVAILABLE<\/strong>\uc5d0\ub300\ud55c \ubb38\uc11c\ub97c \uc0b4\ud3b4\ubcf4\uba74 …\uc7a0\uae50,\uc774\uac8c\ubb50\uc8e0?!”Network connection is down.”\uc774\ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p> \ub3d9\uc2dc\uc5d0\uc774\uc0c1\ud55c \ub300\ud654 \uc0c1\uc790\ub3c4 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p> ERROR<\/strong>\uc758\uacbd\uc6b0 \ub610 \ud55c \uac00\uc9c0 \ud765\ubbf8\ub85c\uc6b4 \uac83\uc740 “\ud655\uc778”\ubc84\ud2bc\uc744\ub204\ub974\uc9c0 (\uc989,”\ub4a4\ub85c\uac00\uae30”\ub85c\ud574\uc11d\ub418\ub294 \uc218\ub2e8\uc744 \ud1b5\ud558\uc9c0)\uc54a\uace0<\/strong>\ub300\ud654 \uc0c1\uc790\ub97c \ub2eb\uc73c\uba74 ERROR<\/strong>\uac00onPurchasesUpdated()<\/a>\uc5d0\ubc1c\uc0dd\ud558\uace0,SERVICE_UNAVAILABLE<\/strong>\uc758\uacbd\uc6b0 \ube44\uc2b7\ud55c \uc0c1\ud669\uc5d0\uc11c USER_CANCELED<\/strong>\uac00\ub098\ud0c0\ub0a9\ub2c8\ub2e4.(\uadf8\ub7ec\ub098\ub300\ud654 \uc0c1\uc790\uc5d0\uc11c “OK”\ub97c\ud074\ub9ad\ud558\uba74 \uc608\uc0c1\ud560 \uc218 \uc788\ub4ef\uc774 SERVICE_UNAVAILABLE<\/strong>\ub97c\ubc1b\uac8c \ub429\ub2c8\ub2e4)<\/p> \uadf8\ub9ac\uace0\uc778\ud130\ub137 \uc5f0\uacb0\uc774 \ub04a\uae34 \uacbd\uc6b0\uc5d0\ub294 SERVICE_UNAVAILABLE<\/strong>\uac00\uc2e4\uc81c\ub85c \ub098\uc635\ub2c8\ub2e4.<\/p> \ub2e4\uc74c\uc740\uc791\uc740 \uc8fc\uc11d\uc774 \ub2ec\ub9b0 \uc624\ub958 \ucf54\ub4dc\ub4e4\ub85c,\uc120\uc678\uac00\uc791\uc774\ub77c\uace0 \ud560\ub9cc\ud55c \uac83\ub4e4\uc785\ub2c8\ub2e4.<\/p> \ub9c8\uc9c0\ub9c9\uc73c\ub85c\uc778\uc571 \uad6c\ub9e4 \uad6c\ud604 \uacbd\ub85c\uc758 \ucd9c\ubc1c\uc810\uc5d0\uc11c \ubd84\uba85 \uac00\uc7a5 \ub9ce\uc774\ubc1c\uc0dd\ud558\ub294 \uc624\ub958\ub294 ITEM_UNAVAILABLE<\/strong><\/a>(responseCode 4)\uc785\ub2c8\ub2e4.\uc81c\ud488\uc744\uad6c\ub9e4\ud560 \uc218 \uc5c6\ub2e4\uace0 \ub098\uc640 \uc788\uc9c0\ub9cc,\uc774\uc720\ub294\uc124\uba85\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\uc774\uc720\ub294\ub9e4\uc6b0 \ub2e4\uc591\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\uc798\ubabb\ub41c\uacc4\uc815\uc774\ub098 \uae30\uae30\uc5d0\uc11c \ud14c\uc2a4\ud2b8\ud558\ub294 \uac83\ubd80\ud130 \ube44\ud65c\uc131 \uc81c\ud488\uc744\uad6c\ub9e4\ud558\ub294 \uac83\uae4c\uc9c0\uc785\ub2c8\ub2e4.<\/p> \ub2e4\uc74c\uc740\ud14c\uc2a4\ud2b8 \uc911 \uc774 \uc624\ub958\ub97c \ubc29\uc9c0\ud558\uae30 \uc704\ud574 \ud655\uc778\ud574\uc57c \ud558\ub294\uccb4\ud06c\ub9ac\uc2a4\ud2b8\uc785\ub2c8\ub2e4.<\/p> 1. \uacb0\uc81c\ub77c\uc774\ube0c\ub7ec\ub9ac\uc640 \ud568\uaed8 \uc571\uc744 \ud14c\uc2a4\ud2b8 \ud2b8\ub799\uc73c\ub85c \ubcf4\ub0c5\ub2c8\ub2e4.\uc774\uac83\uc740\ud544\uc218 \uc870\uac74\uc785\ub2c8\ub2e4.\ub3d9\uc2dc\uc5d0\ub3d9\uc77c\ud55c applicationId\ub97c\uc0ac\uc6a9\ud558\uc5ec \ub514\ubc84\uadf8 \ube4c\ub4dc\uc5d0\uc11c \ud14c\uc2a4\ud2b8\ud560 \uc218\ub3c4 \uc788\uc9c0\ub9cc,\uacb0\uc81c\ub77c\uc774\ube0c\ub7ec\ub9ac\uc640 \ud568\uaed8 \uc571\uc744 PlayConsole\uc5d0\ucd5c\uc18c \ud55c \ubc88\uc740 \uc5c5\ub85c\ub4dc\ud558\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4.<\/p> 2. \ud14c\uc2a4\ud130\uc758Google\uacc4\uc815\uc744\uc774 \ud14c\uc2a4\ud2b8 \ud2b8\ub799\uc5d0 \ucd94\uac00\ud558\ub294\ub370,\uc774\ub294\ub0b4\ubd80 \ud14c\uc2a4\ud2b8 \ub610\ub294 \ube44\uacf5\uac1c \uc54c\ud30c\/\ubca0\ud0c0\uc5d0\uc11c\ud2b9\ud788 \uc911\uc694\ud569\ub2c8\ub2e4.\ub610\ud55c\ud14c\uc2a4\ud130\uac00\ud14c\uc2a4\ud2b8\uc5d0 \ucc38\uc5ec\ud558\ub294 \ubc29\ubc95<\/em>\uc139\uc158\uc5d0 \ub9c1\ud06c\uac00 \uc788\ub294\ub370,\uc5ec\uae30\uc11c\ud14c\uc2a4\ud130\uac00 \ucd08\ub300\ub97c \uc218\ub77d\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p> 3. \ud65c\uc131\ud654\ub41c\uc81c\ud488\ub9cc \uad6c\ub9e4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\uc81c\ud488\uc0dd\uc131 \ud6c4,Play Console\uc5d0activate<\/em><\/strong>\ubc84\ud2bc\uc774\uc788\uc2b5\ub2c8\ub2e4.\uc81c\ud488\uc0dd\uc131 \uacfc\uc815\uc740 \uccab \ubc88\uc9f8 \uae30\uc0ac<\/a>\uc5d0\uc11c\ub354 \uc790\uc138\ud788 \uc124\uba85\ud588\uc2b5\ub2c8\ub2e4.<\/p> 4. \uae30\uae30\uc0c1\uc5d0\uc11c\uc758 \ud14c\uc2a4\ud2b8\uac00 \ud14c\uc2a4\ud130\uc758 Google\uacc4\uc815\uc5d0\uc11c\uc218\ud589\ub418\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4 (\uc989,\ud574\ub2f9\uacc4\uc815\uc740 \uc774 \ud14c\uc2a4\ud2b8 \ud2b8\ub799\uc5d0 \ud14c\uc2a4\ud130\ub85c \ub4f1\ub85d\ub418\uc5b4\uc57c \ud558\uace0\ud544\uc694\ud55c \ubaa8\ub4e0 \uae30\uc220 \uc561\uc138\uc2a4 \uad8c\ud55c\uc744 \uac00\uc838\uc57c \ud569\ub2c8\ub2e4).\uc774\uc810\uc740 \ub2f9\uc5f0\ud574 \ubcf4\uc774\uc9c0\ub9cc \ubb38\uc81c\ub294 \uc0dd\uae30\uae30 \ub9c8\ub828\uc774\ub77c,\uc774\ub7f0\uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud55c\ub2e4\uba74 \uc774 \ubd80\ubd84\uc744 \ud655\uc778\ud560 \ud544\uc694\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p> 5. \uad6c\ub9e4\ud14c\uc2a4\ud2b8\uc5d0 \uc0ac\uc6a9\ub418\ub294 \ube4c\ub4dc\uc758 applicationId\ub294PlayConsole\uc758applicationId\uc640\uc644\uc804\ud788 \uc77c\uce58\ud574\uc57c \ud569\ub2c8\ub2e4.\uc774\uac83\uc740\ub514\ubc84\uadf8 \ube4c\ub4dc\uc5d0 \ud655\uc7a5\uc790\ub97c \ucd94\uac00\ud55c \uc0ac\ub78c\ub4e4\uc5d0\uac8c \ud2b9\ud788\uc911\uc694\ud569\ub2c8\ub2e4.<\/p> 6. (\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774\uc544\ub2c8\ub77c)\uacc4\uc815\uc758\uc67c\ucabd \uba54\ub274\uc5d0\uc11c Setup\u2192 License Testing<\/em>\uc139\uc158\uc5d0\ud14c\uc2a4\ud130\uc758 \uc774\uba54\uc77c \uc8fc\uc18c\ub97c \ucd94\uac00\ud558\uc5ec,\uc2e4\uc81c\uce74\ub4dc\uac00 \uc544\ub2cc \ud14c\uc2a4\ud2b8 \uce74\ub4dc\uc5d0\uc11c \ubb34\ub8cc\ub85c \uc81c\ud488\uc744 \uad6c\ub9e4\ud569\ub2c8\ub2e4.\ub610\ub2e4\ub978 \uc774\uc810\uc740,\uc774\uacbd\uc6b0 \uad6c\ub3c5\uc5d0\ud14c\uc2a4\ud2b8 \uae30\uac04<\/a>\uc774\uc788\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4.\uc774\uc624\ub958\uc640 \uad00\ub828\uc774 \uc5c6\uc9c0\ub9cc \uc720\uc6a9\ud55c \uc9c0\uc2dd\uc785\ub2c8\ub2e4.<\/p> \uc624\ub958\ub294\uc791\uc5c5\uc744 \ub9e4\uc6b0 \ubcf5\uc7a1\ud558\uac8c \ub9cc\ub4e4 \uc218 \uc788\uc73c\ubbc0\ub85c,\uc624\ub958\uac00\uc5b4\ub5bb\uac8c \ubc1c\uc0dd\ud560 \uc218 \uc788\ub294\uc9c0 \uc774\ud574\ud558\ub294 \uac83\uc774 \ud56d\uc0c1 \uc911\uc694\ud569\ub2c8\ub2e4.\uc81c\ud488\uc5d0\uc561\uc138\uc2a4\ud558\uae30 \uc704\ud574 \uc5bc\ub9c8\ub098 \ub9ce\uc740 \ub2e8\uacc4\ub97c \uac70\uccd0\uc57c \ud558\ub294\uc9c0\uc0dd\uac01\ud574\ubcf4\uba74,\uac00\uc7a5\uc26c\uc6b4 \ubc29\ubc95\uc740 ITEM_UNAVAILABLE\uc744\uc7a1\ub294 \uac83\uc785\ub2c8\ub2e4.\ub530\ub77c\uc11c,\uc81c\uccb4\ud06c\ub9ac\uc2a4\ud2b8\uac00 \ub3c4\uc6c0\uc774 \ub418\uae30\ub97c \ubc14\ub78d\ub2c8\ub2e4.<\/p> ERROR\uc640DEVELOPER_ERROR<\/h2>
<\/figure>
\uc624\ub958\ucf54\ub4dc<\/h2>
ITEM_UNAVAILABLE<\/h2>
\uacb0\ub860<\/h2>