결제위젯 안드로이드 토스페이 연동
PC 브라우저 환경에서는 success / fail 시 REDIRECT URL 이 불리워 지는데
안드로이드 폰 에서는 취소나 결재 완료시 redirect URL 이 불리지 않습니다.
html 페이지는 PC 나 안드로이드 동일한 것을 사용하였습니다.
특별한 조치가 필요 한것인지요 ?
31 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
에러나는 페이지 이미지 한번 보여주시겠어요?
에러 상황은 아니고요, 결재완료시 즉시 원래 URL 로 돌아오네요
PC 브라우저 사용시에는 아래 폰 화면이 나오면서
정상적으로 success URL 이 불립니다

동영상으로 올려주시겠어요? 상황이 정확히 확인이 안됩니다
안드로이드 앱 환경이신가요?
안드로이드 웹뷰 클라이언트 에서 발생하는 이슈로 확인 되었습니다
스마트폰 브라우저에서 직접 실행하면 문제가 나질 않네요
BC카드 페이북 도 동일한 상황인것을 보아 전체적인 이슈로 보입니다
저희 이슈가 아니라. 연동과정 중에 intent처리가 안되어 그렇습니다.
연동 언어가 어떻게 되시나요?
JAVA 입니다
웹뷰 만들어서 그위에 모바일웹 통째로 띄우신걸까요?
예
웹뷰(WebView)에서 외부 앱 열기 | 토스페이먼츠 개발자센터
브라우저가 아닌 모바일 웹뷰로 결제창을 띄울 때 카드사별 결제수단을 인증하려면 외부 앱(3rd-party 앱)을 연동해야 합니다. 연동에 필요한 외부 앱 스킴(App URL Scheme)목록과 추가 로직을 살펴보세요.
위에 참고해서 웹뷰 연동해주시면 될 것 같아요.
가이드 대로 구현 하였습니다
웹뷰 클라이언트에서는 어떤 오류가 발생하나요?
영상을 녹화해서 공유해주시면 좋을것 같아요.
예...3rd party 앱이 종료되면서 메인앱이 바로 불리네요...영상은 공유토록 할께요
<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>
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;
}
@hungrok 현재 activity 전체를 웹뷰로 호출하신게 아니시죠?
웹뷰 컴퍼넌트를 전체높이가 아니라, 여러개 붙이신건가요?
예..fragment 에서 webview client 만들어서 진행 중 입니다
일단 위와 같이 fragment별로 위젯을 연동하시면 문제점이 있습니다...
1. 영상 10초 처럼 카드사 페이지가 짤립니다.
2. 결제위젯은 선택한 결제수단에 따라 height가 flexible하게 조정됩니다. 이에 맞춰 height도 조정되지 않으면 안보이는 영역이 발생할 수 있습니다. (이미지 참고)
이에 전체 주문서 페이지 자체를 웹뷰로 구현해주시거나.. 위 문제점을 보완한 저희 Native SDK를 사용해주셔야합니다.
https://docs.tosspayments.com/reference/widget-android
결제위젯 Android SDK | 토스페이먼츠 개발자센터
결제위젯 Android SDK를 추가하고 메서드를 사용하는 방법을 알아봅니다.


결제위젯 Android SDK 는 안드로이드 native 를 의미 하는것이죠 ?
네 맞습니다.
예...우선 별도 Activity 에서 webviewClient 를 상속받아서 진행해보겠습니다
결제위젯 Android SDK 는 implementation 된 라이브러리 가 not found
라고 나와서..우선 웹뷰기반 으로 진행하고 있습니다'
존재하는 라이브러리입니다..!
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.
다시한번 확인 요청드려요.
실제 연동해서 사용하는 곳들이 많이 있습니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
안드로이드 웹뷰 기반으로 결제위젯 1차시험 된듯 합니다. 지원 감사 드립니다
네 공유해주셔서 감사합니다.
크게 두가지 문제 였는데
1) 화면 잘림, 삼성카드 진행 안됨건 : contentView 를 webView 전체로 사용하여 해결
2) 3rd party app 종료후 success / fail 안되는 이슈 : webview 의 history 기능을 사용하여 toss web url 을 재 로딩 하여 해결 하였습니다.
공유 감사드려요