연동준비하기 연동파라미터 규격 추가기능 모바일빌링
• 방화벽정보 • 대칭키 • HASH 방법 • 신용카드 빌키발급 • 휴대폰 빌키발급 • 보안추가방법(선택)

모바일빌링


정기과금(빌링) 서비스 가맹점에서 모바일 기기를 통한 빌링키발급 시 사용합니다.

빌키발급 후 빌링키를 이용한 결제 승인요청은 INIAPI 빌링승인을 참조하여 주시기 바랍니다.

※ 주의사항
1. 모바일빌링은 모바일 일반결제 서비스(mobile.inicis.com) 과 상이한 별도의 API 입니다.
    이니라이트 상점으로 계약된 MID만 사용가능합니다. (빌링서비스 + 이니라이트 계약)

2. 모바일빌링 서비스는 모바일 device에 최적화 되어 있습니다.
  - PC브라우저에서의 이상 작동은 확인이 불가합니다.
  - PC 빌링키발급은 PC(웹표준)결제 서비스를 이용바랍니다.

 
 
 

방화벽정보


모바일빌링 서비스 통신을 위해서는 아래의 가맹점 방화벽이 허용되어 있어야합니다.


- 연결방향(가맹점기준) : OUTBOUND
- PORT : 443 (https)

항목 URL IP
운영환경 inilite.inicis.com 203.238.37.166
 
 
 

대칭키 (INILite key)


모바일빌링에서는 대칭키로 INILite key 를 사용하며 사용자 금액위변조 방지를 위해 HASH 값을 생성하여 대조할 때 사용됩니다.

INILite key 는 반드시 상점아이디(MID) 와 매칭되는 key 로 세팅하셔야 합니다.   


<< 테스트MID 대칭키 >>

용도 MID INILite key
빌링(정기과금) 결제 INIBillTst b09LVzhuTGZVaEY1WmJoQnZzdXpRdz09

  ※ 국민카드사 정책상, 국민카드 (카카오뱅크카드 포함) 는 빌링키발급 테스트 가 불가합니다.

 
 
 

HASH 방법


모바일빌링은 요청전문 위변조 방지를 위해 일부데이터를 SHA256 으로 HASH 합니다.

모바일빌링 HASH 검증

대상파라미터 : mid + orderid + timestamp + INILitekey

ex) hash생성 예시
SHA-256("INIBillTstORDERID123420130808171939b09LVzhuTGZVaEY1WmJoQnZzdXpRdz09")

     -> BYTE to HEXA :
     964bc7c98d9b3ca3a1375d97bd5637a92209869b55f397ea8a47f9b088fe9c69

hashdata: 964bc7c98d9b3ca3a1375d97bd5637a92209869b55f397ea8a47f9b088fe9c69

<< 모바일빌링 hash 대상파라미터 >>

파라미터 설명
mid 상점아이디
orderid 주문번호
timestamp 전문생성시간 [YYYYMMDDhhmmss]
INILite key 상점아이디(mid) 대칭키  key
 
 
 

신용카드 빌키발급


신용카드 빌키발급 요청 시 사용되는 파라미터에 대하여 안내합니다.

* 참고)  1. 모바일빌링 응답파라미터는 추후 요건에 의해 추가될 수 있습니다.
2. 실패 응답시 일부 파라미터 응답이 null 일 수 있습니다.


신용카드 빌키발급 요청URL : https://inilite.inicis.com/inibill/inibill_card.jsp

HTTP Method : POST
Accept-charset : UTF-8

파라미터 설명 필수(O/X) SIZE(Byte)
mid 상점아이디 O 10
authtype 인증구분 ["D" 고정] O 1
orderid 주문번호 O 64
price 거래금액 O 12
goodname 상품명 O 80
buyername 구매자명 O 30
buyeremail 구매자 이메일주소 X 60
buyertel 구매자 휴대폰번호 X 40
returnurl 결과수신URL O N/A
timestamp 전문생성시간 [YYYYMMDDhhmmss] O 14
period 제공기간 ["Y2":년단위결제, "M2":월단위결제, "YYYYMMDDYYYYMMDD":시작일종료일]
* 시,분 단위까지 설정가능 / Default: "별도 제공 기간 없음" 표시
* 결제 고객에게 노출용도 (결제에 영향을 주지 않음)
O 24
period_custom 별도 제공기간 (미세팅 시 period 값 표시) X 24
carduse 개인/법인카드 사용선택 ["percard":개인카드만,"cocard":법인카드만]
* Default: 개인/법인카드 사용(사용자선택)
X 7
merchantreserved 상점 예약필드 X 1000
hashdata 전문위변조 HASH   HASH
×
모바일빌링 HASH 검증

대상파라미터 : mid + orderid + timestamp + INILitekey

ex) hash생성 예시
SHA-256("INIBillTstORDERID123420130808171939b09LVzhuTGZVaEY1WmJoQnZzdXpRdz09")

     -> BYTE to HEXA :
     964bc7c98d9b3ca3a1375d97bd5637a92209869b55f397ea8a47f9b088fe9c69

hashdata: 964bc7c98d9b3ca3a1375d97bd5637a92209869b55f397ea8a47f9b088fe9c69


관련 웹매뉴얼로 이동하기

hash(mid+orderid+timestamp+INILitekey)
O 64
파라미터 설명 SIZE(Byte)
resultcode 결과코드 ["00": 성공, 그외 실패] 4
resultmsg 결과메세지 N/A
pgauthdate 거래일자 [YYYYMMDD] 8
pgauthtime 거래시간 [hhmmss] 6
tid 거래번호 40
mid 상점아이디 10
orderid 주문번호 (빌키발급 요청 시 세팅한 값) N/A
billkey 발급된 빌링키 40
authkey 빌링인증 트렌젝션 ID 40
cardcd 카드코드   Code 2
cardno 카드번호 16
cardkind 카드구분 [0: 개인카드, 1:법인카드] 1
CheckFlag 카드종류 [0: 신용카드, 1: 체크카드, 2: 기프트카드] 1
data1 카드비밀번호 앞2자리 (AES256 암호화 후 UTF-8 URL Encode된 값)   example
×

모바일빌링 "data1" 파라미터 복호화 샘플


※ "data1" 값 복호화는 필수가 아니므로 가맹점 내부적으로 필요하신 경우에만 진행하시면 됩니다.
※ secretKey 는 INILitekey 를 사용합니다.


import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* AES 암호화 샘플
* @author INICIS, MI1
*
*/

public class SampleCrypto
{
public static byte[] ivBytes = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
/**
* AES 복호화 함수
* @param secretKey // key 는 INILitekey 를 사용합니다.
* @param text
* @param charset
* @return
* @throws Exception
*/

public static String decryptAES(String secretKey, String text, String charset) throws
Exception {
IvParameterSpec iv = new IvParameterSpec(ivBytes);
SecretKeySpec spec = new SecretKeySpec(secretKey.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, spec, iv);
BASE64Decoder dec = new BASE64Decoder();
return new String(cipher.doFinal(dec.decodeBuffer(text)), charset);
}
}

* 특정가맹점만 사용
28
merchantreserved 상점 예약필드 1000
 
 
 

휴대폰 빌키발급


휴대폰 빌키발급 요청 시 사용되는 파라미터에 대하여 안내합니다.

※ 주의사항
휴대폰 빌링의 경우는 통신사 정책으로 빌키 발급시 인증+승인이 자동으로 됩니다.
2회차 부터는 1회차 동일금액, 익월+-5일이내 로 승인요청이 되어야 합니다.

휴대폰 빌링의 경우는 계약에 따라 회차 처리 로직이 다를 수 있으니 필히 계약 상태 확인후 진행바랍니다.

* 참고)  1. 모바일빌링 응답파라미터는 추후 요건에 의해 추가될 수 있습니다.
2. 실패 응답시 일부 파라미터 응답이 null 일 수 있습니다.


휴대폰 빌키발급 요청URL : https://inilite.inicis.com/inibill/inibill_hpp.jsp

HTTP Method : POST
Accept-charset : UTF-8

파라미터 설명 필수(O/X) SIZE(Byte)
mid 상점아이디 O 10
orderid 주문번호 O 64
price 거래금액 O 12
type 휴대폰결제 상품유형 [1:컨텐츠, 2:실물] O 1
goodname 상품명 O 80
buyername 구매자명 O 30
returnurl 결과수신URL O N/A
timestamp 전문생성시간 [YYYYMMDDhhmmss] O 14
period 제공기간 ["Y2":년단위결제, "M2":월단위결제]
* Default: "정기결제" 표시 / 결제 고객에게 노출용도 (결제에 영향을 주지 않음)
O 24
merchantreserved 상점 예약필드 X 1000
hashdata 전문위변조 HASH   HASH
×
모바일빌링 HASH 검증

대상파라미터 : mid + orderid + timestamp + INILitekey

ex) hash생성 예시
SHA-256("INIBillTstORDERID123420130808171939b09LVzhuTGZVaEY1WmJoQnZzdXpRdz09")

     -> BYTE to HEXA :
     964bc7c98d9b3ca3a1375d97bd5637a92209869b55f397ea8a47f9b088fe9c69

hashdata: 964bc7c98d9b3ca3a1375d97bd5637a92209869b55f397ea8a47f9b088fe9c69


관련 웹매뉴얼로 이동하기

hash(mid+orderid+timestamp+INILitekey)
O 64
파라미터 설명 SIZE(Byte)
resultcode 결과코드 ["00": 성공, 그외 실패] 4
resultmsg 결과메세지 N/A
tid 거래번호 40
mid 상점아이디 10
orderid 주문번호 (빌키발급 요청 시 세팅한 값) N/A
billkey 발급된 빌링키 40
authkey 빌링인증 트렌젝션 ID 40
hppcorp 휴대폰통신사 [*** 고정] 3
merchantreserved 상점 예약필드 1000
 
 
 

보안추가방법(선택)


모바일빌링 호출방식은 동일하며, 보안강화를 위해 요청/응답 시 아래내용 추가가 필요합니다.

<< 보안추가 요청파라미터 >>

파라미터 설명 SIZE(Byte)
flg_crypto 보안추가 사용여부 ["Y": 사용] 1
hashdata 전문위변조 HASH 항목추가
hash(price+mid+orderid+timestamp+INILitekey)
N/A

<< 보안추가 응답파라미터 >>

※ flg_crypto=Y 로 요청 시, billkey 는 아래와 같이 암호화된 값으로 전달됩니다.


파라미터 설명 SIZE(Byte)
billkey 발급된 빌링키 암호화   example
×

빌링키 암호화값 복호화 샘플


※ secretKey 는 INILitekey 를 사용합니다.


import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* AES 암호화 샘플
* @author INICIS, MI1
*
*/

public class SampleCrypto
{
public static byte[] ivBytes = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
/**
* AES 복호화 함수
* @param secretKey // key 는 INILitekey 를 사용합니다.
* @param text
* @param charset
* @return
* @throws Exception
*/

public static String decryptAES(String secretKey, String text, String charset) throws
Exception {
IvParameterSpec iv = new IvParameterSpec(ivBytes);
SecretKeySpec spec = new SecretKeySpec(secretKey.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, spec, iv);
BASE64Decoder dec = new BASE64Decoder();
return new String(cipher.doFinal(dec.decodeBuffer(text)), charset);
}
}

* billkey 암호화 : AES256 암호화 후 UTF-8 URL Encode된 값
40