개발 전 확인이 필요한 공통적인 가이드
| API 구분 | API 리소스 경로 |
|---|---|
| 결제 요청 | POST v1.0/payments/request |
| 결제 승인 | POST v1.0/payments/confirm |
| 결제 취소 | POST v1.0/payments/cancel |
| 부분 취소 | POST v1.0/payments/cancel/partial |
| 거래 확인서 | GET v1.0/receipt/info/{tid} |
| 결제 거래정보 조회 | GET v1.0/payments/confirm-info |
| 카드사 목록 조회 | GET v1.0/payments/info/card-list |
| PG약관 조회 | GET v1.0/payments/info/terms-info-list |
*고객사 API의 미디어 타입은 “content-type application/json” 입니다.
표준 RESTful-API 통신 방식을 따르며, HTTP 1.1 Specification을 준수합니다.
HTTP Method, Resource URL을 요청하면, JSON 데이터를 응답합니다.
고객사 결제 요청 용 API 입니다. 최소 승인 금액은 일반카드, 전용페이카드 100원, 계좌이체 1원, 제로페이 1원이며, 해당 금액 미만의 결제 요청은 처리되지 않습니다. API 요청
| URL | HTTP 메서드 | HTTP 헤더 | 키 유형 |
|---|---|---|---|
| v1.0/payments/request | POST | Authorization: SPGKEY {API Key} | payment |
| 파라미터 | 필수 여부 | 자료형 | 크기 | 설명 |
|---|---|---|---|---|
| 공통필수영역 | ||||
| pgcode | 필수 | string | 10 | 결제수단 코드(5. 결제수단 & 오류코드 참조) |
| client_id | 필수 | string | 10 | 고객사 아이디 |
| user_id | 필수 | string | 50 | 고객사 사용자(회원) 아이디(이메일, 영문 및 숫자 가능) |
| user_name | 필수 | string | 20 | 고객사 사용자(회원) 명 |
| order_no | 필수 | string | 50 | 고객사 주문번호 |
| pay_type | 필수 | number | 결제 유형 (1: 단일 결제, 2: 복합 일반, 3: 복합 전용) | |
| device_type | 필수 | number | (결제 요청)기기 유형 (1: 모바일, 2: PC) | |
| amount | 필수 | number | (결제 상품)금액 *(결제 요청) 컵반환 보증금이 있는 경우 상품금액에 더하여 호출합니다. 예) 총금액 10,000원, 컵반환 보증금 300원 -> amount : 10,300원으로 설정 *(결제 요청) 선불전자결제수단 금액이 있는 경우 상품금액에서 제외하여 호출합니다. 예) 총금액 10,000원, 선불전자결제 : 2,000원 -> amount : 8,000원으로 설정 |
|
| product_name | 필수 | string | 50 | (결제)상품 명 |
| return_url | 필수 | string | 255 | 결제 인증 결과 수신 및 결제 승인 API를 호출하는 고객사 URL |
| cancel_url | 필수 | string | 255 | 결제 취소 시 이동하는 고객사 URL |
| fail_url | 필수 | string | 255 | 결제 실패 시 이동하는 고객사 URL |
| param_ispt_hash | 필수 | string | 1000 | 파라메터 검증 해시 *고객사 요청 파라미터 검증을 위한 sha256 hash 값을 의미하며, "sha256(client_id + user_id + order_no + pay_type + amount + payment API Key)" 조합으로 생성된다. |
| 공통부가영역 | ||||
| user_ci | 선택적 필수 | string | 88 | 고객사 사용자 CI(Connecting information) *제로페이 최초 사용자를 위한 본인인증 시, 고객사에서 전달한 user_ci, mobile_no와 휴대폰 본인인증 결과가 다를 경우, 제로페이 회원 등록이 불가합니다. *지역화폐 단일 결제 요청 시 필수 값 입니다. *결제수단이 shpay일 때 필수 값 입니다. *핏콜라보 결제 요청 시 필수 값 입니다. |
| taxfree_amount | number | 비과세 금액 *(결제 요청)금액이 모두 비과세액인 경우, amount, taxfree_amount 모두 동일한 값을 설정하여야 합니다. 예) (결제 요청)금액 1,000원 모두 비과세 금액인 경우 → amount, taxfree_amount 모두 1,000원 설정 *(결제 요청)금액 중 일부가 비과세 금액인 경우, 해당 금액만 taxfree_amount에 설정하여야 합니다. 예) (결제 요청)금액 1,000원중 비과세 금액이 100원인 경우 → amount 1,000원, taxfree_amount 100원 설정 |
||
| tax_amount | number | 부가세 금액 *요청 파라미터 값이 없으면, ((amount - taxfree_amount - cup_return_deposit) / 11) 계산식을 적용, 소수점 이하 반올림으로 자동 계산합니다. |
||
| cup_return_deposit | number | 컵반환보증금 | ||
| card_cpny_cd | 선택적 필수 | string | 카드사 코드 * 6.1 카드사 코드 참조 * 일반 신용카드 결제 시 고객사 화면에서 카드사를 선택하여 결제 요청시 필수 값 입니다. |
|
| install_month | string | 2 | 할부 개월수(00~12) * 다이렉트 결제 요청시 필수 값 입니다. *핏콜라보 결제 요청 시 필수 값 입니다. |
|
| inst_type | 선택적 필수 | number | 할부 타입 1: 일반, 2: 무이자, 3: 청구할인5%일반 4: 청구할인5%무이자 5: 청구할인7%일반 6: 청구할인7%무이자 7: 청구할인10%일반 8: 청구할인 10%무이자 *핏콜라보 결제 요청 시 필수 값 입니다. |
|
| email_flag | string | 1 | (결제)메일 수신 여부 (Y: 사용, N: 미사용) *기본 값은 "N: 미사용" 입니다. |
|
| email_addr | string | 50 | (결제)메일 수신 주소 *email_flag 'Y'인 경우에만 사용합니다. |
|
| main_color | string | 6 | PG 결제 화면 메인 색상 코드 *기본값은 FFFFFF |
|
| point_color | string | 6 | PG 결제 화면 포인트 색상 코드 *기본값은 5379FF |
|
| custom_parameter | string | 1000 | 고객사 전용 값을 의미하며, 암호화를 권장합니다. *결제 요청 시 고객사에서 필요한 고객, 주문, 기타 등 정보를 전달하면, 그 값 그대로 고객사 return_url로 반환합니다. |
|
| mobile_no | 선택적 필수 | string | 11 | 사용자 휴대폰 번호 *지역화폐 단일 결제 요청 시 필수 값 입니다. *가상계좌일 때 선택 값 입니다. |
| card_purpost_type | 선택적 필수 | number | 카드 용도 유형 (1: 일반 신용카드, 2: 프로모션 일반 신용카드, 3: 비인증 신용카드, 4: 환금성 신용카드) *기본값은 1 |
|
| app_return_url | 선택적 필수 | string | 100 | 일반 신용카드(ISP) 결제 이후 이동할 고객사 앱 스키마 정보 *모바일 앱의 일반 신용카드 결제 요청 시 필수 값 입니다. |
| app_cancel_url | 선택적 필수 | string | 100 | 일반 신용카드(ISP) 결제 진행 중단 시 이동할 고객사 앱 스키마 정보 *모바일 앱의 일반 신용카드 결제 요청 시 필수 값 입니다. |
◎ 일반 신용카드 단일 결제를 요청하는 경우
{
"pgcode": "card",
"client_id": "o2o",
"user_id": "test_01",
"user_name": "테스터01",
"order_no": "202108311259590001",
"pay_type”: 1, // 단일 결제
"device_type": 1,
"amount": 11000,
"product_name": "테스트 상품",
"return_url": "https://o2odev.shinhan.com/partner/pay/approval",
"cancel_url": "https://o2odev.shinhan.com/partner/pay/cancel",
"fail_url": "https://o2odev.shinhan.com/partner/pay/fail",
“param_ispt_hash”:”821b7bf742abfb49c8e535ee9a0801c4e6cefe4d49c9c8209b8c54d5077082f8"
"taxfree_amount": 0,
"tax_amount": 90,
"email_flag": "Y",
"email_addr": "bae1222@payletter.com",
"pay_hash": "dfhuoi892ashiozxui123…”,
"custom_parameter": "asdfoxuoy12uyisadouydfouayiouf…",
"card_purpost_type": 1, // 일반 신용카드는 필수 설정
"app_return_url": "scheme://path", // 모바일 앱 환경의 일반 신용카드는 필수 설정
"app_cancel_url": "scheme://path", // 모바일 앱 환경의 일반 신용카드는 필수 설정
“cup_return_deposit”: “100”, // 컵반환 보증금
“card_cpny_cd”: “S005”, // 고객사 화면에서 카드사를 선택하여 결제요청하는 경우 필수 설정
“prepay_amount”: 2000 // 선불전자지급수단을 사용할 경우 필수 설정
}
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
| redirect_url | string | 1000 | (결제용)웹 화면 *PG 웹 화면 접근 후 redirect_url token은 다시 사용할 수 없습니다. |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
HTTP 1.1 200 OK
{
"ret_code": 0,
"ret_msg": "OK",
"redirect_url": "https://devpayapispg.shinhan.com/pgsvc/pay?token=2021083110239001duf.." // (결제 인증용)웹 화면
}
HTTP 1.1 401 Unauthorized
{
"ret_code": 998,
"ret_msg": "token is missing or incorrect."
}
개인/법인용 통합결제창 결제 호출 용 API 입니다. 최소 승인 금액은 일반카드, 전용페이카드 100원, 계좌이체 1원이며, 해당 금액 미만의 결제 요청은 처리되지 않습니다.
| URL | HTTP 메서드 | HTTP 헤더 | 키 유형 |
|---|---|---|---|
| v1.0/payments/request | POST | Authorization: SPGKEY {API Key} | payment |
| 파라미터 | 필수 여부 | 자료형 | 크기 | 설명 |
|---|---|---|---|---|
| 공통(개인/법인)필수영역 | ||||
| pgcode | 필수 | string | 10 | 결제수단 코드(개인: selpay / 법인: bizselpay) |
| client_id | 필수 | string | 10 | 고객사 아이디 |
| user_id | 필수 | string | 50 | 고객사 사용자(회원) 아이디(이메일, 영문 및 숫자 가능) |
| user_name | 필수 | string | 20 | 고객사 사용자(회원) 명 |
| order_no | 필수 | string | 50 | 고객사 주문번호 |
| pay_type | 필수 | number | 결제 유형 (1: 단일 결제) | |
| device_type | 필수 | number | 기기 유형. 1: 모바일(개인), 2: PC(개인/법인) |
|
| amount | 필수 | number | 금액 *컵반환 보증금이 있는 경우 상품금액에 더하여 호출합니다. 예) 총금액 10,000원, 컵반환 보증금 300원 -> amount : 10,300원으로 설정 법인대출연계에 사용될 때는 일시지급일때는 총구매금액(100%), 잔금지급일때는 지원신청금액(70%) |
|
| product_name | 필수 | string | 50 | (결제)상품 명 |
| param_ispt_hash | 필수 | string | 1000 | 파라메터 검증 해시 *고객사 요청 파라미터 검증을 위한 sha256 hash 값을 의미하며, "sha256(client_id + user_id + order_no + pay_type + amount + payment API Key)" 조합으로 생성된다. |
| 법인대출연계요청영역 (법인대출연계시 필수) | ||||
| buyr_bizr_no | 선택적 필수 | string | 10 | 구매자 사업자 번호 |
| dpst_req_no | 선택적 필수 | string | 8 | 입금요청번호 |
| clnt_pay_clf_cd | 선택적 필수 | string | 6 | 결제 구분 SGLPAY: 일시지급(선수금없음) RMDPAY: 잔금지급(선수금대상) |
| req_amt | 선택적 필수 | number | 13 | 지원신청금액(원) 대출금액으로 기본 70% 신한 은행 여신 기준에 맞춰 천원 단위로 절사 처리 필요 (로직 제공, 금액이 안 맞는 경우 처리결과 ‘F’ 리턴, 고객부담금에 나머지 금액 추가) |
| chrg_amt | 선택적 필수 | number | 13 | 고객부담금액(원) |
| tot_tx_amt | 선택적 필수 | number | 13 | 총구매금액(원) |
| pay_amt | 선택적 필수 | number | 13 | 결제요청금액(원) 일시지급일때는 총구매금액(100%), 잔금지급일때는 지원신청금액(70%) |
| clnt_tx_clf_cd | 선택적 필수 | string | 6 | 거래 구분 (고객사거래구분코드) 고객사결제구분코드 (GNR: 일반거래 / IMPL: 전용거래) |
| cncl_yn | 선택적 필수 | string | 1 | 취소 여부 주문취소 건인 경우 취소 여부(‘Y’)와 PK정보(사업자 번호, 입금요청번호)만 전송 |
| clnt_tx_ymd | 선택적 필수 | string | 8 | 낙찰일 (고객사 거래일자) |
| seller_name | 선택적 필수 | string | 20 | 판매사명 플랫폼이 판매사인 경우 플랫폼명 오픈마켓 : 판매자 |
| email_addr | string | 50 | 고객이메일 고객의 이메일 주소입니다. 결제 결과를 알려줄 때 사용합니다 |
|
| mobile_no | string | 13 | 고객휴대폰번호 고객의 휴대폰 번호입니다. 가상계좌 입금 안내가 전송되는 번호 입니다. |
|
| 개인부가영역 | ||||
| taxfree_amount | number | 비과세 금액 *금액이 모두 비과세액인 경우, amount, taxfree_amount 모두 동일한 값을 설정하여야 합니다. 예) 금액 1,000원 모두 비과세 금액인 경우 → amount, taxfree_amount 모두 1,000원 설정 *금액 중 일부가 비과세 금액인 경우, 해당 금액만 taxfree_amount에 설정하여야 합니다. 예) (결제 요청)금액 1,000원중 비과세 금액이 100원인 경우 → amount 1,000원, taxfree_amount 100원 설정 |
||
| tax_amount | number | 부가세 금액 *요청 파라미터 값이 없으면, ((amount - taxfree_amount - cup_return_deposit) / 11) 계산식을 적용, 소수점 이하 반올림으로 자동 계산합니다. |
||
| cup_return_deposit | number | 컵반환보증금 | ||
| email_flag | string | 1 | (결제)메일 수신 여부 (Y: 사용, N: 미사용) *기본 값은 "N: 미사용" 입니다. |
|
| email_addr | string | 50 | (결제)메일 수신 주소 *email_flag 'Y'인 경우에만 사용합니다. |
|
| custom_parameter | string | 1000 | 고객사 전용 값을 의미하며, 암호화를 권장합니다. *결제 요청 시 고객사에서 필요한 고객, 주문, 기타 등 정보를 전달하면, 그 값 그대로 고객사 return_url로 반환합니다. |
|
| mobile_no | string | 11 | 사용자 휴대폰 번호 | |
| card_purpost_type | 선택적 필수 | number | 카드 용도 유형 (1: 일반 신용카드, 2: 프로모션 일반 신용카드, 3: 비인증 신용카드, 4: 환금성 신용카드) *기본값은 1 |
|
| 통합결제창(개인)전용 | ||||
| user_ci | 필수 | string | 88 | 고객사 사용자 CI(Connecting information) |
| main_color | string | 6 | PG 결제 화면 메인 색상 코드 *기본값은 FFFFFF |
|
| point_color | string | 6 | PG 결제 화면 포인트 색상 코드 *기본값은 5379FF |
|
| app_return_url | 선택적 필수 | string | 100 | 일반 신용카드(ISP) 결제 이후 이동할 고객사 앱 스키마 정보 *모바일 앱의 일반 신용카드 결제 요청 시 필수 값 입니다. |
| app_cancel_url | 선택적 필수 | string | 100 | 일반 신용카드(ISP) 결제 진행 중단 시 이동할 고객사 앱 스키마 정보 *모바일 앱의 일반 신용카드 결제 요청 시 필수 값 입니다. |
| return_url | 필수 | string | 255 | 결제 인증 결과 수신 및 결제 승인 API를 호출하는 고객사 URL |
| cancel_url | 필수 | string | 255 | 결제 취소 시 이동하는 고객사 URL |
| fail_url | 필수 | string | 255 | 결제 실패 시 이동하는 고객사 URL |
◎ 개인용 통합결제창 결제를 요청하는 경우
{
"pgcode": "selpay",
"client_id": "o2o",
"user_id": "test_01",
"user_name": "테스터01",
"order_no": "202108311259590001",
"pay_type”: 1, // 단일 결제
"device_type": 1,
"amount": 11000,
"product_name": "테스트 상품",
"return_url": "https://o2odev.shinhan.com/partner/pay/approval",
"cancel_url": "https://o2odev.shinhan.com/partner/pay/cancel",
"fail_url": "https://o2odev.shinhan.com/partner/pay/fail",
“param_ispt_hash”:”821b7bf742abfb49c8e535ee9a0801c4e6cefe4d49c9c8209b8c54d5077082f8"
"taxfree_amount": 0,
"tax_amount": 90,
"email_flag": "Y",
"email_addr": "bae1222@payletter.com",
"pay_hash": "dfhuoi892ashiozxui123…”,
"custom_parameter": "asdfoxuoy12uyisadouydfouayiouf…",
"card_purpost_type": 1, // 일반 신용카드는 필수 설정
"app_return_url": "scheme://path", // 모바일 앱 환경의 일반 신용카드는 필수 설정
"app_cancel_url": "scheme://path", // 모바일 앱 환경의 일반 신용카드는 필수 설정
“cup_return_deposit”: “100”, // 컵반환 보증금
“card_cpny_cd”: “S005”, // 고객사 화면에서 카드사를 선택하여 결제요청하는 경우 필수 설정
}
◎ 법인용 통합결제창 결제를 요청하는 경우
{
"pgcode": "bizselpay",
"client_id": "o2o",
"user_id": "test_01",
"user_name": "테스터01",
"order_no": "202108311259590001",
"pay_type”: 1, // 단일 결제
"device_type": 2, // 법인은 PC전용
"amount": 11000,
"taxfree_amount": 0,
"tax_amount": 1000,
"product_name": "테스트 상품",
“param_ispt_hash”:”821b7bf742abfb49c8e535ee9a0801c4e6cefe4d49c9c8209b8c54d5077082f8"
"email_flag": "Y",
"email_addr": "bae1222@payletter.com",
"pay_hash": "dfhuoi892ashiozxui123…”,
"custom_parameter": "asdfoxuoy12uyisadouydfouayiouf…",
“cup_return_deposit”: “100” , // 컵반환 보증금,
“buyr_bizr_no”:”1234567890”,
“clnt_pay_clf_cd”:”20240208”,
“req_amt”: 700000000,
“chrg_amt”: 300000000,
“tot_tx_amt”: 1000000000,
“pay_amt”: 1000000000,
“clnt_tx_clf_cd”:”IMPL”,
“cncl_yn”:”N”,
“clnt_tx_ymd”:”20240601”,
“seller_name”:”테스트판매사”
}
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
| redirect_url | string | 1000 | (결제용)웹 화면 *PG 웹 화면 접근 후 redirect_url token은 다시 사용할 수 없습니다. |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
HTTP 1.1 200 OK
{
"ret_code": 0,
"ret_msg": "OK",
"redirect_url": "https://devpayapispg.shinhan.com/pgsvc/pay?token=2021083110239001duf.." // (결제 인증용)웹 화면
}
HTTP 1.1 401 Unauthorized
{
"ret_code": 998,
"ret_msg": "token is missing or incorrect."
}
1.Html 내 script tag 추가
<script src="https://payspg.shinhan.com/businessPayment/unifiedPay/script"></script>
2.통합결제창 결제요청 응답값 (redirect_url) 으로 팝업 호출
ShinhanBizPay.openPopup(result.redirect_url, function(retCode, retMessage) {
if(retCode == ShinhanBizPay.RES_SUCCESS) {
console.log(“성공”);
} else {
console.log("실패”, retMessage);
}
});
결제 요청 API의 redirect_url 을 이용하여, 고객사 사용자에게 PG 웹 화면을 출력합니다.
일반결제/비인증결제/전용페이 일 경우와 가상계좌일 경우 응답 파라미터가 달라집니다.
| Redirect URL | HTTP 메서드 |
|---|---|
| redirect_url | GET |
고객사 사용자의 PG 통합결제 결제하기(인증) 완료 이후, 고객사의 return_url POST 데이터로 주문 및 승인 토큰 정보가 전달됩니다. return_url은 결제 요청 API에 전달한 파라미터 값을 의미합니다.
| Redirect URL | HTTP 메서드 |
|---|---|
| return_url | POST |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| order_no | string | 50 | (일반결제) 고객사 주문번호 |
| custom_parameter | string | 1000 | (일반결제) 고객사 전용 값 |
| confirm_token | string | 50 | (일반결제) 승인 토큰 |
| escr_yn | Char | 1 | (일반결제/가상계좌) 에스크로여부 * 고객사가 에스크로 사용 가능하고 PG에서 에스크로여부를 선택 한 경우 |
| tid | String | 50 | (가상계좌) 거래번호 |
| bank_nm | String | 100 | (가상계좌) 입금은행 |
| user_nm | string | 20 | (가상계좌) 예금주명 |
| vald_dt | string | 8 | (가상계좌) 입금기한(YYYYMMDD) |
| gods_nm | string | 100 | (가상계좌) 상품명 |
| string | 20 | (가상계좌) 이메일 | |
| user_tel_no | string | 20 | (가상계좌) 사용자 전화번호 |
| pay_amt | number | (가상계좌) 결제금액 | |
| ret_code | number | (가상계좌) 응답 코드 | |
| ret_msg | string | 100 | (가상계좌) 응답 메시지 |
HTTP 1.1 200 OK
{
"order_no": "202108310937510001",
"custom_parameter": "auoh1238u123uy...",
"confinm_token": "aaaaaa.bbbbbb.ccccc"
“escr_yn”:”N”
“tid”:”거래번호”
"bank_nm": "입금은행",
"user_nm": "예금주명",
"vald_dt": "20240909"
"gods_nm": "상품명"
"email": "aaaaaa@ccc.com"
"user_tel_no": "01012345678"
"pay_amt": "46000"
"ret_code": 0,
"ret_msg": "OK"
}
고객사 결제 승인 용 API 입니다. "결제 인증 결과 (UI)"로 이동 후 30분(토큰 만료) 안에 요청하여야 합니다.
전용페이 계좌이체는 전용페이 사용자 휴대폰 번호(본인인증 결과정보)로 현금영수증을 자동 발행합니다.
| URL | HTTP 메서드 | HTTP 헤더 | 토큰 유형 |
|---|---|---|---|
| v1.0/payments/confirm | POST | Authorization: SPGKEY {API Key} | payment |
| 파라미터 | 필수 여부 | 자료형 | 크기 | 설명 |
|---|---|---|---|---|
| client_id | 필수 | string | 10 | 고객사 아이디 |
| order_no | 필수 | string | 50 | 고객사 주문번호 |
| confirm_token | 필수 | string | 50 | (결제) 승인 토큰 |
| ip_addr | 필수 | string | 50 | 아이피 주소 (*사용자 아이피 주소 수집 시 결제 요청 이력 확인이 용이함) |
| 파라미터 | 자료형 | 크기 | 설명 | |
|---|---|---|---|---|
| ret_code | number | 응답 코드 | ||
| ret_msg | string | 100 | 응답 메시지 | |
| pay_type | number | 결제 유형 (1: 단일 결제, 2: 복합 일반, 3: 복합 전용) | ||
| order_no | string | 50 | 고객사 주문번호 | |
| product_name | string | 50 | (결제)상품 명 | |
| user_id | string | 50 | 고객사 사용자(회원) 아이디 | |
| user_name | string | 20 | 고객사 사용자(회원) 명 | |
| amount | number | (결제 요청)금액 | ||
| discount_amount | number | 할인 금액(신용카드사 프로모션 할인 금액) *신용카드, 계좌이체, 간편결제 해당 |
||
| taxfree_amount | number | 비과세 금액 *신용카드, 계좌이체, 간편결제 해당 |
||
| tax_amount | number | 부가세 금액 *신용카드, 계좌이체, 간편결제 해당 |
||
| tid | string | 50 | (결제)거래 번호 | |
| pay_ispt_hash | string | 1000 | 결제 인증 해시 *PG의 결제 승인 응답 파라미터 검증을 위한 sha256 hash 값을 의미하며, "sha256(user_id + amount + tid + payment API Key)" 조합으로 생성된다. |
|
| tx_date | string | 19 | 거래 일시(YYYY-MM-DD HH:MM:SS) | |
| reserved1 | string | 200 | 가맹점 예약 필드 1.계좌 상품코드 |
|
| 신용카드(pay_info) | ||||
| card_cpny_cd | string | 4 | 카드사 코드 | |
| card_name | string | 20 | 카드 종류 | |
| card_no | string | 18 | 카드 번호 (*전용페이 카드결제 시 전달되는 중간 6자리 마스킹 카드번호) |
|
| card_aprv_no | string | 50 | 카드 승인 번호 | |
| install_month | string | 2 | 할부 개월 수 | |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
HTTP 1.1 200 OK
{
"ret_code": 0,
"ret_msg": "OK",
“pay_type": 2, // 결제 유형 (2: 복합 일반)
"order_no": "202108311259590001",
"product_name": "테스트 상품",
"user_id": "test01",
"user_name": "test01",
"amount": "1000",
"discount_amount": "100",
"taxfree_amount": "0",
"tax_amount": "90",
"tid": "202108311259590006",
"install_month": "00",
"pay_ispt_hash": "941365C04218FF129B790AB1244F8A012BA64E872C3CB8E0C9978A2F76C202F0",
"tx_date": "2021-08-31 12:59:59",
"pay_info": [
{
… …
}]
}
HTTP 1.1 401 Unauthorized
{
"ret_code": 998,
"ret_msg": "token is missing or incorrect."
}
고객사 결제 취소 용 API 입니다.
| URL | HTTP 메서드 | HTTP 헤더 | 키 유형 |
|---|---|---|---|
| v1.0/payments/cancel | POST | Authorization: SPGKEY {API Key} | payment |
| 파라미터 | 필수 여부 | 자료형 | 크기 | 설명 |
|---|---|---|---|---|
| client_id | 필수 | string | 10 | 고객사 아이디 |
| user_id | 필수 | string | 50 | 고객사 사용자(회원) 아이디(이메일, 영문 및 숫자 가능) |
| tid | 필수 | string | 50 | (결제)거래 번호 |
| amount | 필수 | number | (취소)금액 | |
| cncl_rsn | 필수 | string | 100 | 취소 사유 |
| ip_addr | 필수 | string | 50 | (고객사 사용자)아이피 주소 |
| bank_cd | 선택 | String | 3 | (가상계좌용)은행코드(가상계좌) |
| bank_acct_no | 선택 | String | 14 | (가상계좌용)은행 계좌 번호 (환불받을 계좌번호) |
| bank_name | 선택 | String | 20 | (가상계좌용)계좌주명 |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
| tid | string | 50 | (결제)거래 번호 |
| cid | string | 50 | (취소)승인 번호 |
| amount | number | (취소)금액 | |
| tx_date | string | 19 | (취소)거래 일시(YYYY-MM-DD HH:MM:SS) |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
HTTP 1.1 200 OK
{
"ret_code": 0,
"ret_msg": "OK",
"tid" :"tpay_test202108311259590002",
"cid":"123456",
"amount":1000,
"tx_date":"2021-08-31 15:01:07"
}
HTTP 1.1 401 Unauthorized
{
"ret_code": 998,
"ret_msg": "token is missing or incorrect."
}
고객사 결제 부분 취소 용 API 입니다. PG사 프로모션 결제 건의 경우, 프로모션 기준 금액(예: 5천원 이상일 때 1천원 할인)보다 부분 취소 금액이 작으면 취소 가능 잔액이 전체 처리됩니다. 예로, 1천원 프로모션 할인 금액이 적용된 1만원 결제 건을, 5천원씩 2회 부분 취소 요청하면, 첫번째 부분 취소는 5천원 처리, 두번째 부분 취소는 4천원이 처리됩니다. (단, 컵반환보증금(cup_return_deposit) 포함된 결제인 경우에는 부분 취소 불가)
| URL | HTTP 메서드 | HTTP 헤더 | 키 유형 |
|---|---|---|---|
| v1.0/payments/cancel/partial | POST | Authorization: SPGKEY {API Key} | payment |
| 파라미터 | 필수 여부 | 자료형 | 크기 | 설명 |
|---|---|---|---|---|
| client_id | 필수 | string | 10 | 고객사 아이디 |
| user_id | 필수 | string | 50 | 고객사 사용자(회원) 아이디(이메일, 영문 및 숫자 가능) |
| tid | 필수 | string | 50 | (결제)거래 번호 |
| amount | 필수 | number | (부분 취소)금액 | |
| taxfree_amount | number | 비과세 금액 | ||
| tax_amount | number | 부가세 금액 *요청 파라미터 값이 없으면, ((amount - taxfree_amount) / 11) 계산식을 적용, 소수점 이하 반올림으로 자동 계산한다. |
||
| cncl_rsn | 필수 | string | 100 | 취소 사유 |
| ip_addr | 필수 | string | 50 | (고객사 사용자)아이피 주소 |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
| tid | string | 50 | (결제)거래 번호 |
| cid | string | 50 | (취소)승인 번호 |
| amount | number | (취소)금액 | |
| tx_date | string | 19 | (취소)거래 일시(YYYY-MM-DD HH:MM:SS) |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
HTTP 1.1 200 OK
{
"ret_code": 0,
"ret_msg": "OK",
"tid" :"tpay_test202108311259590002",
"cid":"123456",
"amount":1000,
"tx_date":"2021-08-31 15:01:07"
}
HTTP 1.1 401 Unauthorized
{
"ret_code": 998,
"ret_msg": "token is missing or incorrect."
}
고객사 사용자의 PG (결제)거래 확인서 화면 요청 용 API 입니다.
| URL | HTTP 메서드 | HTTP 헤더 | 키 유형 |
|---|---|---|---|
| v1.0/receipt/info/{tid} | GET | Authorization: SPGKEY {API Key} | search |
| 파라미터 | 필수 여부 | 자료형 | 크기 | 설명 |
|---|---|---|---|---|
| client_id | 필수 | string | 10 | 고객사 아이디 |
| amunt | 필수 | number | (결제)금액 | |
| tx_ymd | 필수 | string | 10 | 거래 일자(YYYY-MM-DD) |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
| redirect_url | string | 1000 | (거래 내역 확인용)웹 화면 |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
HTTP 1.1 200 OK
{
"ret_code": 0,
"ret_msg": "OK",
"redirect_url": "https://devpayapispg.shinhan.com/pgsvc/receipt/receipt_all.asp?id=..." //(거래내역확인용) PG 웹 화면
}
HTTP 1.1 401 Unauthorized
{
"ret_code": 998,
"ret_msg": "token is missing or incorrect."
}
고객사 결제 거래 정보 조회용 API 입니다.
| URL | HTTP 메서드 | HTTP 헤더 | 토큰 유형 |
|---|---|---|---|
| v1.0/payments/confirm-info | GET | Authorization: SPGKEY {API Key} | search |
| 파라미터 | 필수 여부 | 자료형 | 크기 | 설명 |
|---|---|---|---|---|
| client_id | 필수 | string | 10 | 고객사 아이디 |
| order_no | 필수 | string | 50 | 고객사 주문번호 |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
| user_id | string | 50 | 고객사 사용자(회원) 아이디(이메일, 영문 및 숫자 가능) |
| tid | string | 50 | (결제)거래 번호 |
| tx_amount | number | (결제)거래 금액 | |
| tx_stat | number | (결제)거래 상태 (1: 승인, 2: 취소, 3: 부분취소) | |
| tx_date | string | 19 | 거래 일시(YYYY-MM-DD HH:MM:SS) |
| cncl_date | string | 19 | 취소 일시(YYYY-MM-DD HH:MM:SS) *거래 상태 "2:취소"의 경우에만 응답하는 정보입니다. |
| cncl_rsn | string | 100 | 취소 사유 *거래 상태 "2:취소"의 경우에만 응답하는 정보입니다. |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
HTTP 1.1 200 OK
{
"ret_code": 0,
"ret_msg": "OK",
"user_id": "test_01",
"tid": "202108311259590006",
"tax_amount": "10,00",
"tx_stat": 2,
"tx_date": "2021-12-22 12:59:59",
"cncl_date": "2021-12-22 13:05:59",
"cncl_rsn”: “고객 요청”
}
HTTP 1.1 401 Unauthorized
{
"ret_code": 998,
"ret_msg": "there is no data."
}
PG에서 일반결제로 사용할 수 있는 카드사 목록 조회용 API 입니다.
| URL | HTTP 메서드 | HTTP 헤더 | 토큰 유형 |
|---|---|---|---|
| v1.0/payments/info/card-list | GET | Authorization: SPGKEY {API Key} | search |
| 파라미터 | 필수 여부 | 자료형 | 크기 | 설명 |
|---|---|---|---|---|
| client_id | 필수 | string | 10 | 고객사 아이디 |
| pgcode | 필수 | string | 10 | 결제수단 코드(5. 결제수단 & 오류코드 참조) |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
| list | JSON Array | ||
| card_cpny_cd | string | 10 | 카드사 코드 * 6.1 카드사 코드 참조 |
| card_cpny_name | string | 20 | 카드사 명 * 6.1 카드사 코드 참조 |
| image_url | string | 100 | 카드사 이미지 URL |
| sort_no | number | 순서 | |
| istl_psbl_amt | number | 할부 가능 금액 | |
| istl_start_mnts | string | 2 | 할부 시작월 |
| istl_finish_mnts | string | 2 | 할부 종료월 |
| nintr_istl_start_mnts | string | 2 | 무이자 시작월 *무이자 가능인 경우 |
| nintr_istl_finish_mnts | string | 2 | 무이자 종료월 *무이자 가능인 경우 |
| mult_part_nintr_istl_mnts | number | 복수 부분 무이자 할부 개월(,구분자로 복수개 등록) 0 : 사용안함 *무이자 가능인 경우 |
|
| nintr_yn | string | 1 | 무이자 가능여부(Y, N) |
| point_use_yn | string | 1 | 카드사 포인트 사용가능여부(Y, N) |
| notice_list | JSON Array | 공지 리스트 | |
| notice_type | number | 공지 유형 코드(1:공지, 2:장애, 3:작업) | |
| notice_msg | string | 공지 메시지 | |
| prmt_list | JSON Array | 프로모션 리스트 | |
| prmt_name | string | 30 | 프로모션 명 |
| prmt_ctnt | string | 프로모션 내용 | |
| prmt_cndi_amt | number | 프로모션 조건 기준 금액 | |
| prmt_amt | number | 프로모션 금액 | |
| id_max_aply_yn | string | 1 | ID별 최대 적용 여부(Y, N) |
| max_cnt_aply_type | number | 최대 횟수 적용 기간 유형 코드 1:일, 2:주, 3:월, 4:총 |
|
| max_cnt | number | 최대 횟수 |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
HTTP 1.1 200 OK
{
"ret_code": 0,
"ret_msg": "OK",
“list”: {
"card_cpny_cd": "S001",
"card_cpny_name": "BC카드",
"image_url": "/srs/htdocs/publish/images/icon_card_bc.png"
}
}
HTTP 1.1 401 Unauthorized
{
"ret_code": 998,
"ret_msg": "there is no data."
}
PG약관 조회용 API 입니다.
| URL | HTTP 메서드 | HTTP 헤더 | 토큰 유형 |
|---|---|---|---|
| v1.0/payments/info/terms-info-list | GET | Authorization: SPGKEY {API Key} | search |
| 파라미터 | 필수 여부 | 자료형 | 크기 | 설명 |
|---|---|---|---|---|
| client_id | 필수 | string | 10 | 고객사 아이디 |
| pgcode | 필수 | string | 10 | 결제수단 코드(5. 결제수단 & 오류코드 참조) |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
| list | JSON Array | ||
| terms_no | number | 약관번호 | |
| terms_nm | string | 100 | 약관명 |
| terms_ctnt | string | 약관내용(HTML) |
| 파라미터 | 자료형 | 크기 | 설명 |
|---|---|---|---|
| ret_code | number | 응답 코드 | |
| ret_msg | string | 100 | 응답 메시지 |
HTTP 1.1 200 OK
{
"ret_code": 0,
"ret_msg": "OK",
list": [{
"terms_no": 1,
"terms_nm":"전자금융거래 이용약관",
"terms_ctnt": “<header class=”pgHeader”><h3 class=”title”>약관 및 동의</h3>….</div>"
}]
}
HTTP 1.1 401 Unauthorized
{
"ret_code": 998,
"ret_msg": "there is no data."
}
| 결제수단 코드 | 결제수단 코드 설명 |
|---|---|
| selpay | 통합결제창(간편결제, 신용카드, 신용카드(카드번호입력), 가상계좌 선택 UI 호출) |
| bizselpay | 법인통합결제창(신용카드(카드번호입력), 가상계좌, 연계대출 선택 UI 호출) |
| card | 일반 신용/체크카드 |
| nauthcard | 비인증 신용/체크카드 (개인/법인) |