오핀 (OFIN) SDK Guide Fintech Mobile SDK Guide - Android V 1.0 OPPFLIB 1
1. 버전정보 버전개정일자개정사유개정내역 1.0 2017.06.22 1. 초안작성 2. 개요 O'FIN( 오핀 ) 은금융투자회사, 유관기관, 핀테크기업의데이터와서비스를 Open API 로게시하고, 상호융합을통해혁신적비즈니스를만들수있도록하는핀테크오픈플랫폼입니다. 본문서는 API 호출시사용자인증및권한을부여하여안전하고표준화된방법으로 서비스를제공하기위한 오핀 앱연동 Oppflib (SDK) 사용설명서입니다. OPPFLIB 2
3. 전체진행시나리오 OPPFLIB 3
4. 준비사항 4.1 Library File Import 라이브러리사용을위해 Android Studio/Eclipse 에배포된라이브러리 (oppflib.jar) 를 추가합니다. Project > Open Module Settings > Dependencies > (+) add File dependency > oppflib.jar 추가 OPPFLIB 4
5. 연동하기 5.1 Activity 설정 Koscom SDK 를연동하기위해서는 OPPFLibAppActivity, OPPFLibFragmentActivity 또는 OPPFLibAppCompatActivity 를상속받아구현해야합니다. 응답결과는 OPPFLibFintech.FintechListener 를통해서전달받을수있습니다. // JoinActivity.java SDK 를호출하는코드를가지고있는 Activity 파일 import com.oppf.mobile.lib.oppflibappcompatactivity; import com.oppf.mobile.lib.oppflibfintech; import com.oppf.mobile.lib.oppflibparameterexception; public class JoinActivity extends OPPFLibAppCompatActivity { private OPPFLibFintech fintech = null; //OPPFLibFintech 객체를변수로선언 @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_join); fintech = new OPPFLibFintech(); // 변수초기화 5.2 SDK 를호출하는방법으로 requestforresult 방식과 requestforactivityresult 방식, 두가지를제공합니다. 5.2.1 OPPFLibFintech#requestForResult 를이용하는경우 - Activity 에응답수신용 Custom URL Schem 과 launchmode 를 "singletask" 으로설정 - URL Scheme : scheme://host (ex. fintech-app://com.example.kscomapisdk.join" ) OPPFLIB 5
* AndroidManifest launchmode, URL Scheme 설정 AndroidManifest.xml 파일설정예 <activity android:name=".joinactivity" android:label="@string/app_name" android:launchmode="singletask"> <intent-filter> <action android:name="android.intent.action.view" /> <category android:name="android.intent.category.default" /> <category android:name="android.intent.category.browsable" /> <data android:scheme="fintech-app" android:host="com.fintech.oppf2.app.join" /> </intent-filter> </activity> OPPFLIB 6
* requestforresult 를사용하여 SDK 를호출 /** * Koscom Open API App 샐행. Activity 의 startactivity 를호출. * 응답결과수신을위해 Fintech-App 에 Custom URL Schem 를설정하고전달해야함. private void startjoinsampleforactivity() { /* JSONObject data = new JSONObject(); * Koscom Open API App 샐행 <br> * Custom URL Schem 으로 Intent 를구성하여 Activity 의 startactivity 를호출하여 <br> * Koscom Open API App 을실행하고응답결과는 Fintech-App 에 Custom URL Schem 를설정하고 <br> * 서비스호출시데이터와같이전달하여수신한다. * * @param activity OPPFLibAppCompatActivity, Activity 는 OPPFLibAppCompatActivity 상속받아구현하여야 한다. * @param fn String, Koscom Open API 의서비스이름 * @param data JSONObject, App 에전달할데이터 * @param callbackurl String, 응답수신용 Custom URL Schem * @param listener OPPFLibFintech.FintechListener, Koscom Open API 응답수신리스너 try { fintech.requestforresult((oppflibappcompatactivity)this, join", data, "fintech-app://com.fintech.oppf2.app.join", new ExFintechListener()); catch (ActivityNotFoundException e) { showresultdialog("fintech 회원가입결과 ", " 서비스연동실패 [join] " + e.getlocalizedmessage()); catch (OPPFLibParameterException e) { showresultdialog("fintech 회원가입결과 ", " 서비스연동실패 [join] " + e.getlocalizedmessage()); 5.2.2 OPPFLibFintech#requestForActivityResult 를사용하여 SDK 를호출 - Custom URL Schem 과 launchmode 를설정할필요가없다. OPPFLIB 7
/** * Koscom Open API App 샐행. Activity 의 startactivityforresult 를호출 private void startjoinsampleforactivityresult() { /* // API 로전달할 data 를 JSONObject 로생성하여전달 JSONObject data = new JSONObject(); * Koscom Open API App 샐행 <br> * CustomURL Schem 으로 Intent 를구성하여 Activity 의 startactivityforresult 를호출하여 <br> * Koscom Open API App 을실행하고응답결과는 OPPFLibAppCompatActivity 의 onactivityresult 를통해전달 받는다. <br> * * @param activity OPPFLibAppCompatActivity, Activity 는 OPPFLibAppCompatActivity 를상속받아구현하여야 한다. * @param fn String, Koscom Open API 의서비스이름 * @param data JSONObject, App 에전달할데이터 * @param listener OPPFLibFintech.FintechListener, Koscom Open API 응답수신리스너 try { fintech.requestforactivityresult((oppflibappcompatactivity)this, "join", data, new ExFintechListener()); catch (ActivityNotFoundException e) { showresultdialog("fintech 회원가입결과 ", " 서비스연동실패 [join] " + e.getlocalizedmessage()); catch (OPPFLibParameterException e) { showresultdialog("fintech 회원가입결과 ", " 서비스연동실패 [join] " + e.getlocalizedmessage()); 5.3 응답 5.3.1 응답결과받는소스코드 OPPFLIB 8
// OPPFLibFintech.FintechListener 를상속받아응답처리하는소스코드 /** * Koscom Open API 응답결과를전달받기위한인터페이스구현클래스 * @see com.oppf.mobile.lib.oppflibfintech.fintechlistener * private class ExFintechListener implements OPPFLibFintech.FintechListener { /** * 서비스요청성공시서비스응답결과를전달빋기위한인터페이스 * @param fn String, Koscom Open API 의서비스이름 * @param message String, 응답 message * @param data JSONObject, 응답데이터 @Override public void onkoscomresultdata(string fn, String message, JSONObject data) { showresultdialog("fintech 회원가입결과 ", message + "\n" + data.tostring()); /** * 서비스요청실패를전달빋기위한인터페이스 * @param fn String, Koscom Open API 의서비스이름 * @param code String, 응답 code * @param message String, 응답 message @Override public void onkoscomresultfail(string fn, String code, String message) { showresultdialog("fintech 회원가입결과 ", " 서비스연동실패 [" + fn + "] code[" + code+ "] " + message); 5.3.2 응답결과코드 CODE_SUCCESS = 2000; CODE_CANCEL = -1; CODE_FAIL_FINTECH_REJECT = "4001"; OPPFLIB 9
5.4 API 서비스정보 - fn 은해당업무에대한키값입니다. - data 필드는해당업무에필요한데이터를정의합니다. 각업무에필요한값들을 json object 로전달합니다. 5.4.1 회원가입 API 호출 ( fn : join ) 서비스연동 API 의 오핀 회원가입여부를확인 후결과가 nonmember 인 경우 오핀 의회원가입페이지호출 /** * Koscom Open API App 샐행. Activity 의 startactivityforresult 를호출 private void startjoinsampleforactivityresult() { // API 로전달할 data 를 JSONObject 로생성하여전달 JSONObject data = new JSONObject(); /* * Koscom Open API App 샐행 <br> * CustomURL Schem 으로 Intent 를구성하여 Activity 의 startactivityforresult 를호출하여 <br> * Koscom Open API App 을실행하고응답결과는 OPPFLibAppCompatActivity 의 onactivityresult 를통해전달 받는다. <br> * * @param activity OPPFLibAppCompatActivity, Activity 는 OPPFLibAppCompatActivity 를상속받아구현하여야 한다. * @param fn String, Koscom Open API 의서비스이름 * @param data JSONObject, App 에전달할데이터 * @param listener OPPFLibFintech.FintechListener, Koscom Open API 응답수신리스너 try { fintech.requestforactivityresult((oppflibappcompatactivity)this, "join", data, new ExFintechListener()); catch (ActivityNotFoundException e) { showresultdialog("fintech 회원가입결과 ", " 서비스연동실패 [join] " + e.getlocalizedmessage()); catch (OPPFLibParameterException e) { showresultdialog("fintech 회원가입결과 ", " 서비스연동실패 [join] " + e.getlocalizedmessage()); OPPFLIB 10
회원가입페이지로이동 회원가입안내약관및본인인증휴대폰인증 회원가입 API 호출이성공하면, 가입에대한안내화면으로이동합니다. 내용확인후 [ 가입진행 ] 버튼을터치합니다. 약관에동의하시면휴대폰인증버튼이활성화됩니다. 정보입력후 [ 인증번호전송 ] 버튼을터치하면 SMS 로인증번호가발송됩니다. 수신된인증번호입력후 [ 인증하기 ] 버튼을터치합니다. OPPFLIB 11
5.4.2 OAuth 로그인창 API 호출 ( fn : oauth ) 오핀 의 OAuth 로그인을통해사용자인증을요청합니다. responsetype 은안전한금융거래정보보호를위해 Authorization Code 방식만제공합니다. 입력파라메터는 Authorization Code 요청 과동일하며, callbackurl 로 Code 값을전달합니다. Access token 은기존절차에따릅니다. 자본시장공동핀테크오픈플랫폼 API 가이드참조 [JSON 파라메터예제 ] { "data": { "scope": "account", "callbackurl": "https://open.koscom.co.kr/callbackurl", "clientid": "l7xx296eb0af278542b38a6ebd507xxxxxxx", "responsetype": "code", "state": "test" 해당 API 는사용자인증을위한 OAuth 로그인창만제공하며, Access Token 취득은기존 URL 을통해획득하시면됩니다. 인증성공 (SUCCESS), 인증실패 (FAIL) 는아래와같은에러가리턴됩니다. [OAuth 로그인창 ERROR] 에러코드 설명 4000 일반적인에러 4100 API 및서비스이용권한획득에실패한경우. 4200 Authorization Code 전달에실패한경우 4300 사용자가요청한리소스의권한허용거부 4400 비회원인증중이미가입된회원 OPPFLIB 12
/** * Koscom Open API App 샐행. Activity 의 startactivity 를호출. * 응답결과수신을위해 Fintech-App 에 Custom URL Schem 를설정하고전달해야함. private void startoauthsampleforactivity() { JSONObject data = new JSONObject(); try { EditText edittext = (EditText) this.findviewbyid(r.id.input_scope); data.put("scope", edittext.gettext().tostring()); EditText edittext1 = (EditText) this.findviewbyid(r.id.input_url); data.put("callbackurl", edittext1.gettext().tostring()); EditText edittext2 = (EditText) this.findviewbyid(r.id.input_cliid); data.put("clientid", edittext2.gettext().tostring()); EditText edittext3 = (EditText) this.findviewbyid(r.id.input_resptype); data.put("responsetype", edittext3.gettext().tostring()); EditText edittext4 = (EditText) this.findviewbyid(r.id.input_state); data.put("state", edittext4.gettext().tostring()); catch (JSONException e) { /* * Koscom Open API App 샐행 <br> * Custom URL Schem 으로 Intent 를구성하여 Activity 의 startactivity 를호출하여 <br> * Koscom Open API App 을실행하고응답결과는 Fintech-App 에 Custom URL Schem 를설정하고 <br> * 서비스호출시데이터와같이전달하여수신한다. * * @param activity OPPFLibActivity, Activity 는 OPPFLibActivity 를상속받아구현하여야한다. * @param fn String, Koscom Open API 의서비스이름 * @param data JSONObject, App 에전달할데이터 * @param callbackurl String, 응답수신용 Custom URL Schem * @param listener OOPPFLibFintech.FintechListener, Koscom Open API 응답수신리스너 try { fintech.requestforresult((oppflibactivity)this, "oauth", data, "fintechapp://com.fintech.oppf2.app.oauth", new ExFintechListener()); catch (ActivityNotFoundException e) { showresultdialog("fintech OAuth 결과 ", " 서비스연동실패 [oauth] " + e.getlocalizedmessage()); catch (OPPFLibParameterException e) { showresultdialog("fintech OAuth 결과 ", " 서비스연동실패 [oauth] " + e.getlocalizedmessage()); OPPFLIB 13
OAuth 로그인창호출 OAuth 로그인 정보제공권한허용 OAuth 로그인창호출시, OFIN 설치여부체크후설치되어있을경우 OFIN 실행 >OAuth 화면이열립니다. OAuth 로그인이완료되면정보제공권한여부설정화면으로이동합니다. [ 허용 ] 터치시핀테크앱의서비스를이용할수있습니다. OPPFLIB 14
5.4.3 앱상세페이지이동 API 호출 ( fn : apprequest ) 서비스연동 API ( 가상계좌리스트조회 ) 확인후해당고객에연결된계좌가없거나추가로앱사용신청이필요한경우 오핀 앱상세페이지로이동하여서비스신청을유도합니다. appid : 앱등록후할당받은 AppID 값을입력 [JSON 파라메터예제 ] { "data": { "appid": "139" private void startrequestsampleforactivityresult() { JSONObject data = new JSONObject(); try { data.put("appid", this.findviewbyid(r.id.input_appid)); catch (JSONException e) { /* * Koscom Open API App 샐행 <br> * CustomURL Schem 으로 Intent 를구성하여 Activity 의 startactivityforresult 를호출하여 <br> * Koscom Open API App 을실행하고응답결과는 OPPFLibAppCompatActivity 의 onactivityresult 를통해전달 받는다. <br> * * @param activity OPPFLibAppCompatActivity, Activity 는 OPPFLibAppCompatActivity 를상속받아구현하여야 한다. * @param fn String, Koscom Open API 의서비스이름 * @param data JSONObject, App 에전달할데이터 * @param listener OPPFLibFintech.FintechListener, Koscom Open API 응답수신리스너 try { fintech.requestforactivityresult((oppflibappcompatactivity)this, "apprequest", data, new ExFintechListener()); catch (ActivityNotFoundException e) { showresultdialog("fintech App 신청결과 ", " 서비스연동실패 [request] " + e.getlocalizedmessage()); catch (OPPFLibParameterException e) { showresultdialog("fintech App 신청결과 ", " 서비스연동실패 [request] " + e.getlocalizedmessage()); OPPFLIB 15
앱상세페이지로이동 앱소개 ( 상세 ) 연결계좌선택앱사용신청완료 앱상세페이지로이동및사용신청을유도합니다. 가상계좌를발급및연결계좌를선택합니다. 사용신청이정상적으로완료되면해당핀테크서비스를사용하실수있습니다. OPPFLIB 16
6. API Reference 6.1 OPPFLibActivity / OPPFLibFragmentActivity / OPPFLibAppCompatActivity SDK 를사용하기위하여 Activity 파일에서상속해야하는 Activity Class 입니다. OPPFLibActivity 는 Activity 를상속하고, OPPFLibFragmentActivity 는 FragmentActivity 를상속하며, OPPFLibAppCompatActivity 는 AppCompatActivity 를상속합니다. ( 상황에맞게사용하시면됩니다. 6.1.1 seturlschemelistener Syntax Parameter Description void seturlschemelistener(oppfliburlschemelistener urlschemelistener) OPPFLibURLSchemeListener urlschemelistener - 서비스결과를전달받기위한인터페이스 (OPPFLibURLSchemeListener) 객체 Koscom Open API App 에서전달빋은서비스결과를전달받기위한인터페이스객체를등록한다. Note OPPFLibFintech 의 requestforactivityresult / requestforresult 에서사용됩니다. 6.2 OPPFLibFintech 6.2.1 requestforresult Syntax Parameter void requestforresult(final OPPFLibActivity activity, final String fn, JSONObject data, String rescallbackurl, final FintechListener listener) OPPFLibActivity activity - Activity 는 OPPFLibActivity 를상속받아구현 String fn - Koscom Open API 의서비스이름 JSONObject data - App 에전달할데이터 String rescallbackurl - 응답수신용 Custom URL Schem final FintechListener listener - Koscom Open API 응답수신리스너 OPPFLIB 17
Description Koscom Open API App 실행하는함수. Custom URL Schem 으로 Intent 를구성, Activity 의 startactivity 를호출하여 Koscom Open API App 을실행합니다. 응답결과는서비스호출시데이터와같이전달한수신합니다. Note OPPFLibFragmentActivity 또는 OPPFLibAppCompatActivity 를 Parameter 로받는 동일함수가있습니다. 6.2.2 requestforactivityresult Syntax Parameter public void requestforactivityresult(final OPPFLibAppCompatActivity activity, final String fn, final JSONObject data, final FintechListener listener) OPPFLibActivity activity - Activity 는 OPPFLibActivity 를상속받아구현 String fn - Koscom Open API 의서비스이름 JSONObject data - App 에전달할데이터 final FintechListener listener - Koscom Open API 응답수신리스너 Description Koscom Open API App 실행하는함수. Custom URL Schem 으로 Intent 를구성, Activity 의 startactivity 를호출하여 Koscom Open API App 을실행하고응답결과는 OPPFLibAppCompatActivity onactivityresult 를통해전달받습니다. Note OPPFLibFragmentActivity 또는 OPPFLibAppCompatActivity 를 Parameter 로받는 동일함수가있습니다. 6.2.3 goappstore Syntax Parameter public void goappstore(final Activity activity) Activity activity - activity.startactivity 에새로운 intent 로 PlayStore 화면을띄우는방식. Description PlayStore 설치화면으로이동한다. OPPFLIB 18
6.3 (interface) FintechListener Koscom Open API 응답결과를전달받기위한인터페이스정의클래스 6.3.1 onkoscomresultdata Syntax Parameter Description public void goappstore(final Activity activity) String fn - Koscom Open API 의서비스이름 String message - 응답 message JSONObject data - 응답데이터서비스요청성공시서비스응답결과를전달받기위한인터페이스 6.3.2 onkoscomresultfail Syntax Parameter Description public void goappstore(final Activity activity) String fn - Koscom Open API 의서비스이름 String code - 응답 error code String message - 응답 message 서비스요청실패를전달빋기위한인터페이스 OPPFLIB 19