1. 자동결제 등록 예약(payco_reserve)
- PAYCO 자동 결제 등록 및 변경 페이지를 띄우기 전에 자동 결제 등록 예약 API를 통해 필요한 정보를 전달한다.
- 가맹점에서는 자동 결제 등록 예약 API 응답으로 받은 주문서 URL 을 팝업으로 띄운다. 자동 결제 정보 변경이 필요한 경우에는 변경이 필요한 자동결제번호 와 인증키 정보를 필수로 전달한다. (autoPaymentNo, autoPaymentCertifyKey)
- 1) PAYCO 자동 결제 등록 팝업 오픈시 팝업차단을 위한 개발 TIP!!
- - orderSheetUrl로 PAYCO 팝업오픈시엔 가맹점페이지 오픈 후 피드백받은 orderSheetUrl을 redirect처리하도록 한다.
- - 팝업 오픈은 POST방식의 submit은 지양하도록 한다. ( IE11 관리자모드 about:blank 새창 오픈 )
- METHOD : POST
- URL : /outseller/autoPayment/reserve
자동 결제 등록 예약 API > INPUT
변수명 | Type | Max Length | 필수 여부 | 설명 |
---|---|---|---|---|
1 sellerKey | String | 100 | Y | 가맹점 코드 - 파트너센터에서 알려주는 값으로, 초기 연동 시 PAYCO에서 쇼핑몰에 값을 전달합니다. |
2 cpId | String | 30 | Y | 상점 ID |
3 sellerAutoPaymentReferenceKey | String | 100 | Y | 외부가맹점의 자동결제 관리번호 |
4 currency | String | 3 | N | 통화(default=KRW) |
5 totalPaymentAmt | Number | N | 총 결제 금액 (자동결제 등록 페이지에 노출될 금 액) | |
6 returnUrl | String | 1000 | Y | 등록완료 후 Redirect 되는 Url |
7 returnUrlParam | String | 1000 | N | 등록완료 후 Redirect 되는 Url에 함께 전달되어야 하는 파라미터 (Json형태의 String) |
8 orderMethod | String | N/A | N | 주문유형(=결제유형) - 바로구매형 : CHECKOUT 간편결제형+가맹점 회원결제: EASYPAY_F 간편결제형+가맹점 비회원결제 : EASYPAY (default. EASYPAY_F) |
9 orderChannel | String | N/A | Y | 주문채널 (default. PC) |
10 inAppYn | String | 1 | Y | 인앱결제 여부(Y/N), default=N (in-app 결제인경우 Y) |
12 autoPaymentNo | String | 20 | N | 자동결제 번호 (자동결제 정보 변경 시 전달) |
13 autoPaymentCertifyKey | String | 200 | N | 자동결제 인증 키(자동결제 정보 변 경시 전달) |
14 orderTitle | String | 300 | Y | 주문 타이틀 |
15 extraData | String | 3000 | N | 부가정보 (Json 형태의 String) |
▷ 15번 컬럼 extraData
변수명 | Type | Max Length | 필수 여부 | 설명 |
---|---|---|---|---|
1 cancelMobileUrl | String | 300 | N | 모바일 결제페이지에서 취소 버튼 클릭시 이동할 URL (결제창 이전 URL 등). 미입력시 메인 URL로 이동 |
2 viewOptions | N | 화면UI옵션 |
▷ 15번 컬럼 extraData의 viewOptions 화면UI 옵션
변수명 | Type | Max Length | 필수 여부 | 설명 |
---|---|---|---|---|
1 showMobileTopGnbYn | String | 1 | N | 모바일 상단 GNB 노출여부 |
2 iframeYn | String | 1 | N | Iframe 호출 |
3 autoPaymentAmtTitle | String | 15 | N | 자동결제 등록/수정창에 노출될 정기결제 금액 항목 명. 없는 경우 "정기결제 금액". 특수문자 사용 불가 |
자동 결제 등록 예약 API > INPUT
{
"sellerAutoPaymentReferenceKey": "TEST1041031058328",
"autoPaymentNo": "",
"sellerKey": "S0FSJE",
"autoPaymentCertifyKey": "",
"extraData": "{\"cancelMobileUrl\":\"http://www.payco.com\",\"viewOptions\":{\"iframeYn\":\"N\",\"showMobileTopGnbYn\":\"\"}}",
"cpId": "PARTNERTEST_AUTO",
"orderChannel": "PC",
"returnUrlParam": "{\"cart_no\":\"20151234567\"}",
"orderMethod": "EASYPAY_F",
"totalPaymentAmt": 69000,
"currency": "KRW",
"inAppYn": "N",
"returnUrl": "http://localhost/jsp/autoPayment//autoPayment_return.jsp",
"orderTitle": "자동결제 테스트(JSP)"
}
자동 결제 등록 예약 API > OUTPUT
변수명 | Type | Max Length | 설명 |
---|---|---|---|
1 reserveOrderNo | String | 20 | 주문예약번호 |
2 orderSheetUrl | String | 1000 | PAYCO주문서 url (팝업 open) |
자동 결제 등록 예약 API > OUTPUT
{
"result": {
"reserveOrderNo": "201608312004340321",
"orderSheetUrl": "https://alpha-bill.payco.com/autoPayment/easyLogin/201608312004340321"
},
"code": 0,
"message": "success"
}
2. 자동결제(payco_autopayment)
- METHOD : POST
- URL : /outseller/autoPayment/payment
자동 결제 API > INPUT
변수명 | Type | Max Length | 필수 여부 | 설명 |
---|---|---|---|---|
1 sellerKey | String | 100 | Y | 가맹점 코드 - 파트너센터에서 알려주는 값으로, 초기 연동 시 PAYCO에서 쇼핑몰에 값을 전달합니다. |
2 autoPaymentNo | String | 20 | Y | 자동결제 번호 |
3 autoPaymentCertifyKey | String | 200 | Y | 자동결제 인증 키 |
4 sellerOrderReferenceKey | String | 100 | Y | 외부가맹점의 주문번호 |
5 sellerOrderReferenceKeyType | String | 50 | N | 외부가맹점의 주문번호 타입 UNIQUE_KEY 유니크 키 - 기본값, DUPLICATE_KEY 중복 가능한 키 ( 외부가맹점의 주문번호가 중복 가능한 경우 사용) |
6 currency | String | 3 | N | 통화(default=KRW) |
7 totalPaymentAmt | Number | Y | 총 결제 할 금액 (총 배송비 포함)
- 면세금액,과세금액,부가세의 합 = totalTaxfreeAmt + totalTaxableAmt + totalVatAmt |
|
8 totalTaxfreeAmt | Number | N | 면세금액(면세상품의 공급가액 합) | |
9 totalTaxableAmt | Number | N | 과세금액(과세상품의 공급가액 합) | |
10 totalVatAmt | Number | N | 부가세(과세상품의 부가세 합) | |
11 orderTitle | String | 300 | Y | 주문 타이틀 |
12 orderProducts | Array | N/A | Y | 주문상품List |
▷12번 컬럼 orderProducts 주문상품 List
변수명 | Type | Max Length | 필수 여부 | 설명 |
---|---|---|---|---|
1 cpId | String | 30 | Y | 상점ID |
2 productId | String | 50 | Y | 상품ID |
3 productAmt | Number | Y | 상품금액(상품단가 * 수량) | |
4 productPaymentAmt | Number | Y | 상품 결제금액(상품결제단가 * 수량) | |
5 orderQuantity | Number | 10 | Y | 주문수량 (배송비 상품인 경우 1로 세팅) |
6 option | String | 100 | N | 상품 옵션 |
7 sortOrdering | Number | 10 | Y | 상품노출순서 |
8 productName | String | 160 | Y | 상품명 |
9 orderConfirmUrl | String | 4000 | N | 주문완료 후 주문상품을 확인할 수 있는 url |
10 orderConfirmMobileUrl | String | 1000 | N | 주문완료 후 주문상품을 확인할 수 있는 모바일 url |
11 productImageUrl | String | 4000 | N | 이미지URL (배송비 상품이 아닌 경우는 필수) |
12 sellerOrderProductReferenceKey | String | 100 | Y | 외부가맹점에서 관리하는 주문상품 연동 키 |
13 taxationType | String | 50 | N | 과세타입
• 면세상품 : DUTYFREE • 과세상품 : TAXATION (기본) • 결합상품 : COMBINE |
자동 결제 API > INPUT
{
"autoPaymentNo": "201608311000022591",
"totalPaymentAmt": 69000,
"totalTaxfreeAmt": 0,
"sellerKey": "S0FSJE",
"autoPaymentCertifyKey": "zxi8rFXWRA5MeOStIWSXf01u5Euz06Ux9dAU8zVcfmXNGH9ZJZ5bW9hylkHHSXZ8",
"totalVatAmt": 6900,
"orderProducts": [{
"productImageUrl": "",
"orderConfirmMobileUrl": "",
"productId": "PROD_AUTO",
"productPaymentAmt": 69000,
"productAmt": 69000,
"cpId": "PARTNERTEST_AUTO",
"sortOrdering": 1,
"orderQuantity": 1,
"productName": "테스트 상품1",
"orderConfirmUrl": "",
"taxationType": "TAXATION",
"sellerOrderProductReferenceKey": "ITEM_100001",
"option": "테스트입니다"
}],
"currency": "KRW",
"totalTaxableAmt": 62100,
"orderTitle": "자동결제 테스트 상품",
"sellerOrderReferenceKeyType": "UNIQUE_KEY",
"sellerOrderReferenceKey": "TEST3429654693"
}
자동 결제 API > OUTPUT
변수명 | Type | Max Length | 설명 | 예 |
---|---|---|---|---|
1 sellerOrderReferenceKey | String | 100 | 외부가맹점에서 관리하는 주문연동Key | 20140821221250595 |
2 autoPaymentNo | String | 20 | 자동결제 번호 | |
3 orderNo | String | 20 | 주문번호 | 20140821100000072 |
4 memberName | String | 15 | 주문자명(일부 마스킹처리) | |
5 memberEmail | String | 200 | 주문자EMAIL(일부 마스킹처리) | |
6 orderChannel | String | N/A | 주문채널 (PC/MOBILE) | PC |
7 totalOrderAmt | Number | 총 주문금액 | 116500 | |
8 totalDeliveryFeeAmt | Number | 총 배송비 | 2500 | |
9 totalRemoteAreaDeliveryFeeAmt | Number | 총 도서산간비 | 0 | |
10 totalPaymentAmt | Number | 총 결제금액 | 11900 | |
11 paymentCompletionYn | String | 1 | 결제완료여부 (Y/N) | Y |
12 deliveryPlace | Object | N/A | 배송지 정보 | |
13 orderProducts | Array | N/A | 주문상품 List | |
14 paymentDetails | Array | N/A | 결제내역 List | - 복합 결제의 경우 결제수단 별 array list로 구성되어 리턴 되며, 결제 수단은 추후 추가 될 수 있다. |
15 orderCertifyKey | String | 100 | 주문인증키 |
▷ 12번 컬럼의 deliveryPlace (배송지)
변수명 | Type | Max Length | 설명 | 예 |
---|---|---|---|---|
1 recipient | String | 15 | 수령인 | 홍길동 |
2 englishReceipent | String | 50 | 수령인 영문명 | LEEJINHEE |
3 address1 | String | 300 | 기본주소 | 경기도 성남시 분당구 삼평동 |
4 address2 | String | 300 | 상세주소 | 629 플레이뮤지엄 |
5 zipcode | String | 50 | 우편번호 | 463-400 |
6 deliveryMemo | String | 30 | 배송메모 | 경비실에 맡겨주세요 |
7 telephone | String | 15 | 연락처 | 010-1111-2222 |
8 individualCustomUniqNo | String | 50 | 개인통관번호 |
▷ 13번 컬럼의 orderProducts (주문상품List)
변수명 | Type | Max Length | 설명 | 예 |
---|---|---|---|---|
1 orderProductNo | String | 20 | 주문상품번호 | 20140821100000022 |
2 cpId | String | 30 | 상점ID | PS_TOASTCO |
3 productId | String | 50 | 상품ID | PS_TOASTCOMC1 |
4 sellerOrderProductReferenceKey | String | 100 | 외부가맹점에서 발급한 주문상품연동Key |
19801895 |
5 orderProductStatusCode | String | 50 | 주문상품 상태코드 | PAYED |
6 orderProductStatusName | String | 10 | 주문상품 상태명 | 결제완료 |
7 productKindCode | String | 상품 타입 | GENERAL_PRODUCT | |
8 productPaymentAmt | Float | 상품결제금액 : 배송비 상품의 경우 (원 상품결제금액 + 추가 배송비)로 변경 될 수 있습니다. |
5000 | |
9 originalProductPaymentAmt | Float | 원 상품결제금액 ( 배송비 상품의 경우 배송비 금액 ) |
2000 |
▷ paymentDetails (결제내역 List)
변수명 | Type | Max Length | 설명 | 예 |
---|---|---|---|---|
1 paymentTradeNo | String | 20 | 결제번호 | 201409191000001142 |
2 paymentMethodCode | String | 10 | 결제수단코드 | 01 |
3 paymentMethodName | String | 15 | 결제수단명 | 신용카드 |
4 paymentAmt | Number | 결제금액 | 119000 | |
5 tradeYmdt | String | 14 | 결제일시 (yyyyMMddHHmmss) | 20140822120201 |
6 pgAdmissionNo | String | 20 | PG승인번호 | 209380 |
7 pgAdmissionYmdt | String | 14 | PG승인일시 (yyyyMMddHHmmss) | 20140822120201 |
8 easyPaymentYn | String | 1 | 간편결제여부 (Y/N) | N |
9 cardSettleInfo | Object | N/A | 신용카드 결제 정보 | ↓ |
10 cellphoneSettleInfo | List | N/A | 핸드폰 결제 정보 | ↓ |
▷ cardSettleInfo (카드결제정보)
변수명 | Type | Max Length | 설명 | 예 |
---|---|---|---|---|
1 cardCompanyName | String | 15 | 카드사명 | 하나SK |
2 cardCompanyCode | String | 50 | 카드사코드 | CCSK |
3 cardNo | String | 300 | 카드번호 | **********1809 |
4 cardInstallmentMonthNumber | String | 2 | 할부개월(MM) | 00 |
5 cardAdmissionNo | String | 20 | 카드사 승인번호 | 31213333 |
6 cardInterestFreeYn | String | 1 | 무이자여부(Y/N) | Y |
7 corporateCardYn | String | 1 | 법인카드여부 (개인 N ,법인 Y) |
Y |
8 partCancelPossibleYn | String | 1 | 부분취소가능유무(Y/N) | Y |
▷ cellphoneSettleInfo(핸드폰 결제 정보)
변수명 | Type | Max Length | 설명 | 예 |
---|---|---|---|---|
1 cellphoneNo | String | 32 | 휴대폰번호 | 010-1111-2222 |
자동 결제 API > OUTPUT
{
"result": {
"sellerOrderReferenceKey": "TEST3429654693",
"orderNo": "201608312002168126",
"memberName": "강**",
"memberEmail": "na****",
"orderChannel": "기타",
"totalOrderAmt": 69000,
"totalDeliveryFeeAmt": 0,
"totalRemoteAreaDeliveryFeeAmt": 0,
"totalPaymentAmt": 69000,
"orderProducts": [{
"orderProductNo": "201608312002324128",
"sellerOrderProductReferenceKey": "ITEM_100001",
"orderProductStatusCode": "OPSPAED",
"orderProductStatusName": "결제완료",
"cpId": "PARTNERTEST_AUTO",
"productId": "PROD_AUTO",
"productKindCode": "GENERAL_PRODUCT",
"productPaymentAmt": 69000,
"originalProductPaymentAmt": 69000
}],
"paymentDetails": [{
"cardSettleInfo": {
"cardCompanyName": "삼성카드",
"cardCompanyCode": "CCSS",
"cardNo": "941010******1234",
"cardInstallmentMonthNumber": "00",
"cardAdmissionNo": "11055600",
"cardInterestFreeYn": "N",
"corporateCardYn": "N",
"partCancelPossibleYn": "Y"
},
"paymentTradeNo": "201608312002742896",
"paymentMethodCode": "51",
"paymentMethodName": "신용카드(자동)",
"paymentAmt": 69000,
"tradeYmdt": "20160831145454",
"pgAdmissionNo": "16494900698257",
"pgAdmissionYmdt": "20160831145454",
"easyPaymentYn": "N"
}],
"orderCertifyKey": "ZH2eIuuh4Q9Bah67WMH9DCBVd1C1Atm566MJLundf2ICC",
"autoPaymentNo": "201608311000022591",
"paymentCompleteYmdt": "20160831145454"
},
"code": 0,
"message": "success"
}
3. 자동 결제 정보 조회
- 등록된 자동 결제 정보를 조회한다.
- URL : /outseller/autoPayment/info
자동 결제 정보 조회 > INPUT
변수명 | Type | Max Length | 필수 여부 | 설명 |
---|---|---|---|---|
1 sellerKey | String | 100 | Y | 판매자Key |
2 sellerAutoPaymentReferenceKey | String | 100 | Y | 외부가맹점의 자동결제 관리번호 |
3 autoPaymentCertifyKey | String | 200 | Y | 자동결제 인증 키 |
자동 결제 정보 조회 > INPUT
{
"sellerAutoPaymentReferenceKey": "TEST3429654693",
"sellerKey": "S0FSJE",
"autoPaymentCertifyKey": "zxi8rFXWRA5MeOStIWSXf01u5Euz06Ux9dAU8zVcfmXNGH9ZJZ5bW9hylkHHSXZ8"
}
자동 결제 정보 조회 > OUTPUT
변수명 | Type | Max Length | 설명 |
---|---|---|---|
1 sellerAutoPaymentReferenceKey | String | 100 | 외부가맹점의 자동결제 관리번호 |
2 autoPaymentCertifyKey | String | 200 | 자동결제 인증 키 |
3 autoPaymentNo | String | 20 | 자동 결제 번호 |
4 paymentMethodCode | String | 10 | 결제수단코드 |
5 paymentMethodName | String | 15 | 결제수단명 |
6 pinNo | String | 300 | 마스킹된 핀번호 (ex. 카드번호, 휴대 폰 번호) |
7 corporationCode | String | 50 | 사업자코드 (ex. 카드사 코드) |
8 corporationName | String | 50 | 사업자명 (ec. 카드사명) |
9 registYmdt | String | 12 | 등록일시 (yyyyMMddHHmmss) |
자동 결제 정보 조회 > OUTPUT
{
"result": {
"sellerAutoPaymentReferenceKey": "TEST3429654693",
"autoPaymentCertifyKey": "zxi8rFXWRA5MeOStIWSXf01u5Euz06Ux9dAU8zVcfmXNGH9ZJZ5bW9hylkHHSXZ8",
"autoPaymentNo": "201608311000022591",
"paymentMethodCode": "51",
"paymentMethodName": "신용카드(자동)",
"pinNo": "************1234",
"corporationCode": "CCSS",
"corporationName": "삼성카드",
"registYmdt": "20160831145438"
},
"code": 0,
"message": "success"
}
4. 자동결제 삭제
- 가맹점에서 자동결제가 해지되는 경우 자동결제 삭제 API를 호출하여 등록된 정보를 삭제한다.
- URL : /outseller/autoPayment/delete
자동결제 삭제 API > INPUT
변수명 | Type | Max Length | 필수 여부 | 설명 |
---|---|---|---|---|
1 sellerKey | String | 100 | Y | 판매자Key |
2 sellerAutoPaymentReferenceKey | String | 100 | Y | 외부가맹점의 자동결제 관리번호 |
3 autoPaymentCertifyKey | String | 200 | Y | 자동결제 인증 키 |
자동결제 삭제 API > INPUT
{
"sellerAutoPaymentReferenceKey": "TEST3429654693",
"sellerKey": "S0FSJE",
"autoPaymentCertifyKey": "zxi8rFXWRA5MeOStIWSXf01u5Euz06Ux9dAU8zVcfmXNGH9ZJZ5bW9hylkHHSXZ8"
}
5. 외부 가맹점 API 상세
- 외부가맹점은 아래 API를 제공해야 합니다.
- API 스펙은 PAYCO에서 정의한 대로 개발되어 있어야 합니다
- 자동 결제 등록 및 변경 완료
- 자동 결제 등록 예약 API 연동 시 파라미터로 'returnUrl'을 전달하게 된다.
- 'returnUrl'은 결제인증완료URL로 외부가맹점이 제공하는 페이지이다.
- 자동 결제 등록 및 변경 성공시점 또는 사용자 취소시 외부가맹점의 returnUrl로 이동한다.
- 캐릭터셋은 UTF-8이며, POST로 전달한다.
- 예약시 returnUrlParam 값에 셋팅된 정보가 존재시 해당값을 추가하여 returnUrl을 호출한다.
- 예] 예약API 호출시 전달된 정보
- 예] 결제인증완료 호출 페이지
- 자세한 항목은 아래 'returnUrl 로 전달되는 정보'를 참고한다.
- 가맹점에서는 reserveOrderNo와 sellerAutoPaymentReferenceKey가 일치하는지 확인한다.
- 자동결제 정보 조회 API를 이용하여 자동 결제시 필요한 정보를 조회한다. (autoPaymentNo)
"returnUrl": "https://alpha-api-bill.payco.com/test/surl/ok",
"returnUrlParam" : "{\"returnUrlParam1\":\"data1\", \"returnUrlParam2\":300}",http://alpha-api-bill.payco.com/test/surl/ok?returnParam1=data1&returnParam2=300
returnUrl 로 전달되는 정보
변수명 | Type | Max Length | 설명 | 예 |
---|---|---|---|---|
1 reserveOrderNo | String | 20 | 주문예약번호 | 201408211000000720 |
2 sellerAutoPaymentReferenceKey | String | 100 | 외부가맹점의 자동결제 관리번호 | |
3 autoPaymentCertifyKey | String | 200 | 자동결제 인증 키 - 자동결제시 필요 |
|
4 code | Number | 100 | 결과코드 | 0 : 성공 2222 : 사용자에 의한 취 소(close) 그 외 코드 : 오류 |
6. 유의사항
- ERROR 코드 9000은 시스템 점검시 내려주는 코드이므로 해당 코드에 대한 메시지는 사용자에게 노출처리 부탁드립니다.
- 결제수단 코드가 추가 될 수 있으니 참고부탁드립니다.
- 자동 결제 등록 및 변경 성공시점 또는 사용자 취소시 외부가맹점의 returnUrl로 이동한다.
- 모바일웹의 경우 페이코 연동은 페이지 이동방식으로 작업 부탁드립니다.
- 예약시 returnUrlParam 값에 셋팅된 정보가 존재시 해당값을 추가하여 returnUrl을 호출한다.
- 자동결제 등록 예약API > 부가정보(extraData) > cancelMobileUrl에 취소버튼 클릭시 이동할 URL을 추가로 보내주세요.