Skip to main content

Integrating WebView

This guide provides the list of App Schemes and Package Names required to invoke card issuer or third-party payment apps from within a WebView rather than a standard mobile browser.

By adding the appScheme parameter, users can be automatically redirected back to your merchant app from the external payment app without additional handling. Please refer to the payment request parameters for details.

App Scheme List

Issuer / InstitutionApp Scheme
ISP (BC/Kookmin)ispmobile://
KB Kookmin Cardkb-acp://, liivbank://, newliiv://, kbbank://
Shinhan Cardshinhan-sr-ansimclick://, shinhan-sr-ansimclick-lpay://, shinhan-sr-ansimclick-naverpay://, shinhan-sr-ansimclick-payco://, smshinhanansimclick://, travelwallet://
NH Nonghyup Cardnhallonepayansimclick://, npappcardansimclick://, nonghyupcardansimclick://
Lotte Cardlottesmartpay://, lotteappcard://
Samsung Cardmpocket.online.ansimclick://, vguardstart://, monimopay://, monimopayauth://
Hana Cardcloudpay://, hanawalletmembers://
Hyundai Cardhdcardappcardansimclick://, smhyundaiansimclick://
Woori Cardcom.wooricard.wcard://, newsmartpib://
Citi Cardcitimobileapp://, citicardappkr://
Simple Paymentsamsungpay://, naversearchthirdlogin://, kakaotalk://, payco://, lpayapp://, shinsegaeeasypayment://, supertoss://
Bank Transfer (KFTC)kftc-bankpay://
T-Moneytmoneypay://
Mobile PASStauthlink://, ktauthexternalcall://, upluscorporation://
Kakao Bankkakaobank://

Android

You must register the following package names in your AndroidManifest.xml to allow your app to query and interact with external payment apps.

AndroidManifest.xml
<queries>
<package android:name="com.shcard.smartpay" /> <package android:name="com.shinhancard.smartshinhan" /> <package android:name="com.mobiletoong.travelwallet" /> <package android:name="com.shinhan.smartcaremgr" /> <package android:name="com.shinhan.sbanking"/> <package android:name="kr.co.samsungcard.mpocket" /> <package android:name="net.ib.android.smcard" /> <package android:name="com.kbcard.cxh.appcard" /> <package android:name="com.kbstar.liivbank" /> <package android:name="com.kbstar.kbbank" /> <package android:name="com.kbstar.reboot" /> <package android:name="nh.smart.nhallonepay" /> <package android:name="com.nh.cashcardapp" /> <package android:name="com.lcacApp" /> <package android:name="kvp.jjy.MispAndroid320" /> <package android:name="com.hanaskcard.paycla" /> <package android:name="kr.co.hanamembers.hmscustomer" /> <package android:name="com.hanaskcard.rocomo.potal" /> <package android:name="kr.co.citibank.citimobile" /> <package android:name="com.wooricard.smartapp" /> <package android:name="com.wooribank.smart.npib" /> <package android:name="com.hyundaicard.appcard" /> <package android:name="com.lumensoft.touchenappfree" /> <package android:name="com.TouchEn.mVaccine.webs" /> <package android:name="kr.co.shiftworks.vguardweb" /> <package android:name="com.ahnlab.v3mobileplus" /> <package android:name="com.nhnent.payapp" /> <package android:name="com.samsung.android.spay" /> <package android:name="com.samsung.android.spaylite" /> <package android:name="com.ssg.serviceapp.android.egiftcertificate" /> <package android:name="com.lottemembers.android" /> <package android:name="com.nhn.android.search" /> <package android:name="com.kakao.talk" /> <package android:name="com.kftc.bankpay.android" /> <package android:name="viva.republica.toss" /> <package android:name="com.sktelecom.tauth" /> <package android:name="com.kt.ktauth" /> <package android:name="com.lguplus.smartotp" /> <package android:name="com.kakaobank.channel"/> <package android:name="com.lgt.tmoney" /> </queries>

You should override the shouldOverrideUrlLoading method in your WebViewClient to handle external app schemes. This prevents the net::ERR_UNKNOWN_URL_SCHEME error.

Java
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
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;
}

iOS

Add the required App Schemes to your Info.plist and implement the navigation policy to allow App-to-App transitions.

Info.plist
<key>LSApplicationQueriesSchemes</key>
<array>
<string>ispmobile</string>
<string>kb-acp</string>
<string>liivbank</string>
<string>newliiv</string>
<string>kbbank</string>
<string>shinhan-sr-ansimclick</string>
<string>shinhan-sr-ansimclick-lpay</string>
<string>shinhan-sr-ansimclick-naverpay</string>
<string>shinhan-sr-ansimclick-payco</string>
<string>smshinhanansimclick</string>
<string>travelwallet</string>
<string>nhallonepayansimclick</string>
<string>npappcardansimclick</string>
<string>nonghyupcardansimclick</string>
<string>lottesmartpay</string>
<string>lotteappcard</string>
<string>mpocket.online.ansimclick</string>
<string>cloudpay</string>
<string>hanawalletmembers</string>
<string>hdcardappcardansimclick</string>
<string>smhyundaiansimclick</string>
<string>com.wooricard.wcard</string>
<string>newsmartpib</string>
<string>citimobileapp</string>
<string>citicardappkr</string>
<string>samsungpay</string>
<string>naversearchthirdlogin</string>
<string>kakaotalk</string>
<string>payco</string>
<string>lpayapp</string>
<string>shinsegaeeasypayment</string>
<string>supertoss</string>
<string>kftc-bankpay</string>
<string>tmoney</string>
<string>appfree</string>
<string>mvaccinestart</string>
<string>vguardstart</string>
<string>v3mobileplusweb</string>
<string>tauthlink</string>
<string>ktauthexternalcall</string>
<string>upluscorporation</string>
<string>monimopay</string>
<string>monimopayauth</string>
<string>kakaobank</string>
<string>tmoneypay</string>
</array>

Implement the decidePolicyForNavigationAction method in WKNavigationDelegate to handle non-HTTP schemes as shown below:

Objective-C
- (void)webView:(WKWebView *)webView
decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction
decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
NSURL* url = navigationAction.request.URL;
if (url != nil && ![url.scheme isEqual:@"http"] && ![url.scheme isEqual:@"https"]) {
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
decisionHandler(WKNavigationActionPolicyCancel);
return;
}
decisionHandler(WKNavigationActionPolicyAllow);
}