모바일 일반결제
KG이니시스 결제창을 호출하여 다양한 지불수단으로 안전한 결제를 제공하는 서비스
Quick Guide
샘플 다운로드
개발 언어에 맞는 샘플을
다운로드 받아 주세요.
리턴 URL 수정
결과값을 수신받을 수 있는
P_NEXT_URL 과 P_NOTI_URL 을 설정해주세요.
테스트 실행 및 결과확인
결제 진행과정과
응답결과를 확인해 주세요.
실제 연동진행
가맹점 실서버 환경에 맞게
연동을 진행해주세요.
연동 준비하기
모바일결제 연동 전, 체크해야할 사항을 안내드립니다.
MID상점아이디
계약 완료 여부, 사용 가능 지불 수단 등은 계약담당자 문의금액위변조
Hashkey
(선택사항) 금액위변조 Hash 기능사용 시에만 필요한 key가맹점관리자 ▶ 상점정보 ▶ 계약정보 ▶ 부가정보 ▶ 모바일 금액위변조 Hashkey
방화벽정보
항목 | 스테이징환경 | 운영환경 |
---|---|---|
URL | stgmobile.inicis.com | fcmobile.inicis.com ksmobile.inicis.com |
IP | 183.109.71.84 | 118.129.210.57 183.109.71.50 |
PORT | 443 | |
연결방향 | OUTBOUND |
결제요청 정보
- 결제요청 URL : https://mobile.inicis.com/smart/payment/
- HTTP Method : POST
- Accept-charset : EUC-KR
- 필수파라미터
- 선택파라미터
- 추가옵션(P_RESERVED)
P_INI_PAYMENT* | 요청지불수단 |
지불수단
10 byte
|
---|---|---|
P_MID* | 상점아이디 |
10 byte
|
P_OID* | 주문번호 반드시 Unique 값으로 생성 (거래추적 시 사용됨) |
40 byte
|
P_AMT* | 결제금액 숫지만 허용, 콤마(",") 사용불가 |
64 byte
|
P_GOODS* | 상품명 |
80 byte
|
P_UNAME* | 구매자명 |
30 byte
|
P_NEXT_URL* | 결과수신 URL |
N/A
|
P_NOTI_URL | 가상계좌입금통보 URL 가상계좌 결제 시 필수 |
N/A
|
P_HPP_METHOD | 휴대폰결제 상품유형
[1:컨텐츠, 2:실물] 휴대폰결제 시 필수 |
1 byte
|
P_RESERVED* | "centerCd=Y" IDC센터코드 수신 사용옵션 세팅 필수 ex) P_RESERVED = centerCd=Y 여러옵션 추가 세팅 시 "&"(엠퍼센트) 구분자 사용 |
N/A
|
P_QUOTABASE | 할부개월수 노출옵션 [할부개월:할부개월] 금액이 할부조건일 경우 동작 ex) 세팅 예시 일시불 세팅 시, value="00" 2~6개월 세팅 시, value="02:03:04:05:06" |
신용카드
N/A
|
---|---|---|
P_CARD_OPTION | 신용카드 우선선택 옵션 [selcode=카드코드] 설정한 카드코드에 해당하는 카드가 선택된 채로 Display 됩니다. |
신용카드
10 byte
|
P_ONLY_CARDCODE | 결제 카드사 선택 노출옵션 [카드코드:카드코드] Default: 결제가능한 모든 카드사 표시 |
신용카드
N/A
|
P_VBANK_DT | 가상계좌 입금기한 날짜 [YYYYMMDD] Default: 요청일 +10일로 자동설정 |
가상계좌
8 byte
|
P_VBANK_TM | 가상계좌 입금기한 시간 [hhmm] |
유의사항
가상계좌
4 byte
|
P_TAX | 부가세 "부가세 업체정함" 계약가맹점만 설정필요. |
64 byte
|
P_TAXFREE | 비과세 (면세상품 금액) "부가세 업체정함" 계약가맹점만 설정필요 |
64 byte
|
P_CHARSET | 결과 수신 인코딩 [utf8, euc-kr] Default: euc-kr |
6 byte
|
P_MOBILE | 구매자 휴대폰번호 숫자와 "-" 만 허용 |
15 byte
|
P_EMAIL | 구매자 이메일 주소 "@", "." 외 특수문자 입력불가 |
30 byte
|
P_MNAME | 가맹점 이름 |
N/A
|
P_LANG | 결제창 언어 설정 ["ko":국문, "en":영문] Default: "ko":국문 |
2 byte
|
P_LOGO_URL | 결제창 헤더 상단 이미지 변경필드 URL 을 전송 시 해당 URL 의 이미지 로딩 P_INI_PAYMENT = NOAUTHCARD (비인증결제) 일 때만 세팅가능 |
N/A
|
P_NOTI | 가맹점 임의 데이터 |
600 byte
|
P_TIMESTAMP | 타임스템프 [TimeInMillis(Long형)] 모바일 금액위변조 옵션 P_RESERVED="amt_hash=Y" 세팅 시 필수 |
20 byte
|
P_CHKFAKE | BASE64_ENCODE(SHA512(Data)) HASH 값 대상파라미터 : P_AMT + P_OID + P_TIMESTAMP + HashKey 모바일 금액위변조 옵션 P_RESERVED="amt_hash=Y" 세팅 시 필수 |
HASH
N/A
|
P_RESERVED | 지불수단별 추가옵션 상단 [추가옵션] 탭 참고 |
N/A
|
※ P_RESERVED 세팅예시 옵션 구분자 "&"(앰퍼센트) |
|||
---|---|---|---|
P_RESERVED | centerCd=Y * | IDC센터코드 수신 사용옵션 |
공통
|
amt_hash=Y | 모바일 금액위변조 hash검증 사용옵션 amt_hash=Y 일때, P_TIMESTAMP, P_CHKFAKE 파라미터 세팅 필수 |
유의사항
공통
|
|
P_RESERVED | below1000=Y | 신용카드 결제 시 1000원 이하금액 결제가능 옵션 |
신용카드
|
merc_noint=Y& noint_quota=카드코드-개월:개월^카드코드-개월:개월 |
상점부담 무이자할부 옵션 "상점부담무이자" 계약 가맹점만 사용 |
신용카드
|
|
d_card=카드코드& d_quota=할부개월 |
신용카드 결제창 직접호출 옵션 별도계약시 사용가능 |
신용카드
|
|
cp_yn=Y | 신용카드 포인트 사용여부 별도계약시 사용가능 |
신용카드
|
|
noeasypay=Y | 간편결제 미노출 옵션 |
신용카드
|
|
global_visa3d=Y | 해외카드 노출 옵션 |
신용카드
|
|
app_scheme=앱스키마명:// | (IOS의 경우) 가맹점APP 및 타사앱을 통해 결제진행 시 설정 |
신용카드
|
|
apprun_check=Y |
(Android의 경우)
intent:// 호출 (IOS의 경우) ISP 인증완료 후 확인버튼 클릭 시, 인증이 되지 않았다면 다시 ISP 앱 호출 |
신용카드
|
|
pinpayId=DI값 | 핀페이 고객 고유 식별 값 [DI 권고] 핀페이 연동 시 필수 |
신용카드
87 byte
|
|
P_RESERVED | d_kwpy=Y | 뱅크월렛 바로가기 옵션 |
계좌이체
|
bank_receipt=N | 현금영수증 UI 미노출 옵션 Default: 현금영수증 UI 노출 |
계좌이체
|
|
iosapp=Y& app_scheme=앱스키마명:// |
(IOS의 경우) 가맹점APP 및 타사앱을 통해 결제진행 시 설정 |
계좌이체
|
|
P_RESERVED | vbank_receipt=Y | 현금영수증 UI 노출 옵션 Default: 현금영수증 UI 미노출 |
가상계좌
|
P_RESERVED | hpp_corp=통신사 | 휴대폰결제 업체지정 옵션 [SKT, KTF, LGT] 중복지정 시 구분자 ":"(콜론) |
휴대폰
|
STEP 2인증결과
P_STATUS | 결과코드 "00":성공, 이외 실패 |
4 byte
|
---|---|---|
P_RMESG1 | 결과메시지 |
10 byte
|
P_TID | 인증거래번호 성공시에만 전달 |
40 byte
|
P_AMT | 거래금액 |
8 byte
|
idc_name | IDC센터코드 [fc, ks, stg] 승인요청 시 P_REQ_URL 과 비교검증 필요 |
CODE
N/A
|
P_REQ_URL | 승인요청 URL 해당 URL로 HTTPS API Request 승인요청 - POST 이니시스 제공 승인API 가 맞는지 확인 필요 (IDC센터코드와 비교 검증 필요) |
N/A
|
P_NOTI | 가맹점 임의 데이터 |
600 byte
|
STEP 3승인요청
승인요청 정보
- 승인요청 URL : STEP2 인증결과 수신 시 응답된 P_REQ_URL
이니시스 제공 승인API 가 맞는지 확인 필요 (IDC센터코드와 비교 검증 필요) - Content-type: application/x-www-form-urlencoded
- HTTP Method : POST
- 통신방식 : http-Client 통신
P_MID* | 상점아이디 결제요청 시 세팅한 P_MID 와 동일한 값 세팅 |
10 byte
|
---|---|---|
P_TID* | 인증거래번호 |
40 byte
|
STEP 4승인결과
※ 유의사항
승인결과 파라미터는 모든 결제 프로세스 종료 후 최종적으로 전달되는 응답파라미터 입니다.
- 응답파라미터는 추후 요건에 의해 추가될 수 있습니다.
- 실패 응답 시, 일부 파라미터 응답이 null 일 수 있습니다.
- 공통
- 신용카드
- 계좌이체/가상계좌/휴대폰
- 현금영수증
P_STATUS | 결과코드 "00":성공, 이외 실패 (실패코드 4byte) |
4 byte
|
---|---|---|
P_RMESG1 | 결과메세지 |
500 byte
|
P_TID | 거래번호 |
40 byte
|
P_MID | 상점아이디 |
10 byte
|
P_OID | 주문번호 |
100 byte
|
P_AMT | 거래금액 |
8 byte
|
P_TYPE | 지불수단 |
지불수단
N/A
|
P_AUTH_DT | 승인일자 [YYYYMMDDhhmmss] |
14 byte
|
P_UNAME | 구매자명 |
30 byte
|
P_MNAME | 가맹점명 결제요청 정보에 입력된 값 반환 |
N/A
|
P_NOTI | 가맹점 임의 데이터 |
600 byte
|
P_NOTEURL | 가맹점 전달 P_NOTI_URL |
N/A
|
P_NEXT_URL | 가맹점 전달 P_NEXT_URL |
N/A
|
P_AUTH_NO | 승인번호 |
신용카드
30 byte
|
---|---|---|
P_CARD_NUM | 신용카드번호 |
신용카드
16 byte
|
P_CARD_INTEREST | 상점부담 무이자 할부여부 ["1":상점부담 무이자] |
신용카드
1 byte
|
P_RMESG2 | 카드 할부기간 |
신용카드
500 byte
|
P_FN_CD1 | 카드사 코드 |
신용카드
4 byte
|
P_FN_NM | 결제카드사 한글명 |
신용카드
N/A
|
CARD_CorpFlag | 카드구분 ["0":개인카드, "1":법인카드, "9":구분불가] |
신용카드
1 byte
|
P_CARD_CHECKFLAG | 카드종류 ["0":신용카드, "1":체크카드, "2":기프트카드] |
신용카드
1 byte
|
P_CARD_PRTC_CODE | 부분취소 가능여부 ["1":가능 , "0":불가능] |
신용카드
1 byte
|
P_CARD_ISSUER_CODE | 카드발급사(은행) 코드 |
신용카드
2 byte
|
P_ISP_CARDCODE | VP 카드코드 |
신용카드
15 byte
|
P_SRC_CODE | 간편(앱)결제구분 |
간편결제
신용카드
1 byte
|
P_CARD_MEMBER_NUM | 가맹점번호 자체가맹점인 경우만 |
신용카드
9 byte
|
P_CARD_PURCHASE_CODE | 매입사코드 자체가맹점인 경우만 |
신용카드
2 byte
|
P_CARD_USEPOINT | 포인트 사용금액 |
신용카드
12 byte
|
P_COUPONFLAG | 쿠폰사용 유무 ["1":사용] |
신용카드
1 byte
|
P_COUPON_DISCOUNT | 쿠폰(즉시할인) 금액 |
신용카드
N/A
|
P_CARD_APPLPRICE | 신용카드 승인금액 |
신용카드
N/A
|
P_CARD_COUPON_PRICE | 즉시할인 쿠폰 사용 시, 실제 카드승인 금액 |
신용카드
N/A
|
NAVERPOINT_UseFreePoint | 네이버포인트 무상포인트 |
신용카드
12 byte
|
NAVERPOINT_CSHRApplYN | 네이버포인트 현금영수증 발행여부 ["Y":발행, "N":미발행] |
신용카드
1 byte
|
NAVERPOINT_CSHRApplAmt | 네이버포인트 현금영수증 발행 금액 |
신용카드
12 byte
|
PCO_OrderNo | 페이코 주문번호 |
신용카드
N/A
|
CARD_EmpPrtnCode | 롯데카드 임직원 제휴 구분코드 ["L":임직원] 롯데카드인 경우만 임직원 구분코드 전달 |
신용카드
1 byte
|
CARD_NomlMobPrtnCode | 카드사 제휴구분코드 ["P":롯데카드일반, "M":롯데카드모바일, "H":현대카드(통합)] |
신용카드
N/A
|
P_FN_CD1 | 은행코드 |
계좌이체
2 byte
|
---|---|---|
P_FN_NM | 결제은행 한글명 |
계좌이체
N/A
|
P_VACT_NUM | 가상계좌번호 |
입금통보
가상계좌
14 byte
|
P_VACT_BANK_CODE | 입금은행코드 |
가상계좌
2 byte
|
P_FN_NM | 입금은행명 |
가상계좌
N/A
|
P_VACT_NAME | 예금주명 |
가상계좌
18 byte
|
P_VACT_DATE | 입금기한일자 [YYYYMMDD] |
가상계좌
8 byte
|
P_VACT_TIME | 입금기한시각 [hhmmss] |
가상계좌
6 byte
|
P_HPP_NUM | 휴대폰번호 |
휴대폰
11 byte
|
P_HPP_CORP | 휴대폰통신사 [*** 고정] |
휴대폰
3 byte
|
P_CSHR_CODE | 결과코드 ["0000":정상, 그외 실패] |
현금영수증
6 byte
|
---|---|---|
P_CSHR_MSG | 결과메세지 |
현금영수증
N/A
|
P_CSHR_AMT | 현금영수증 총 금액 [총금액 = 공급가액+세금+봉사료] |
현금영수증
N/A
|
P_CSHR_SUP_AMT | 공급가액 |
현금영수증
N/A
|
P_CSHR_TAX | 부가세 |
현금영수증
N/A
|
P_CSHR_SRVC_AMT | 봉사료 |
현금영수증
N/A
|
P_CSHR_TYPE | 용도구분 ["0":소득공제, "1":지출증빙] |
현금영수증
1 byte
|
P_CSHR_DT | 발행일시 [YYYYMMDDhhmmss] |
현금영수증
14 byte
|
P_CSHR_AUTH_NO | 발행 승인번호 가상계좌는 채번시점에선 미전달 (입금통보로 전달) |
현금영수증
9 byte
|
(예외) 망취소처리 요청
망취소요청 정보
가맹점에서 승인결과 전문 처리 중 예외발생 시 망취소 요청할 수 있습니다.
※ 망취소 요청가능시간 : 인증TID 기준 10분 이내, 승인TID 기준 1분 이내
※ 망취소를 일반 결제취소 용도로 사용하지 마십시오.
※ 망취소요청URL HOST 값을 절대로 고정으로 사용하지 마십시오.
- 망취소요청 URL : {인증결과 전달된 P_REQ_URL의 HOST}/smart/payNetCancel.ini
- Content-type: application/x-www-form-urlencoded
- HTTP Method : POST
- 통신방식 : http-Client 통신
- 망취소 요청
- 망취소 응답
P_TID* | 인증결과로 전달된 인증TID 일반적으로 INIMX_AUTH, INIMX_AISP 등으로 시작 |
40 byte
|
---|---|---|
P_MID* | 결제요청 시 설정한 P_MID 값 |
10 byte
|
P_AMT* | 결제요청 시 설정한 P_AMT 값 |
12 byte
|
P_OID* | 결제요청 시 설정한 P_OID 값 |
40 byte
|
P_TIMESTAMP (선택(권장)) |
타임스템프 [TimeInMillis(Long형)] P_CHKFAKE 세팅 시 반드시 함께 세팅필요 |
20 byte
|
P_CHKFAKE (선택(권장)) |
BASE64_ENCODE(SHA512(Data)) HASH 값 대상파라미터 : P_AMT + P_OID + P_TIMESTAMP + HashKey |
HASH
N/A
|
P_STATUS | 결과코드 "00":성공, 이외 실패 |
2 byte
|
---|---|---|
P_RMESG1 | 결과메세지 |
100 byte
|
P_TID | 취소된 거래에 대한 승인TID |
40 byte
|
(WebView) 앱 연동 참고사항
어플리케이션 내 WebView 에서 INIpayMobile 을 구현하는 경우에 해당합니다.
WebView 에서 INIpayMobile 을 띄우는 방식은 기본 모바일 웹 연동방법과 동일합니다.
이에, 해당 가이드는 3rd-party 앱 호출 시 주의사항 및 '결제 앱 미 설치 시, 앱 스토어 이동 이슈' 등의 내용을 주로 다룹니다.
안드로이드
A. WebViewClient 를 상속 받은 Class 를 구현하시고, shouldOverrideUrlLoading 을 호출해주세요.
B. shouldOverrideUrlLoading 함수 내에, 감지되는 URL 별로 분기처리를 해주세요.
C. 예외처리를 통해 startActivity 에 따른 앱 호출 및 마켓으로 이동할 수 있도록 구현해주세요.
@SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if( !url.startsWith("http://") && !url.startsWith("https://") ) { Intent intent; try { intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); Uri uri = Uri.parse(intent.getDataString()); startActivity(new Intent(Intent.ACTION_VIEW, uri)); return true; } catch (URISyntaxException ex) { return false; } catch (ActivityNotFoundException e) { try { Intent marketIntent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); String packageNm = marketIntent.getPackage(); marketIntent = new Intent(Intent.ACTION_VIEW); marketIntent.setData(Uri.parse("market://details?id=" + packageNm)); startActivity(marketIntent); return true; } catch (URISyntaxException e1) { return false; } } } else { view.loadUrl(url); return false; } }
✔️ Android API 21 이상 체크사항
Android API 21 부터는 webview에서 Insecurity Page에 대한 Access 및 Mixed contents, Third party cookies 사용을 차단합니다.
Insecurity Page 에 대한 Access 차단으로 P_NEXT_URL 의 scheme가 http 인 경우, 인증결과가 전달되지 않을 수 있으니 하기 설정 확인바랍니다.
또한, Third party cookies 사용의 차단으로 안심클릭 카드 결제 진행 시, 보안 키보드를 불러오지 못하는 이슈 등이 발생할 수 있습니다.
if (Build.VERSION.SDK_INT > 21) { // Insecurity Page 에 대한 Access 허용 설정 sampleWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); // setAcceptThirdPartyCookies : true 설정 CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); cookieManager.setAcceptThirdPartyCookies(sampleWebView, true); }
✔️ Android API 30 이상 체크사항
Android11 이전 버전 OS 에서는 PackageManager 에서 제공하는 메소드(queryIntentActivities(), getInstalledApplications(), resolveActivity() ) 등 을 사용하여 앱 설치 유무를 확인하였습니다.
Android11(API 30) 부터는 패키지 가시성 제한 으로 INIpayMobile 결제창에서 사용하는 외부 앱 호출 시 패키지 정보로 앱 설치 여부를 확인하고 있는 경우, 정상 설치가 되어 있어도 마켓으로 이동하는 문제가 발생할 수 있습니다
이에, 두가지 방안 중 선택하여 연동해주시면 됩니다.
방안 1 요소에 패키지 정의
- AndroidManifest.xml 파일 수정
- AndroidManifest.xml 파일 요소에 패키지를 정의하면 패키지의 가시성이 확보됩니다.
- 장점 : 코드 수정 없이 AndroidManifest 파일만 수정
- 단점 : 패키지 목록 관리 필요 ( 신규 결제 앱 출시에 따라 패키지 추가 등록 필요)
방안 2 shouldOverrideUrlLoading() 예외처리 로직 추가
- startActivity() 호출 시, ActivityNotFoundException 예외 발생한 경우, 앱이 설치되지 않은 것으로 간주하고 앱 설치를 위해 마켓으로 이동 처리
- 장점 : 패키지 목록 관리가 필요하지 않음
- 단점 : 민감한 Webview 처리 로직 수정 필요
✔️ 주의사항
주의사항 1 USER AGENT 수정 issue
신용카드 결제 시 각 카드사 ACS 페이지에서는 사용자의 USER AGENT 를 검증하고 있습니다. (검증방식은 카드사별 상이) 가맹점 앱에서 USER AGENT 를 임의로 변경하는 경우, 카드사 인증실패가 발생할 수 있으니 이점 유의 바랍니다
✔️ 안드로이드 PackageName
카드사 | 패키지명 | |
---|---|---|
BC | ISP | kvp.jjy.MispAndroid320 |
국민 | KBPay | com.kbcard.cxh.appcard |
liivbank | com.kbstar.liivbank | |
newliiv | com.kbstar.reboo | |
KB 스타뱅킹 | com.kbstar.kbbank | |
삼성페이 | com.samsung.android.spay | |
삼성페이미니 | com.samsung.android.spaylite | |
페이코 | com.nhnent.payapp | |
엘지페이 | com.lge.lgpay | |
하나 | com.hanaskcard.paycla | |
하나(공인인증) | com.hanaskcard.rocomo.potal | |
롯데 | com.lcacApp | |
삼성 | kr.co.samsungcard.mpocket | |
삼성 monimo | net.ib.android.smcard | |
신한 | com.shcard.smartpay | |
신한 슈퍼SOL | com.shinhan.smartcaremgr | |
신한(ARS/일반/smart) | com.shinhancard.smartshinhan | |
현대 | com.hyundaicard.appcard | |
현대(공인인증) | com.lumensoft.touchenappfree | |
농협 | nh.smart.nhallonepay | |
씨티 | kr.co.citibank.citimobile | |
우리 | 우리 WON 카드 | com.wooricard.smartapp |
우리 WON 뱅킹 | com.wooribank.smart.npib |
간편결제 | 패키지명 |
---|---|
페이코 | com.nhnent.payapp |
LPAY | com.lottemembers.android |
SSGPAY | com.ssg.serviceapp.android.egiftcertificate |
티머니페이 | com.tmoney.tmpay |
토스페이 | viva.republica.toss |
삼성페이 | com.samsung.android.spay |
카카오페이 | com.kakao.talk |
네이버 | com.nhn.android.search |
차이페이 | finance.chai.app |
알리페이 | com.eg.android.AlipayGphone |
위챗페이 | com.tencent.mm |
계좌이체 | 패키지명 |
---|---|
뱅크페이 | com.kftc.bankpay.android |
케이뱅크 | com.kbankwith.smartbank |
백신 | 패키지명 |
---|---|
TouchEn | com.TouchEn.mVaccine.web |
ahnlab | com.ahnlab.v3mobileplus |
shiftworks | kr.co.shiftworks.vguardweb |
IOS
A. Info.plist 에 타 앱 호출을 위한 카드사 App Scheme을 등록해주세요.
B. 웹페이지 로딩이 호출 될때 요청, 탐색 등을 위한 WKNavigationDelegate 메서드를 구현해주세요.
C. canOpenURL 여부에 따라, 앱 호출 및 마켓으로 이동 할 수 있도록 구현해주세요.
func webView( _ webView: WKWebView,decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if let scheme = navigationAction.request.url?.scheme, scheme != "http" && scheme != "https" { if let openApp = navigationAction.request.url, UIApplication.shared.canOpenURL(openApp) { // ios version 별 처리 if #available(iOS 10.0, *) { UIApplication.shared.open(openApp, options: [:], completionHandler: nil) } else { UIApplication.shared.openURL(openApp) } } else { // 타 앱(결제앱) 호출 불가 및 미설치에 대한 처리 // let alert = UIAlertController(title: "알림", message: "앱 미설치", preferredStyle: .actionSheet) } decisionHandler(WKNavigationActionPolicy.cancel) } else { decisionHandler(WKNavigationActionPolicy.allow) } }
✔️ 신용카드(앱카드), 계좌이체 결제연동 체크사항
IOS 는 Android 계열과 다르게 앱카드 및 계좌이체 앱이 종료된 뒤, 가맹점 앱은 Background 에 머문채 바탕화면이 개제됩니다. (IOS 의 운영체제 특성에 기반)
이 때문에 결제 앱이 종료되면서 가맹점 appScheme 을 호출하도록 구성해야 합니다
신용카드 P_RESERVED = app_scheme=가맹점스키마명://
계좌이체 P_RESERVED = iosapp=Y&app_scheme=가맹점스키마명://
상기 옵션 셋팅 시, 가맹점스키마명 뒤 :// 은 필수로 입력해주셔야 정상동작합니다.
(ex. 가맹점 스키마명이 INIpayMobile 일 경우, app_scheme=INIpayMobile:// 로 셋팅)
✔️ IOS 9 이상 체크사항
IOS9 업데이트 이후, APP 내 보안정책 강화로 canOpenUrl 또는 openUrl 함수 사용 시, info.plist 파일에 LSApplicationQueriesSchemes 배열을 정의하여 호출할 App scheme list 를 등록 해주셔야 합니다.
info.plist<key>LSApplicationQueriesSchemes</key> <array> <string>kakaotalk</string> <string>ispmobile</string> <string>kb-acp</string> <string>kftc-bankpay</string> <string>com.wooricard.wcard</string> <string>hdcardappcardansimclick</string> ...... </array>
✔️ 주의사항
주의사항 1 브라우저 환경에서의 쿠키허용 issue
INIpayMobile 을 정상적으로 사용하기 위해서는 사용자의 브라우저에서 쿠키를 허용하는 상태여야 합니다.
주의사항 2 3rd party 앱 브라우저 결제 issue
앱 브라우저(네이버, 크롬 등) 에서 앱카드, 계좌이체 결제진행 시 인증 완료 후 결제를 진행한 브라우저 앱으로 돌아가기 위해서는 P_RESERVED 에 app_scheme={앱브라우저 스키마}:// 형태를 설정되어 요청되어야 합니다.
앱 브라우저로 결제 진행되는 경우, 해당 브라우저의 user-agent 를 확인하여 app_scheme 설정하여 결제요청 바랍니다.
주의사항 3 USER AGENT 수정 issue
신용카드 결제 시 각 카드사 ACS 페이지에서는 사용자의 USER AGENT 를 검증하고 있습니다. (검증방식은 카드사별 상이) 가맹점 앱에서 USER AGENT 를 임의로 변경하는 경우, 카드사 인증실패가 발생할 수 있으니 이점 유의 바랍니다
✔️ IOS App Scheme
신용카드 | App Scheme |
---|---|
신한 앱카드 | shinhan-sr-ansimclick:// |
신한 공인인증 앱 | smshinhanansimclick:// |
현대 앱카드 | hdcardappcardansimclick:// |
현대 공인인증 앱 | smhyundaiansimclick:// |
삼성 앱카드 | mpocket.online.ansimclick:// |
삼성 monimo | monimopay:// monimopayauth:// |
삼성 공인인증 앱 | scardcertiapp:// |
하나 앱카드 | cloudpay:// |
하나멤버스윌렛 | hanawalletmembers:// |
하나 공인인증 앱 | hanaskcardmobileportal:// |
농협 앱카드 (올원페이) | nhallonepayansimclick:// |
농협 공인인증 앱 | nonghyupcardansimclick:// |
국민 앱카드 | kb-acp:// |
국민 Liiv 앱 | Liivbank:// |
KBpay 리브 next | newliiv:// |
KBpay KB스타뱅킹 | kbbank:// |
우리WON뱅킹 | NewSmartPib:// |
우리WON카드 앱 | com.wooricard.wcard:// |
우리 앱카드 (우리페이) | wooripay:// |
씨티 앱카드 | citimobileapp:// |
롯데 앱카드 | lotteappcard:// |
롯데 스마트페이 | lottesmartpay:// |
ISP | ispmobile:// |
PAYCO | payco:// |
카카오페이 | kakaotalk:// |
LPAY | lpayapp:// |
Lpay, Lpoint 통합앱 | lmslpay:// |
SSGPAY | shinsegaeeasypayment:// |
토스페이 | supertoss:// |
티머니페이 | tmoneypay:// |
차이페이 | chai:// |
Syrup 앱카드 | tswansimclick:// |
은련카드 | uppay:// |
계좌이체 | App Scheme |
---|---|
뱅크페이 (기본) | kftc-bankpay:// |
뱅크윌렛 | bankwallet:// |
케이뱅크 페이 | ukbanksmartbanknonloginpay:// |
산업 | kdb-bankpay:// |
기업 | ibk-bankpay:// |
국민 | kb-bankpay:// |
KEB 하나 | keb-bankpay:// |
수협 | sh-bankpay:// |
NH농협 | nhb-bankpay:// |
농축협 | nh-bankpay:// |
우리 | wr-bankpay:// |
SC | sc-bankpay:// |
신한 | s-bankpay:// |
씨티 | ct-bankpay:// |
대구 | dg-bankpay:// |
부산 | bnk-bankpay:// |
광주 | kj-bankpay:// |
제주 | jj-bankpay:// |
전북 | jb-bankpay:// |
경남 | kn-bankpay:// |
우정사업본부 | kp-bankpay:// |
신협 | cu-bankpay:// |
새마을 | mg-bankpay:// |
K뱅크 | kbn-bankpay:// |
카카오뱅크 | kkb-bankpay:// |