Li
Delete
Are you sure you want to delete this?
EasyPayModel
-
Date
-
20201014
-
Target
-
c_004
-
Title
-
[간편결제 연동 기초 자료] toss, kakaopay, kginicis, paypal, naverpay
-
Contents
-
오프라인에서 물건을 사면 대개 카드를 사용한다. 사는 사람과 파는 사람이 이 거래에 관여한다. 현금거래와 달리 카드의 경우 사는 사람과 파는 사람 사이에 단말기를 통한 상호 인증과정이 필요하다. 소비자의 카드를 판매자가 받아 단말기로 인증 받아야만 거래가 성사된다.
이러한 카드 거래 과정을 인터넷 온라인상으로 옮기려면 어떻게 해야할까? 온라인 거래는 디지탈 프레임워크 혹은 어플리케이션이 단말기를 대신하게 된다. 이 어플리케이션을 개발해 판매자와 소비자를 중개하는 회사를 Payment Gateway 회사라고 한다. 줄여서 PG사라고 한다. PG사 마다 자신들이 개발한 어플리케이션 소스코드는 서로 다르다. 아마 전체적인 흐름과 구조는 유사할 것이다. 세계적인 PG사로는 엘론머스크가 창업에 관여한 페이팔이 있다. 한국에는 KG이니시스, 올더게이트, 네이버페이, 토스, 페이코 등이 있다. 이들 회사마다 비슷한 구성에도 불구하고 실제 코딩은 모두 다르다.
프로그래머에게 이런 코드가 필요해라고 주문하면 100명의 프로그래머가 100가지 프로그램을 짜온다는 이야기가 회자될 만큼 프로그래밍은 프로그래머 개인의 주관적 관점과 실력이 개입된다. 그로 인해 각 회사의 어플리케이션은 서로 다르다. 이 서로 다른 어플리케이션을 자사의 쇼핑몰에 연동하여 사용해야 한다. PG사의 수 만큼 다양한 어플리케이션을 사용해 쇼핑몰에 연동하려면 이 모두를 이해하는 개발자가 필요하다. 쇼핑몰을 만드는 프로그램 언어가 다르고 이를 만드는 개발자도 모두가 서로 다른 배경과 실력으로 인해 개발에는 꽤 많은 시간이 걸릴 수 밖에 없다. 그러다보니 최근에 이러한 진입장벽을 뛰어 넘게 하는 다양한 서비스가 시장에 소개되고 있다.
전지전능한 개발자가 아닌 다음에댜 결제 연동은 결코 쉬운 일이 아니다. 진입장벽이 높은 것이다.
0과 1을 토대로 한 디지털프레임의 소심한 특징을 완벽하게 맞추어주려면 머리에 쥐 나는 경우가 다반사다. 사실 풀어내놓고 보면 너무도 정확하게 들어맞는 구조였다는 것을 알게 되 허탈하다. 하지만 실행에 이르는 과정이 지난하다는 점은 그 누구도 부인하지 못할 것이다. 고생스러운 만큼 보람있다. 자 이제 그 길로 가보자.
먼저 KG이니시스의 신용카드 결제 시스템 연동으로 부터 시작하기로 한다. 그 다음으로 Toss와 KakaoPay그리고 PayPal등을 살펴보자.
네이버페이
개발 https://developer.pay.naver.com/
가맹점관리자 https://admin.pay.naver.com/home?showPopup=interlock
KG이니시스.
카카오페이
개발 https://developers.kakao.com,
카카오 가맹점 관리자 페이지 : https://pg.kakao.com
일반문의 pg@kakaocorp.com, 기술 문의 진평수님 kakaopay_pg@kakaocorp.com
토스
개발https://tossdev.github.io/index.html,
가맹점관리자. https://merchant.pay.toss.im/dashboards,
KG이니시스
개발 https://manual.inicis.com
가맹점관리자, https://iniweb.inicis.com/nxaview/index.jsp
기술지원 문의 ts@kggroup.co.kr
KG 이니시스는 MID외 알아야 할 key가 세 가지 있다.
1.웹결제 signkey ZTNDcStvMXZrOWhHaTdqZldsL1JyZz09
2.모바일금액위변조 hashykey
3.INAPI key
간편결제 PC 다이렉트 호출 옵션
* KPAY : gopaymethod = kpay
* PAYCO : gopaymethod = onlypayco , acceptmethod = cardonly
* 삼성페이 : gopaymethod = onlyssp , acceptmethod = cardonly
* LPAY : gopaymethod = onlylpay , acceptmethod = cardonly
* SSG페이 : gopaymethod = onlyssgcard , acceptmethod = cardonly
* 카카오페이 : gopaymethod = onlykakaopay , acceptmethod = cardonly
* 토스 : gopaymethod = onlytosspay , acceptmethod = cardonly
* 네이버페이 : gopaymethod = onlynaverpay , acceptmethod = cardonly
* CHAI pay : gopaymethod = onlychaipay , acceptmethod = cardonly
* 간편결제 다이렉트 호출 시 '신용카드 전용화면' 계약이 되어있어야 합니다.
* 당사 테스트 MID로 부분취소 진행 시 정책상 사유로 부분취소 진행 되지 않습니다.
실 MID로 테스트 부타드립니다.
간편결제 모바일 다이렉트 호출 옵션
간편결제 다이렉트 옵션×
1. 간편결제는 계약 시 통합범용창에 자동 노출됩니다.
* KPAY: P_RESERVED = d_kpay=Y
* PAYCO: P_RESERVED = d_payco=Y
* 삼성페이: P_RESERVED = d_samsungpay=Y
* LPAY: P_RESERVED = d_lpay=Y
* SSG페이: P_RESERVED = d_ssgpay=Y
* 카카오페이: P_RESERVED = d_kakaopay=Y
* 토스: P_RESERVED = d_tosspay=Y
* 네이버페이: P_RESERVED = d_npay=Y
* CHAI pay: P_RESERVED = d_chaipay=Y
payco 직접 연동시
https://www.nhn-commerce.com/echost/power/add/payment/payco-intro.gd
네이버페이, 토스, 카카오페이 등의 간편결제라 불리는 넷결제 방식을 데스크탑에 연동시키기 위해 2주간 삽질한 결과 토스와 카카오페이를 아임포트를 통하지 않고 직접 연동하는 방법을 찾았다.
네이버페이는 주문형이냐 결제형이냐의 문제가 해결되지 않아 아직 미결이긴 하다. 하지만 연동 방법은 쉬운 편이다.
토스는 curl 로 결제요청하면 받게되는 응답에서 필요한 부분을 리다이렉트하면 결제가 연동되는 방식이다. 요청 코드는 Content-type:json이다.
카카오페이 역시 curl로 결제준비하면 받게되는 응답에서 필요한 부분을 리다이렉트하면 결제가 연동되는 방식인데 요청 코드는 Content-type:pplication/x-www-form-urlencoded;charset=utf-8 을 사용한다.
둘 다 curl을 예시로 보여주므로 자신이 사용하는 프로그래밍 언어에 맞추어 코드를 변환하여 사용하면 된다. 이 부분이 어려운 부분이다. 그 전에 curl예시에 제시된 "Authorization: KakaoAK {APP_ADMIN_KEY}" 와 같은 내용은 KakaoAK {APP_ADMIN_KEY} 부분을 어떻게 입력해야할지가 내 경우 쉽지 않았다. 한 칸을 띠고 중괄호, left brace 열고 APP_ADMIN_KEY 쓰고 중괄호, right brace 닫고 인데 이게 이해가 되지 않는 부분이었다. 질의를 통해 kakaoAK jdkslahfklas-키값-28794379 이라고 쓰면 되는 식이었다. 초행길의 경우 바로 옆에 목적지가 있어도 잘 모르는 경우와 비슷하다. 여기에 대한 배려까지 있으면 너무 친절한건가?
이건 시작이고..
내 경우 C# .NET을 사용하므로 toss와 kakaoPay 이 둘을 변환시키기 위해 여러 과정을 거쳤다. 우선 구글링으로 curl to C#을 통해 웹상에서 curl을 C# .NET으로 변환해주는 사이트를 찾았다.
https://reqbin.com/req/csharp/c-w7oitglz/convert-curl-to-http-request 가 큰 도움이 됐다.
toss의 경우 Content-Type: application/json 이고 kakaoPay는 application/x-www-form-urlencoded;charset=utf-8 이다.
따라서 이에 따라 위 변환사이트에서 변환하여 사용할 때 toss를 먼저 했었는데
toss의 경우
wrong: ""orderNo"":""${orderNo}""
right: ""id"": """+ idValue + @"""
와 같이 코드 형식을 맞추는 것이 힘들었다.
반면 kakaopay는
변환 Request 아래부분
curl -v -X POST "https://kapi.kakao.com/v1/payment/ready" \
-H "Authorization: KakaoAK {APP_ADMIN_KEY}" \
--data-urlencode "cid=TC0ONETIME" \
--data-urlencode "partner_order_id=partner_order_id" \
후략
을 변환사이트 https://reqbin.com/req/csharp/c-w7oitglz/convert-curl-to-http-request 에 입력하고
curl -v -X POST "https://kapi.kakao.com/v1/payment/ready" \
-H "Authorization: KakaoAK {APP_ADMIN_KEY}" \
-d "cid=TC0ONETIME" \
-d "partner_order_id=partner_order_id" \
로 코딩을 정리하는 작업 후에야 사용 가능한 코드결과가 도출되었다.
글로 미처 기록하지 못한 지난한 부분이 사이사이 있다.
그리고 나서 아임포트의 자료를 보았다. 아임포트에 KG이니시스가 기본 PG사로 등록되어 있다. 아임포트 시스템 설정에 들어가면 내정보에 가맹점 식별코드 REST API키와 비번이 있다.
KG이니시스에 들어갈 때 사용하는 PG상점 아이디, MID 라고도 표기되는 내용이 아임포트의 PG설정(일반결제 및 정기결제)에 기록되어 있다.
결국, 간편결제를 위해 KG이니시스와 아임포트의 정책 그리고 간편결제의 경우 네이버페이는 KG이니시스를 통해 서비스 되지 않는다고 하니까 게다가 결제형과 주문형이라고 하는 까다로운 절차가 네이버페이에는 있어서 신청 자체를 세 번 째 하는 짜증나는 상황이다. 토스, 카카오페이, 페이코 등을 KG이니시스에서 가능하다. 제휴가 되어 있다는 것이다.
이러한 배경을 이해하였었더라면 애초에 아임포트를 사용하지 않는 것이 편했을 상황이다. 특히 카카오 페이는. 하지만 페이코를 해보면 어떤 것이 편한지 알 수 있을 것이다.
아임포트와 카카오 페이에 각각의 상황을 메일로 문의하였다. 아임포트는 admin_key 대신 아임포트 메뉴얼대로 진행하거나 카카오페이를 통해 해결하라고 한다. 카카오페이는 호스팅사 변경이 가능하며 그를 위해 신청서와 새로 어플리케이션을 만들고 네이티브 앱키를 발송해달라는 메일이 왔다.
오늘은 여기까지.