KG이니시스 웹표준 결제 모듈 연동

남양주개발자

·

2020. 2. 13. 17:30

728x90
반응형

이니시스 Javascript 패키지

 

inipay-js

이니시스 결제 모듈 패키지

www.npmjs.com

이니시스 웹표준 결제에서 제공하는 지불수단은 아래와 같습니다.

  • 신용카드 - 안심클릭, ISP, 비인증 신용카드, 해외 Visa 카드, 삼성월렛, PayPin 

  • 간편결제 – 카카오페이, Lpay, SSGpay, 삼성페이, Kpay, Payco

  • 실시간 계좌이체

  • 무통장입금(가상계좌)

  • 휴대폰결제

  • 포인트

  • 상품권(문화상품권, 해피머니상품권, 스마트문화상품권)

  • 전화결제(ARS)

  • 신용카드, 휴대폰 빌링 (빌링키 발급만 가능)

 

결제 요청 페이지 작성(INIStdPayRequest)


signkey값 설정

웹 표준 결제 이용시 패스워드 기능을 하는 코드로 MID 번호별로 부여됩니다.

String mid = "INIpayTest";
// 가맹점 ID(가맹점 수정후 고정) 
// 가맹점에 제공된 웹 표준 사인키(가맹점 수정후 고정) 
String signKey = "SU5JTElURV9UUklQTEVERVNfS0VZU1RS";

signkey 발급 방법

관리자 페이지의 상점정보 > 계약정보 > 부가정보의 웹결제 signkey 생성 조회 버튼 클릭 후 팝업창에서 생성 버튼 클릭 후 해당 값 소스에 반영하시기 바랍니다.

표준결제 스크립트 Import

실서버 (https://stdpay.inicis.com/stdjs/INIStdPay.js)

<script language="javascript" type="text/javascript" src="https://stdpay.inicis.com/stdjs/INIStdPay.js" charset="UTF-8"></script>

테스트서버 (https://stgstdpay.inicis.com/stdjs/INIStdPay.js) - INIpayTest 결제 테스트 가능 지불수단별 거래 승인됨

<script language="javascript" type="text/javascript" src="https://stgstdpay.inicis.com/stdjs/INIStdPay.js" charset="UTF-8"></script>
**참고사항**

* 신용카드: 별도의 취소를 하지 않는 경우 당일 23 시에 일괄취소 처리됨 
* 계좌이체: 별도의 취소를 하지 않는 경우 당일 23 시에 일괄취소 처리됨 
* 휴대폰: 별도의 취소를 하지 않은 경우 당일 23 시에 일괄 취소처리됨
* 가상계좌: 입금테스트 진행하도록 안내 리얼입금의 경우 환불이 어려움

 

상단의 스크립트를 <head> Tag 안에 설정​

<!-- 예시 -->
<head>
....
<script language="javascript" type="text/javascript" src="HTTPS://stdpay.inicis.com/stdjs/INIStdPay.js" charset="UTF-8"></script>
....
</head>

결제

기본 요청데이터 필드 참고

 

KG이니시스 웹 결제 기본 요청데이터 필드

필드명 한글명칭 예시 [Data Type, 밑줄은 기본값] 설명 필수 여부 크기 (최대) version 버전 [String]"1.0" [1.0] 전문 버전 Yes 20 Byte mid 상점아이디 [String] "INIpayTest" 제공된 mid * 10자리 고정 Yes (..

webruden.tistory.com

결제 요청 Form 양식 (신용카드 예시)

*** 무조건 returnUrl을 서비스 도메인과 매칭시켜야됩니다. (로컬서버 필요)

*** signature 생성 방법 참고

<!-- 무조건 returnUrl을 사용 도메인과 매칭시켜야됩니다. -->
<form id="payForm" method="POST" accept-charset="UTF-8">
  <input name="version" type="hidden" required="required" value="1.0">
  <input name="mid" type="hidden" required="required" value="INITEST">
  <input name="oid" type="hidden" required="required" value="INITEST_1581574116856">
  <input name="goodsname" type="hidden" required="required" value="2019 맥북프로">
  <input name="price" type="hidden" required="required" value="1000">
  <input name="tax" type="hidden" value="0">
  <input name="taxfree" type="hidden" value="0">
  <input name="currency" type="hidden" required="required" value="WON">
  <input name="buyername" type="hidden" required="required" value="Ruden">
  <input name="buyertel" type="hidden" required="required" value="010-1234-1234">
  <input name="buyeremail" type="hidden" value="ruden91@naver.com">
  <input name="timestamp" type="hidden" required="required" value="1581574116856">
  <input name="signature" type="hidden" required="required" value="e3a9de48e5c9be23caa469e9edc2a7ae1447d486ac37ecb69e715f558e5f239f">
  <input name="returnUrl" type="hidden" required="required" value="http://example.com/return">
  <input name="mKey" type="hidden" required="required" value="a7e01e0fda1f05dffd353e65051b8f30bb6c88d76f812eb0b6af94b10c12cb5f8">
  <input name="gopaymethod" type="hidden" value="Card">
  <input name="languageView" type="hidden" value="ko">
  <input name="charset" type="hidden" value="UTF-8">
  <input name="popupUrl" type="hidden" required="required" value="http://example.com/return">
  <input name="merchantData" type="hidden" required="required" value="">
  <input name="quotabase" type="hidden" value="2:3:4:5:6:7:8:9:10:11:12">
  <input name="nointerest" type="hidden">
  <input name="acceptmethod" type="hidden" value="CARDPOINT:HPP(2):va_receipt:below1000:SKIN():KWPY_TYPE(0):KWPY_VAT(0)">
</form>

<script>    
  var pay = function() {            
    INIStdPay.pay('payForm') // form id
  }    

  document.querySelector('.pay').addEventListener('click', pay)    
</script>

 

리턴 페이지(인증수신/승인 API) 작성(INIStdPayReturn)

결제창을 통해 인증이 완료되면 인증결과를 가맹점으로 전달 합니다.

 

인증 결과 데이터 필드 참고

 

KG이니시스 웹 결제 인증결과 데이터

[TABLE 2-1] 인증결과 데이터 필드명 한글명칭 Data Type 설명 크기 (최대) resultCode 결과코드 String [0000 : 정상, 기타 : 실패] 10 Byte resultMsg 결과메세지 String 성공시 : 성공, 실패시 : 기타 오류 메..

webruden.tistory.com

인증 결과에서 리턴받은 authUrl 필드를 활용해서 HTTPS API Request(httpClient 통신) 승인요청(POST)을 합니다.

netCancelUrl 필드는 승인요청  인증결과 수신 실패 / DB저장 실패 시 해당 URL로 HTTPS API Request(httpClient 통신) 망취소요청(POST)을 합니다.

 

결제 승인 API 요청 - authUrl 활용

- 인증결과가 성공일때 authUrl 로 HTTPS API Request(httpClient 통신)를 통해 페이지 요청 

* HTTPS API Request(httpClient 통신) 

= httpClient 등의 http Background 통신이 가능한 유틸을 통해서 웹페이지를 요청후 그 결과를 수신 

- 가맹점 환경에 따른 charset, format 을 지정하여 요청 

- 승인요청은 인증결과 리턴후 5 분이내 이루어져야만 합니다.

 

승인 요청 데이터 필드 참고

 

결제 승인 API 결과(결제완료)

  • 승인 요청후 결제결과(responseBody)를 받아 요청타입(format)에 따라서 파싱 후에 내부처리(DB 저장 등) 하시기 바랍니다. 

  • 수신시 전송 필드명을 명확히하여 처리하시기 바랍니다. (필드명 대/소문자 구분) 

  • 승인에 실패하였을 경우 실패시 전달되는 데이터만 전송됩니다. 

  • 결제 수단에 따라 공통필드외 추가적으로 다른 데이터가 전송됩니다.

승인 결과 데이터 필드 참고

 

이니시스 결제 완료 시 Dummy JSON

{
  CARD_Quota: '00',
  CARD_ClEvent: '',
  buyerTel: '010-1234-5678',
  parentEmail: '',
  applDate: '20200109',
  buyerEmail: 'test@inicis.com',
  OrgPrice: '',
  p_Sub: '',
  resultCode: '0000',
  mid: 'INIpayTest',
  CARD_UsePoint: '',
  CARD_Num: '*********',
  authSignature:
    '1098068440353e7f82e9eb2ee331fd52b81e15629827b6f0ad7d7f11bb9f5617',
  tid: 'StdpayCARDINIpayTest91120200128480541566',
  EventCode: '',
  goodName: 'SUPLIST_GO >> Double or Twin COMFORT',
  TotPrice: '100',
  payMethod: 'Card',
  CARD_MemberNum: '',
  MOID: 'INIpayTest_1578536899402',
  CARD_Point: '',
  currency: 'WON',
  CARD_PurchaseCode: '',
  CARD_PrtcCode: '0',
  applTime: '112849',
  goodsName: '2018 맥북프로',
  CARD_CheckFlag: '1',
  FlgNotiSendChk: '',
  CARD_Code: '97',
  CARD_BankCode: '97',
  CARD_TerminalNum: '',
  buyerName: '박경두',
  p_SubCnt: '',
  applNum: '',
  resultMsg: '정상처리되었습니다.',
  CARD_Interest: '0',
  CARD_SrcCode: 'O',
  CARD_ApplPrice: '100',
  CARD_GWCode: 'K',
  custEmail: '',
  CARD_Expire: '',
  CARD_PurchaseName: '카카오머니',
  CARD_PRTC_CODE: '0',
  payDevice: 'PC'
}

결제 취소

웹표준 결제는 망 취소 외 거래 취소 기능을 지원하지 않습니다. 

따라서, 결제 취소는 별도의 TX 모듈을 설치하시어 TX 모듈의 취소기능을 활용하셔야 합니다. 

TX 모듈이 설치되어 있지 않은 경우 , 이니시스 홈페이지(www.inicis.com) 의 “전자결제 > 기술지원 > 기술안내/다운로드” 에서 최신버전을 다운로드 받으시기 바랍니다. 

그 외 문의사항은 당사 기술지원팀(ts@kggroup.co.kr / 02-3430-5960) 으로 문의 바랍니다.

 

  • 가맹점에서 당 웹표준서버로 승인 요청 중 예외(TIMEOUT)가 발생 하거나, 승인 정상 수신 후 가맹점 처리 중 에러가 발생 시에도 망 취소 하도록 샘플로 제공하고 있습니다. (샘플소스 참고) 

  • 승인 요청 전문과 동일한 스펙으로 진행됩니다. 

  • 인증결과 수신 시 전달받은 “netCancelUrl” 으로 망 취소 요청합니다. 

  • 망 취소를 일반 결제 취소 용도로 사용시 정상 취소가 안될수 있습니다.

KG이니시스 웹표준 망 취소 요청 및 응답 데이터 참고

 

 

728x90
반응형

💖 저자에게 암호화폐로 후원하기 💖

아이콘을 클릭하면 지갑 주소가자동으로 복사됩니다

5개의 댓글

  • Favicon of https://kanonen.tistory.com Kanone

    2020.04.23 20:28 신고

    감사합니다ㅠㅠ 계약문제로 아임포트를 못쓰게 돼서 날벼락 맞았는데 유플러스 전자결제 연동구현 하는데 흐름이 대동소이해서 많은 도움이 되었습니다.

  • 윤상호

    2020.07.14 11:44

    작성자님 안녕하세요. 해당 포스팅 관련 질문이 있습니다 ㅎㅎ 혹시 개인적으로 연락할 수 있을까요 ?