1. 시작하면서
•
KEY 정보를 확인했다면, 이제 본격적으로 연동을 준비할 수 있습니다.
•
페이플 API를 통해 파트너는 서비스 특성에 맞춘 결제수단과 결제방식을 구현할 수 있습니다.
•
퀵가이드에서는 일반적인 온라인 쇼핑몰에서 사용할 수 있는 일회성 간편결제를 연동하는 방법을 설명합니다.
일회성 간편결제창 미리보기
2. 프로세스 개요
일회성 간편결제의 결제 프로세스는 다음과 같이 진행됩니다.
3. 결제
3-1. 구매버튼 클릭
고객 결제페이지(Web)
•
고객이 파트너의 쇼핑몰에서 1,000원짜리 '티셔츠' 구매를 결정했습니다.
3-2. 파트너 인증
파트너 서버
•
고객이 구매버튼을 누르면 파트너는 요청을 할 수 있는 사전 준비 단계인 파트너 인증 프로세스를 진행합니다.
Request Parameters
기본 보기
Search
Request sample
•
Header 정보
/*
* Request HTTP URL
* TEST : https://democpay.payple.kr/php/auth.php
* REAL : https://cpay.payple.kr/php/auth.php
*/
Request URL: "https://democpay.payple.kr/php/auth.php"
HTTP Method: POST
Content-Type: application/json
Cache-Control: no-cache
Referer: "https://파트너사 도메인"
/* ※ Referer 설정 방법
* TEST : referer에는 테스트 결제창을 띄우는 도메인을 넣어주셔야합니다.
* 결제창을 띄울 도메인과 referer값이 다르면 [AUTH0007] 응답이 발생합니다.
* REAL : referer에는 파트너사 도메인으로 등록된 도메인을 넣어주셔야합니다.
* 다른 도메인을 넣으시면 [AUTH0004] 응답이 발생합니다.
* 또한, TEST에서와 마찬가지로 결제창을 띄우는 도메인과 같아야 합니다.
*/
JSON
복사
Referer에 '결제창을 띄우는 도메인'과 다른 도메인을 넣어서 보내실 경우, 결제창 호출이 차단 (AUTH0007 응답발생) 될 수 있으니 유의해주시기 바랍니다.
[AUTH0007]에 대한 설명을 이곳
에서 확인해보세요.
•
Body(Payload) 값
{
"cst_id": "test",
"custKey": "abcd1234567890"
}
JSON
복사
PHP 샘플코드
JAVA 샘플코드
NODE 샘플코드
Response Parameters
•
파트너 인증이 성공하면 페이플에서 파트너에 다음과 같은 성공 리턴을 드립니다.
기본 보기
Search
Response sample
{
"server_name": "요청 URL",
"result": "결과확인",
"result_msg": "결과 메시지",
"cst_id": "파트너사 아이디",
"custKey": "파트너사 키",
"AuthKey": "파트너사 인증토큰",
"PCD_PAY_HOST": "요청 도메인, (예: https://democpay.payple.kr)",
"PCD_PAY_URL": "요청 URL, (예: /auth.php)",
"return_url": "요청 URL (PCD_PAY_HOST + PCD_PAY_URL)"
}
JSON
복사
실패 리턴 (result = error)을 받으신 경우,
result_msg 의 응답코드를 확인하고 잘못된 부분을 수정합니다.
응답코드 리스트는 이 곳
에서 확인하실 수 있습니다.
3-3. 결제요청
파트너 결제페이지(Web)
•
파트너 인증 완료 후 결제창을 호출할 수 있는 스크립트를 추가하여 페이플에 요청합니다.
<!-- Payple JavaScript 호출. (테스트/운영 선택) -->
<script src="https://democpay.payple.kr/js/cpay.payple.1.0.1.js">< /script> <!-- 테스트 -->
<script src="https://cpay.payple.kr/js/cpay.payple.1.0.1.js">< /script> <!-- 운영 -->
PHP
복사
페이플 결제창 스크립트 추가
파트너 인증시 받은 AuthKey와 return_url Parameter 값을
각각 PCD_AUTH_KEY와PCD_PAY_URL에 추가하여 요청해주세요.
파트너 인증요청 후 결제는 30분이내로 진행해주시기 바랍니다.
파트너 인증 후 Response 받은 AuthKey 값은
고정값이 아니므로 저장해놓고 계속해서 사용하면 안됩니다.
+ 한 번의 파트너 인증과 하나의 요청이 매칭되어야 합니다.
즉 한번의 파트너 인증으로 받은 AuthKey 값을 여러 요청에 사용하면 안됩니다.
PCD_PAY_OID Parameter는 거래의 고유식별번호입니다.
요청시마다 유니크하게 새로 지정해 주세요.
PCD_PAY_OID 가 중복되면 처음 처리완료된 거래보다
나중에 들어온 거래요청건은 중복시도로 판단되어 거절됩니다.
→ 이러한 이유로, 파트너사에서 유니크하게 주문번호를 지정할 수 없을 경우에는
주문번호는 미지정하는 것을 권장하고 있습니다.
※ 파트너가 주문번호를 미지정 시, 페이플에서는 임의의 주문번호를 생성하여 리턴하여 드립니다.
Request Parameters
Show All
Search
PHP 샘플코드
JAVA 샘플코드
NODE 샘플코드
3-4. 결제 진행
고객 결제창
•
페이플에서 결제창을 고객의 브라우저에 호출시킵니다.
•
고객은 결제창에서 결제정보를 입력하여 결제를 완료합니다.
3-5. 결제 결과
페이플 서버
•
페이플에서 고객의 결제창을 종료시킵니다.
•
PCD_RST_URL로 고객의 브라우저를 리다이렉트(Redirect) 처리합니다.
◦
callbackFunction으로 결제결과를 수신할 경우, 콜백함수로 결제결과가 반환되며
PCD_RST_URL로 고객의 브라우저를 리다이렉트(Redirect) 처리합니다.
Response Parameters
•
파트너로 결과 리턴(Response)은 다음과 같이 진행됩니다.
Show All
Search
•
callbackFunction 을 사용한다면 PCD_RST_URL 을 대체하여 결과를 반환합니다.
•
- 페이플에서는 결과 수신실패 누락을 방지하기 위해 Webhook URL 등록을 권장합니다.
- 테스트 서버에서는 별도의 계정을 발급받지 않는 한 Webhook URL 등록 및 테스트가 불가합니다.
- 테스트 서버에서 Webhook URL을 테스트하기 위해서 help@payple.kr 로 연락주시면 파트너 전용 테스트 계정을 발급하여 드립니다.
- Webhook URL 등록 없이 테스트하시려면 PCD_RST_URL 로 수신받은 Response 데이터로 결과를 처리합니다.
3-6. 결과 처리
파트너 서버
파트너에서 페이플에서 받은 Response 데이터로 결과를 처리합니다.
•
PCD_PAY_RST = success, PCD_PAY_CODE = "0000"이 포함될 경우 요청성공으로 판단합니다.
•
PCD_PAY_RST = error 일 경우 요청실패로 판단합니다.
•
PCD_PAY_RST = close 일 경우 요청실패로 판단합니다.
고객이 결제창을 결제 중 종료할 경우 리턴됩니다.
3-6-1. 요청이 성공했을 경우(success)
•
데이터 위변조 여부를 판별하기 위해 리턴받은 PCD_PAY_TOTAL 값과 요청했던 값을 대조하여 이상이 없음을 확인합니다.
•
리턴받은 거래 고유식별번호인 PCD_PAY_OID를 확인하여 요청했던 거래 정보와 매칭시킵니다.
•
거래를 요청했던 고객에게 약정된 서비스를 제공합니다.
3-6-2. 요청이 실패했을 경우(error / close)
•
PCD_PAY_CODE 와 PCD_PAY_MSG 로 원인을 파악하여 대응합니다.
•
응답코드 리스트
를 확인해보세요.
3-7 결제요청 재컨펌 (PCD_PAY_WORK: CERT)
파트너 서버
최종 결제요청을 위해 REST API를 통해 결제를 요청할 수 있습니다.
PAY(즉시결제) 방식과 달리 CERT(결제요청 재컨펌) 방식에서는 최종 승인 요청을 별도로 보내야합니다.
결제창을 호출하여 결제를 하는 경우, 결제요청 방식 파라미터인 PCD_PAY_WORK를
CERT(파트너 확인 후 결제)와 PAY(브라우저에서 즉시결제) 중 하나로 지정하여야 합니다.
결제요청 재컨펌(CERT) 방식은 아래와 같은 프로세스로 결제가 진행됩니다.
•
1 ~ 4 : PAY와 마찬가지로 결제창을 브라우저에 호출하여 결제요청을 보내고 결과를 받습니다.
이때, 응답결과를 받아도 아직 결제는 완료되지 않습니다.
다음 단계까지 모두 완료해야, 즉 결제 최종승인요청을 보내야 결제가 완료됩니다.
•
5 ~ 8 : 인증결과 및 결제준비완료 리턴을 받은 후, 페이플 서버로 결제 최종승인 요청을 보내고
결과를 받습니다. 이때, 결제결과가 'success'면 결제 완료로 판단합니다.
결제요청 재컨펌(CERT)에 해당하는 부분은 5 ~ 8 입니다.
결제요청 재컨펌(CERT) 결제 프로세스
Request Parameters
Show All
Search
Request sample
•
Header 정보
/*
* Request HTTP URL
* ※결제요청 후 리턴받은 PCD_PAY_COFURL로 설정해주세요.
* TEST : https://democpay.payple.kr/php/PayCardConfirmAct.php?ACT_=PAYM
* REAL : https://cpay.payple.kr/php/PayCardConfirmAct.php?ACT_=PAYM
*/
Request URL: "https://democpay.payple.kr/php/PayCardConfirmAct.php?ACT_=PAYM"
HTTP Method: POST
Content-Type: application/json
Cache-Control: no-cache
Referer: http://localhost:8080
JSON
복사
•
Body(Payload) 값
{
"PCD_CST_ID":"test",
"PCD_CUST_KEY": "abcd1234567890",
"PCD_AUTH_KEY": "결제요청 후 리턴받은 PCD_AUTH_KEY",
"PCD_PAY_REQKEY": "결제요청 후 리턴받은 PCD_PAY_REQKEY",
"PCD_PAYER_ID": "결제요청 후 리턴받은 PCD_PAYER_ID"
}
JSON
복사
Response Parameters
Show All
Search
•
카드결제(CERT) Response Sample
Response sample
{
"PCD_PAY_RST": "success"
"PCD_PAY_CODE": "PCCF0000"
"PCD_PAY_MSG": "카드결제완료"
"PCD_PAY_REQKEY": "d2NtOFExTVF..."
"PCD_PAY_OID": "test123456789"
"PCD_PAY_TYPE": "card"
"PCD_PAYER_ID": "YWpJQXZ..."
"PCD_PAYER_NO": "1234"
"PCD_PAYER_NAME": "홍길동"
"PCD_PAYER_HP": "01012345678"
"PCD_PAYER_EMAIL": "test@payple.kr"
"PCD_PAY_GOODS": "테스트 상품명"
"PCD_PAY_AMOUNT": "100"
"PCD_PAY_AMOUNT_REAL": "100"
"PCD_PAY_TOTAL": "100"
"PCD_PAY_TAXTOTAL": "0"
"PCD_PAY_ISTAX": "Y"
"PCD_PAY_CARDNAME": "NH"
"PCD_PAY_CARDNUM": "2121-****-****-2031"
"PCD_PAY_CARDTRADENUM": "202110201407049643824400"
"PCD_PAY_CARDAUTHNO": "12345678"
"PCD_PAY_CARDRECEIPT": "https://www.danalpay.com/..."
"PCD_PAY_TIME": "20211020140706"
"PCD_SIMPLE_FLAG": "N"
}
JSON
복사
4. 취소
고객이 결제 후 변심하여 취소를 원하고 있습니다.
파트너는 페이플에 취소를 요청하여 처리합니다.
4-1. 취소 프로세스
4-2. 파트너 인증
파트너 서버
Request Parameters
기본 보기
Search
Request sample
•
Header 정보
/*
* Request HTTP URL
* TEST : https://democpay.payple.kr/php/auth.php
* REAL : https://cpay.payple.kr/php/auth.php
*/
Request URL: "https://democpay.payple.kr/php/auth.php"
HTTP Method: POST
Content-Type: application/json
Cache-Control: no-cache
Referer: https://파트너사 도메인
/* ※ Referer 설정 방법
* REAL : referer에는 파트너사 도메인으로 등록된 도메인을 넣어주셔야합니다.
* 다른 도메인을 넣으시면 [AUTH0004] 응답이 발생합니다.
*/
JSON
복사
•
Body(Payload) 값
{
"cst_id": "test",
"custKey": "abcd1234567890",
"PCD_PAYCANCEL_FLAG": "Y"
}
JSON
복사
PHP 샘플코드
JAVA 샘플코드
NODE 샘플코드
Response Parameters
•
파트너 인증이 성공하면 페이플에서 파트너에 다음과 같은 성공 리턴을 드립니다.
기본 보기
Search
Response sample
{
"server_name": "요청 URL",
"result": "결과확인",
"result_msg": "결과 메시지",
"cst_id": "파트너사 아이디",
"custKey": "파트너사 키",
"AuthKey": "파트너사 인증토큰",
"PCD_PAY_HOST": "요청 도메인, (예: https://democpay.payple.kr)",
"PCD_PAY_URL": "요청 URL, (예: /auth.php)",
"return_url": "요청 URL (PCD_PAY_HOST + PCD_PAY_URL)"
}
JSON
복사
실패 리턴 (result = error)을 받으신 경우,
result_msg 의 응답코드를 확인하고 잘못된 부분을 수정합니다.
응답코드 리스트는 이 곳
에서 확인하실 수 있습니다.
4-3. 결제 취소 요청
파트너 서버
•
파트너는 파트너 인증 완료 후 취소 요청을 수행합니다.
•
이때 파트너 인증 후 Response 받은 cst_id, custKey, AuthKey 값을
각각 PCD_CST_ID, PCD_CUST_KEY, PCD_AUTH_KEY 에 넣어 요청을 보내야 합니다.
파트너 인증 후 Response 받은 cst_id, custKey,AuthKey 값은
고정값이 아니므로 저장해놓고 계속해서 사용하면 안됩니다.
+ 한 번의 파트너 인증과 하나의 요청이 매칭되어야 합니다.
즉, 한 번의 파트너 인증으로 받은 cst_id, custKey,AuthKey 값을
여러 요청에 사용하면 안됩니다.
파트너 인증요청 후 API 요청은 30분이내로 진행해주시기 바랍니다.
Request Parameters
기본 보기
Search
Request sample
•
Header 정보
/*
* 결제취소 요청
* Request HTTP URL
* ※파트너 인증 후 리턴받은 return_url로 설정해주세요.
* (return_url = PCD_PAY_HOST + PCD_PAY_URL)
* TEST : https://democpay.payple.kr/(파트너 인증 후 리턴 받은 요청 URL(PCD_PAY_URL))
* REAL : https://cpay.payple.kr/(파트너 인증 후 리턴 받은 요청 URL(PCD_PAY_URL))
*/
Request URL: "https://democpay.payple.kr/(파트너 인증후 리턴받은 PCD_PAY_URL)"
HTTP Method: POST
Content-Type: application/json
Cache-Control: no-cache
Referer: http://localhost:8080
JSON
복사
•
Body(Payload) 값
{
"PCD_CST_ID" : "파트너 인증 후 리턴받은 cst_id",
"PCD_CUST_KEY" : "파트너 인증 후 리턴받은 custKey",
"PCD_AUTH_KEY" : "파트너 인증 후 리턴받은 AuthKey",
"PCD_REFUND_KEY" : "a41ce010e...",
"PCD_PAYCANCEL_FLAG": "Y",
"PCD_PAY_OID": "test099942200156938",
"PCD_PAY_DATE": "20200320",
"PCD_REFUND_TOTAL": "1000"
}
JSON
복사
Response Parameters
기본 보기
Search
•
카드 취소 응답 예시
Response sample
{
"PCD_PAY_RST": "success",
"PCD_PAY_CODE": "PAYC0000",
"PCD_PAY_MSG": "승인취소성공",
"PCD_PAY_OID": "test201804000001",
"PCD_PAY_TYPE": "card",
"PCD_PAYER_ID": "d0to...",
"PCD_PAY_GOODS": "상품1",
"PCD_REFUND_TOTAL": "100",
"PCD_REFUND_TAXTOTAL": "10",
"PCD_PAY_TIME": "20211020140706",
"PCD_PAY_CARDTRADENUM": "20221...",
"PCD_PAY_CARDRECEIPT": "https://..."
}
JSON
복사
•
계좌이체 취소 응답 예시
Response sample
{
"PCD_PAY_RST": "success",
"PCD_PAY_CODE": "PAYC0000",
"PCD_PAY_MSG": "환불성공",
"PCD_PAY_OID": "test201804000001",
"PCD_PAY_TYPE": "transfer",
"PCD_PAYER_ID": "NS9qNTgzU2xRNH...",
"PCD_PAY_GOODS": "상품1",
"PCD_REFUND_TOTAL": "1000",
"PCD_REFUND_TAXTOTAL": "10",
"PCD_PAY_TIME": "20211020140706",
"PCD_TAXSAVE_RST": "0000",
"PCD_TAXSAVE_MSG": "현금영수증 발행취소 성공",
}
JSON
복사
PCD_PAY_RST = success, PCD_PAY_CODE = "0000"이 포함될 경우 요청성공으로 판단합니다.
PCD_PAY_RST = error 일 경우 요청실패로 판단합니다.
실패 리턴(PCD_PAY_RST = error )을 받으신 경우,
PCD_PAY_MSG 의 응답코드를 확인하고 잘못된 부분을 수정합니다.
응답코드 리스트는 이 곳
에서 확인하실 수 있습니다.
5. 마무리
•
일회성 간편결제의 결제부터 취소까지의 연동작업을 완료하였습니다! 축하드립니다!