본문 바로가기
Android

안드로이드(andorid) 스튜디오 / KG이니시스(결제) 연동하기.

by 일용직 코딩노동자 2019. 10. 31.
728x90
반응형
private class SslWebViewConnect extends WebViewClient { //SSL인증서 무시 & 이니시스결제 클래스

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            handler.proceed(); // SSL 에러가 발생해도 계속 진행!
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            if(url.startsWith("location://")){
                mWebView.loadUrl("https://uaram.iptime.org:8443/location.user?lat="+Latitude+"&lng="+Longitude);
            }

            if(!url.startsWith("http://") && !url.startsWith("https://") && !url.startsWith("javascript:")){
                Intent intent;
                try{
                    intent = Intent.parseUri(url,Intent.URI_INTENT_SCHEME);
                }
                catch (URISyntaxException ex){
                    return false;
                }

                try{
                    startActivity(intent);
                }

                catch (ActivityNotFoundException e){
                    if(url.startsWith("ispmobile://")){
                        showDialog(1005);
                        return false;
                    }
                    else if(url.startsWith("intent")){
                        try{
                            Intent tempIntent = Intent.parseUri(url,Intent.URI_INTENT_SCHEME);
                            String strParams = tempIntent.getDataString();

                            Intent intent2 = new Intent(Intent.ACTION_VIEW);
                            intent2.setData(Uri.parse(strParams));

                            startActivity(intent2);
                            return true;
                        }
                        catch (Exception e1) {

                           e1.printStackTrace();
                           Intent intent3 = null;

                           try{
                               intent3 = Intent.parseUri(url,Intent.URI_INTENT_SCHEME);
                               Intent marketIntent = new Intent(Intent.ACTION_VIEW);
                               marketIntent.setData(Uri.parse("market://details?id="+intent3.getPackage()));
                               startActivity(marketIntent);
                           }
                           catch (Exception e2){
                               e2.printStackTrace();
                           }
                           return true;
                        }
                    }
                }
            }
            else{
                view.loadUrl(url);
                return false;
            }
            return true;
        }
    }

클래스를 하나 정의하여 WebViewClient상속받아줍니다.

 

그안에 위 코드내용을 적어주면 됩니다. 

맨 위 onReceivedSslError메소드는 저번 포스팅때 되었던 SSL인증서 에러를 무시하고 페이지를 띄워주는 기능입니다.

해당 코드를 작성할때 주의할점은 MainAcitivity안에 적어줘야합니다.

 

onCreate괄호 밖에서 클래스를 만들어서 작성을 해야 실현가능합니다.

 

그 후 onCreate안에

alertIsp = new AlertDialog.Builder(MainActivity.this)
                .setIcon(android.R.drawable.ic_dialog_alert)
                .setTitle("알림")
                .setMessage("모바일 ISP 어플리케이션이 설치되어 있지 않습니다. \n 설치를 눌러 진행 해 주십시요. \n 취소를 누르면 결제가 취소 됩니다.")
                .setPositiveButton("설치",new DialogInterface.OnClickListener(){
                    @Override
                            public void onClick(DialogInterface dialog, int which){
                        mWebView.loadUrl("http://mobile.vpay.co.kr/jsp/MISP/andowb.jsp");
                        finish();
            }

        })
                .setNegativeButton("취소", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "(-1)결제를 취소 하셨습니다.",Toast.LENGTH_SHORT).show();
                        finish();
                    }
                }).create();

이걸 정의해줍니다.

alertIsp는 클래스딴 전역으로

AlertDialog alertIsp;

따로 분리해서 선언합니다.

 

 

mWebSettings.setMixedContentMode(mWebSettings.MIXED_CONTENT_NEVER_ALLOW); //Insecurity 페이지 허용 이니시스 관련셋팅
cookieManager.setAcceptCookie(true); //third party cookies 사용의 차단으로 안심클릭 카드 결제시 보안키보드를 못불러오는 경우를 대비해서 설정해줍니다.
        cookieManager.setAcceptThirdPartyCookies(mWebView,true); // 이거까지 같이 ^^

WebView를 셋팅해줄때 

같이 셋팅해줍니다.

 

CookieManager cookieManager = CookieManager.getInstance();

를 따로 클래스딴에 선언해주셔야하구요.

 

 

 

후에 실행해보면 잘 되실겁니다.

 

궁금하신 사항은 댓글 남겨주세요.

728x90
반응형

댓글