PAYCO APP 결제 연동을 위한 안드로이드 데모 앱과 가이드 입니다.
-
인터넷 사용을 위해 인터넷 권한이 필요합니다.
<uses-permission android:name="android.permission.INTERNET"/>
-
http://
로 제공하는 웹사이트의 열람을 위해<application/>
태그에android:usesCleartextTraffic="true"
속성을 설정합니다. 안드로이드 9(Pie)부터는 모든 HTTP 트래픽을 강제 차단합니다.<application android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:usesCleartextTraffic="true" android:theme="@style/AppTheme"> ... </application>
-
targetSdkVersion=30 '패키지 공개상태' 변경 관련
targetSdkVersion=30인 앱에서는 '패키지 공개상태' 정책 변경으로 아래 메서드들이 기대하는 동작을 수행하지 못할 수 있습니다.
PackageManager.getPackageInfo() PackageManager.queryIntentActivities() PackageManager.getInstalledPackages() PackageManager.getInstalledApplications() Intent.resolveActivity()
샘플앱의 shouldOverrideUrlLoading() 메서드에 구현된 방식과 동일하게 구현하기 어려운 경우, manifest 파일에서 아래와 같이 패키지명 선언이 필요합니다.
<queries> <package android:name="com.nhnent.payapp" /> </queries>
데모 예제에서 MainActivity
는 상점의 url을 표시하는 WebView
를 포함한 액티비티입니다. 이 액티비티는 PAYCO APP 결제 연동을 할 수 있도록 WebView
인스턴스를 설정하는 방법을 다룹니다.
-
WebView
의WebSettings
설정-
WebView
가 자바스크립트를 사용할 수 있도록 설정합니다.webView.getSettings().setJavaScriptEnabled(true);
-
http에서 https를 호출할 수 있도록 설정합니다.
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
-
-
서드파티 쿠키 사용 설정
CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); cookieManager.setAcceptThirdPartyCookies(webView, true);
url을 처리할 수 있도록 WebViewClient
클래스를 상속받은 클래스를 새로 작성합니다. 그리고 shouldOverrideUrlLoading()
메소드를 오버라이드 하여 웹뷰로 인입이 될 url을 처리할 수 있도록 합니다.
아래의 코드 예제들은 오버라이드 한 shouldOverrideUrlLoading()
메소드 내부에 작성하는 코드입니다. 자세한 것은 데모 코드를 참고하세요.
참고:
ClientType
클래스는 코드 작성의 편의를 위해 만든enum
입니다.about:blank
나javascript:
로 시작하는 유효하지 않은 url을 처리하기 위한 것입니다.
-
javascript:
또는about:blank
의 url을 처리합니다.// about:blank, javascript: 로 시작하는 url을 처리 if (clientType.equals(ClientType.BLANK) || clientType.equals(ClientType.JAVASCRIPT)) { return true; }
-
http
또는https
로 시작하는 url을 처리합니다.// http, https 프로토콜로 시작하는 일반적인 웹 주소를 처리 if (clientType.equals(ClientType.WEB)) { return false; }
-
그외 url을 처리하는
handleAppUrl(url)
메소드이 메소드는 다음과 같은 url 형태들을 처리할 수 있도록 되어 있습니다. 데모의 코드는 페이코 앱과 연동을 하기 위한 기본적인 기능들을 구현하였습니다. 이 메소드 내용을 참고하여 상점 앱의 필요에 맞게 추가 및 수정하여 구현해주세요.
- 전화걸기(
tel:
) - intent(
intent:
) - Play Store 관련(
market:
) - 기타
- 예외 처리
- 전화걸기(