hungrok
hungrok2y ago

결제위젯 안드로이드 토스페이 연동

PC 브라우저 환경에서는 success / fail 시 REDIRECT URL 이 불리워 지는데 안드로이드 폰 에서는 취소나 결재 완료시 redirect URL 이 불리지 않습니다. html 페이지는 PC 나 안드로이드 동일한 것을 사용하였습니다. 특별한 조치가 필요 한것인지요 ?
31 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
이실장
이실장2y ago
에러나는 페이지 이미지 한번 보여주시겠어요?
hungrok
hungrokOP2y ago
에러 상황은 아니고요, 결재완료시 즉시 원래 URL 로 돌아오네요 PC 브라우저 사용시에는 아래 폰 화면이 나오면서 정상적으로 success URL 이 불립니다
No description
이실장
이실장2y ago
동영상으로 올려주시겠어요? 상황이 정확히 확인이 안됩니다
Kimoon Lee
Kimoon Lee2y ago
안드로이드 앱 환경이신가요?
hungrok
hungrokOP2y ago
안드로이드 웹뷰 클라이언트 에서 발생하는 이슈로 확인 되었습니다 스마트폰 브라우저에서 직접 실행하면 문제가 나질 않네요 BC카드 페이북 도 동일한 상황인것을 보아 전체적인 이슈로 보입니다
이실장
이실장2y ago
저희 이슈가 아니라. 연동과정 중에 intent처리가 안되어 그렇습니다. 연동 언어가 어떻게 되시나요?
hungrok
hungrokOP2y ago
JAVA 입니다
이실장
이실장2y ago
웹뷰 만들어서 그위에 모바일웹 통째로 띄우신걸까요?
hungrok
hungrokOP2y ago
이실장
이실장2y ago
웹뷰(WebView)에서 외부 앱 열기 | 토스페이먼츠 개발자센터
브라우저가 아닌 모바일 웹뷰로 결제창을 띄울 때 카드사별 결제수단을 인증하려면 외부 앱(3rd-party 앱)을 연동해야 합니다. 연동에 필요한 외부 앱 스킴(App URL Scheme)목록과 추가 로직을 살펴보세요.
이실장
이실장2y ago
위에 참고해서 웹뷰 연동해주시면 될 것 같아요.
hungrok
hungrokOP2y ago
가이드 대로 구현 하였습니다
이실장
이실장2y ago
웹뷰 클라이언트에서는 어떤 오류가 발생하나요?
Kimoon Lee
Kimoon Lee2y ago
영상을 녹화해서 공유해주시면 좋을것 같아요.
hungrok
hungrokOP2y ago
예...3rd party 앱이 종료되면서 메인앱이 바로 불리네요...영상은 공유토록 할께요
hungrok
hungrokOP2y ago
<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="supertoss" /> </intent-filter>
hungrok
hungrokOP2y ago
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest req) { Uri uri = req.getUrl() ; String url = uri.toString() ; Context ctx = Fragment_TossPay.getFragContext() ; Intent it = new Intent(Intent.ACTION_VIEW, uri) ; System.out.printf("TOSS SOUL-1 : url=%s \n",url) ; if (!URLUtil.isNetworkUrl(url) && !URLUtil.isJavaScriptUrl(url)) { if ("intent".equals(uri.getScheme())) { boolean result = startSchemeIntent(url); System.out.printf("TOSS SOUL-2: url=%s, result=%b \n", url, result); return result; } else { try { ctx.startActivity(it); System.out.printf("TOSS SOUL-3 \n") ; return true; } catch (Exception e) { return false; } } } System.out.printf("TOSS SOUL-4 \n") ; return false ; // loading 을 계속 한다 /* original if (!URLUtil.isNetworkUrl(url) && !URLUtil.isJavaScriptUrl(url)) { final Uri uri; try { uri = Uri.parse(url); } catch (Exception e) { return false; } if ("intent".equals(uri.getScheme())) { return startSchemeIntent(url); } else { try { startActivity(new Intent(Intent.ACTION_VIEW, uri)); return true; } catch (Exception e) { return false; } } } return false; */ } private boolean startSchemeIntent(String url) { final Intent schemeIntent; Context ctx = Fragment_TossPay.getFragContext() ; try { schemeIntent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); } catch (URISyntaxException e) { return false; } try { ctx.startActivity(schemeIntent); return true; } catch (ActivityNotFoundException e) { final String packageName = schemeIntent.getPackage(); if (!TextUtils.isEmpty(packageName)) { ctx.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + packageName))); return true; } } return false; }
이실장
이실장2y ago
@hungrok 현재 activity 전체를 웹뷰로 호출하신게 아니시죠? 웹뷰 컴퍼넌트를 전체높이가 아니라, 여러개 붙이신건가요?
hungrok
hungrokOP2y ago
예..fragment 에서 webview client 만들어서 진행 중 입니다
이실장
이실장2y ago
일단 위와 같이 fragment별로 위젯을 연동하시면 문제점이 있습니다... 1. 영상 10초 처럼 카드사 페이지가 짤립니다. 2. 결제위젯은 선택한 결제수단에 따라 height가 flexible하게 조정됩니다. 이에 맞춰 height도 조정되지 않으면 안보이는 영역이 발생할 수 있습니다. (이미지 참고) 이에 전체 주문서 페이지 자체를 웹뷰로 구현해주시거나.. 위 문제점을 보완한 저희 Native SDK를 사용해주셔야합니다. https://docs.tosspayments.com/reference/widget-android
결제위젯 Android SDK | 토스페이먼츠 개발자센터
결제위젯 Android SDK를 추가하고 메서드를 사용하는 방법을 알아봅니다.
No description
No description
hungrok
hungrokOP2y ago
결제위젯 Android SDK 는 안드로이드 native 를 의미 하는것이죠 ?
이실장
이실장2y ago
네 맞습니다.
hungrok
hungrokOP2y ago
예...우선 별도 Activity 에서 webviewClient 를 상속받아서 진행해보겠습니다 결제위젯 Android SDK 는 implementation 된 라이브러리 가 not found 라고 나와서..우선 웹뷰기반 으로 진행하고 있습니다'
이실장
이실장2y ago
존재하는 라이브러리입니다..! https://github.com/tosspayments/payment-sdk-android
GitHub
GitHub - tosspayments/payment-sdk-android
Contribute to tosspayments/payment-sdk-android development by creating an account on GitHub.
이실장
이실장2y ago
다시한번 확인 요청드려요. 실제 연동해서 사용하는 곳들이 많이 있습니다.
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
hungrok
hungrokOP2y ago
안드로이드 웹뷰 기반으로 결제위젯 1차시험 된듯 합니다. 지원 감사 드립니다
Kimoon Lee
Kimoon Lee2y ago
네 공유해주셔서 감사합니다.
hungrok
hungrokOP2y ago
크게 두가지 문제 였는데 1) 화면 잘림, 삼성카드 진행 안됨건 : contentView 를 webView 전체로 사용하여 해결 2) 3rd party app 종료후 success / fail 안되는 이슈 : webview 의 history 기능을 사용하여 toss web url 을 재 로딩 하여 해결 하였습니다.
이실장
이실장2y ago
공유 감사드려요

Did you find this page helpful?