비인증결제 방식(정기결제(또는 빌링결제)) 방식 관련 안내 드립니다.
비인증결제 방식(정기결제(또는 빌링결제), 키인결제) 방식은 고객의 카드정보를
암호화된 키(빌링키)로 발급하고 가맹점에서 예약된 일자에 결제요청을 주시면 공휴일 구분없이
가맹점에서 API로 결제요청하시면 결제가 가능합니다.
'비인증결제'방식은 카드정보등록(빌링키 발급)을,
- PG사결제모듈을 이용한 방식과
- REST API를 이용한 방식으로 구분되며,
PC(웹)/모바일(웹/앱) (NHN KCP의 경우 모바일은 별도 심사 후 이용 가능) 이용이 가능합니다.
포트원에서 지원하는 비인증결제방식의 정기결제 이용가능한 결제수단은
신용카드빌링결제와 휴대폰빌링결제 입니다.
비인증결제방식이므로, PG입점 기준이 까다로울 수 있으며 연동방식별 PG사의 특징을 안내 드리니
PG계약을 위한 서비스 기본구성 구현 후, PG사별로 가입신청하시어 입점상담 후 이용 부탁 드립니다.
1. REST API를 이용한 방식(신용카드)
1) 국내 결제
- 결제 수단 : 카드
- 일반 PG사 : NHN KCP, 토스페이먼츠, 나이스페이먼츠(나이스정보통신), 헥토파이낸셜(세틀뱅크), 다우데이타(페이조아), KSNET, 웰컴페이먼츠
※ 참고
•
토스페이먼츠의 정기결제서비스는 “0.03%” 카드 수수료가 추가 적용되오니 이용에 참고 부탁 드립니다.
•
KG이니시스_폼페이(REST API) 방식 : 실물(배송가능한 상품) 15일 / 비실물(컨텐츠/이용료 등) 서비스 제공기간 3개월 이하인경우 ,KG이니시스측과 계약 시점에 책임 공문 수취만 진행 된다면, 예외적으로 폼페이(REST API)방식 진행이 가능합니다.
<특징>
- PG사에서 제공하는 결제창 없이, API 통신으로 결제가 이루어지기 때문에 결제창을 직접 만드셔야하고, 직접 개발하시기 때문에 결제창 커스터마이징이 가능합니다.
결제 과정에서의 암호화를 필수로 하여 보안에 신경써주셔야한다는 차이가 있습니다.
<카드정보 입력 화면예시>
<비인증결제 보안 적용 기준>
- PG사에서 보안관련해서 규정하고 있는 내용은 별도로 없습니다만,
브라우저 - 운영하시는 서버 - 포트원 - PG사 의 순으로 데이터가 전달될텐데요,
브라우저 - 운영하시는 서버로 전송되는 구간에 SSL적용을 해주셔야 합니다.
카드데이터가 전송되는 구간은 https를 적용해 암호화된 통신을 제공하시는 것을 권장드리고 있습니다.
[참고]
- 사용자 동의 : 가맹점에서 직접 결제창 개발을 진행하는 방식이어서 결제시 해당 부분도 포함하여 개발 진행 부탁 드립니다.
- 나이스 비인증결제 서비스 적용중인 가맹점 예시 : 자비스(https://jobis.co/) , 눔코리아(http://noom.co.kr) , 렌고(http://rengo.co.kr/)
- 제이티넷 비인증결제 서비스 적용중인 가맹점 예시 : (주)리드젠https://leadgen.kr/
2. PG결제창을 이용하는 경우
1) 국내 결제
- 결제 수단 : 카드
- 일반 PG사 : NHN KCP, 토스페이먼츠, KG이니시스, 다날 , KICC(한국정보통신-이지페이), 웰컴페이먼츠, 스마트로
※ 토스페이먼츠의 정기결제서비스는 “0.03%” 카드 수수료가 추가 적용되오니 이용에 참고 부탁 드립니다.
- 간편결제사 : 카카오페이, 네이버페이(결제형), 페이코, 토스페이 간편결제
<특징>
- PG결제창 팝업, 구매자가 PG사와 직접 통신, UI 변경 불가.
- KG이니시스 : PC환경에서 결제요청(빌링키 발급)시 '공인인증'절차가 필요합니다.
- 카카오페이, KG이니시스, 다날의 경우 비정기적인 재결제가 불가하여 정기적인 주기로 재결제가 발생되어야 합니다.
- KCP : 모바일의 경우 기본적으로 정기결제 서비스 이용이 어려우며 입점 심사를 통해 적용여부 확인이 가능합니다.
- KG이니시스, 다날, KCP 의 경우 간편결제방식(1회성)으로는 이용이 불가합니다.(정기결제 방식만 지원)
- 포트원 SDK 놀이터 (https://sdk-playground.portone.io/) 에서 PG사 'KG이니시스(빌링결제)' 또는 'JTnet(빌링결제)'선택하시면 빌링결제창 체험이 가능합니다.
- 카드 빌링 결제 요청시 최대 결제요청 가능한 한도는 PG사와 계약시 1회결제요청한도 금액이 적용되고 또한 이용고객의 카드 결제 한도내에서 요청이 가능하니 참고 바랍니다.
<정기 결제창 화면 예시>
2) 해외 결제
- 결제수단 : 해외글로벌카드 (해외비자/해외마스타 등)
- 해외결제 전문 PG사 : 페이먼트월 / 페이팔
<페이먼트월_정기결제>
3. PG결제창을 이용하는 경우(휴대폰결제)
- 결제수단 : 휴대폰빌링결제
- 일반PG사 : 다날 , KG모빌리언스
<특징>
- PG결제창 팝업, 구매자가 PG사와 직접 통신, UI 변경 불가.
- 휴대폰빌링의 경우 통신사 정책으로 이전월결제(금액,일자)의 동일한 정보 기준으로 익월 결제가 이루어지는 형태의 서비스인 경우만 이용가능 합니다.금액변경하여 진행 시 반드시 통신사예외승인을 따로 받아합니다.
- 최대 결제요청 가능한 한도는 PG사와 계약시 1회결제요청한도 금액이 적용되고 또한 이용고객의휴대폰소액결제 한도가 상이할 수 있으니 참고 바랍니다.
4. 결제 연동관련
- PG가입이전 테스트모드로 연동이 가능합니다.
- 빌링결제 연동 매뉴얼 : https://developers.portone.io/docs/ko/auth/guide-1/bill/readme
- API 문서 : https://api.iamport.kr/
<결제창 호출 방식_빌링키 발급 방법>
javascript호출에 의해 띄워진 결제창을 통해 빌링키 발급을 진행하고,
발급된 빌링키는 /subscribe/payments/again API를 통해 결제요청하시면 됩니다.
빌링키 발급 요청시 임의로 "카드당 고유한 Unique ID"인 customer_uid를 보내주시면
포트원 내부적으로 1:1로 매칭해놓고 처리하게 됩니다.
<REST API_빌링키 발급 방법>
포트원 서버가 PG사의 API를 호출하여 빌링키를 발급받습니다.
<결제 요청 방법>
비인증방식의 결제는 크게 2가지가 있습니다.
1.
1회성 결제( ex. 키인결제)
2.
등록된 카드로 반복결제(ex. 정기결제)
'1번 방식'의 결제를 요청하는 API가 /subscribe/payments/onetime 입니다.
(KG이니시스, 카카오페이의 경우 1번(1회성)방식은 지원하지 않습니다.)
'2번 방식'의 빌링결제의 경우 포트원에서는 두가지 방식이 지원 됩니다.
1) 스케쥴러를 돌리시게 되면 필요하실 때 /subscribe/payments/again 을 요청주시면 되고,
2) 포트원에서 스케쥴러를 돌려주길 원하시면 /subscribe/payment/schedule로 스케쥴을 등록해주시면 됩니다.
schedule방식은 이미 최초에 사용자로부터 카드정보를 받아 빌링키를 발급해놓고(이것을 customer_uid에 매칭시켜놓고)
결제가 필요할 때 마다 customer_uid만 활용하는 방식으로,
최초에 /subscribe/customers/{customer_uid} POST로 한 번 등록해두시면 schedule unschedule을 사용자 액션없이 자유롭게 처리하실 수 있습니다.
- 최초 카드정보 등록으로 빌링키 발급 및 발급된 빌링키에 customer_uid로 1:1대응 후 포트원 내 저장
- 결제일자가 확정되는 시점에 schedule API로 일정 / 금액 / 결제할 customer_uid 등 지정
- 해당 시각에 처리가 완료되면 성공/실패 여부를 webhook(Notification URL로 보내드립니다.) 으로 POST요청
- 결제 성공이면 webhook에서 크레딧 증가 후 다음 schedule등록 API추가(실패면 다음날로 다시 등록) 날짜는 서비스 특성에 따라 다소 달라질 것 같기는 합니다만 날짜 문제를 없애기 위해 +N day 식으로 처리를 하고 있습니다.
<참고 - again api와 schedule api 장단점>
schedule api는 again api를 가맹점 대신에 포트원이 대신 수행해주고 결제 결과를 가맹점측에 웹훅으로 알려주는 API 입니다.
결제 결과는 [포트원 관리자콘] → [결제연동] → [결제알림(Webhook) 관리] - Endpoint URL 설정에 작성하신 Notification URL을 통해 웹훅을 보내 드리기 때문에 정기결제를 구현함에 있어 그 로직이나 과정이 복잡하지 않고,
정해진 일자에 단순하게 결제가 이루어지기만 하면 될 경우 schedule API를 쓰셔서 웹훅으로 받은 결제 결과의 실패/성공에 따른 처리만 하시면 됩니다.
반면, 가맹점의 정기결제 서비스 로직 전/후에 수행해야하는 특별한 로직이 있거나 정기결제가 이루어지는 과정을 자유롭게 커스터마이징 하고 싶으시다면 구현하신것 처럼 cronjob을 직접 수행하여 again api 를 사용하셔도 무방합니다.
즉, 가맹점의 정기결제 로직이 복잡하지 않다면 schdule api를 사용하시길 권장드립니다.
<참고 - 포트원을 통해 비인증결제(빌링결제) 서비스 이용중인 가맹점>