swagger: '2.0'
info:
  title: 포트원 REST API
  description: >-
    * 결제완료된 정보, 결제취소, 상태별 결제목록 조회 등의 기능을 하는 REST API를 제공합니다.<br> 비인증결제, 정기 자동결제
    등 부가기능을 위한 REST API를 제공합니다.
  contact:
    name: (주)코리아포트원
    url: 'https://admin.portone.io'
    email: cs@portone.io
  version: '1.0'
host: api.iamport.kr
basePath: /
schemes:
  - https
paths:
  /users/getToken:
    post:
      tags:
        - authenticate
      summary: access_token 발급 API
      description: >-
        API키 & API secret으로 access_token을 발급받습니다.<br> access_token의 만료기한은 발행 시간
        부터 30분입니다. 만료된 토큰으로 API 요청을 하면 <b>401 Unauthorized </b>응답을 받습니다. <br>
        <ul><li>재발행 (만료 후 발급): 새로운 access token을 발급한다. (만료기한: 발행시간 후 30분)</li>
        <li>재사용 (만료 전 발급): 기존 access token을 발급한다. (만료기한: 기존과 동일, 단 기존 만료시간 전
        1분이내 요청 시 5분 연장 됨)</li></ul>
      operationId: getToken
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_key
          in: formData
          description: >-
            REST API key (포트원 관리자콘솔 내 [결제 연동] > [식별코드・API Keys] > [V1 API]에서 확인할
            수 있습니다. : https://admin.portone.io)
          required: true
          type: string
          x-portone-name: REST API KEY
          x-portone-description: >-
            REST API key로 포트원 관리자콘솔 내 [결제 연동] > [식별코드・API Keys] > [V1 API]에서 확인할
            수 있습니다. : https://admin.portone.io
        - name: imp_secret
          in: formData
          description: >-
            REST API Secret (포트원 관리자콘솔 내 [결제 연동] > [식별코드・API Keys] > [V1 API]에서
            확인할 수 있습니다. : https://admin.portone.io)
          required: true
          type: string
          x-portone-name: REST API SECRET
          x-portone-description: >-
            REST API Secret으로 포트원 관리자콘솔 내 [결제 연동] > [식별코드・API Keys] > [V1 API]에서
            확인할 수 있습니다. : https://admin.portone.io
      responses:
        '200':
          description: 정상적으로 access_token을 받아왔습니다
          schema:
            $ref: '#/definitions/AuthResponse'
        '401':
          description: 'imp_key, imp_secret 인증에 실패한 경우'
      x-portone-category: auth
  /benepia/point:
    post:
      tags:
        - benepia
      summary: 포인트 단건조회 API
      description: |-
        API를 통해 베네피아 포인트(복지포인트)조회합니다.<br>
            사용자로부터 베네피아 계정 아이디, 비밀번호를 전달받아 보유중인 베네피아 포인트를 조회할 수 있습니다.<br>
            KCP를 통해서만 진행되므로 KCP사이트코드 발급이 필요합니다.
      operationId: queryBenepiaPoint
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: benepia_user
          in: formData
          description: 베네피아 계정 아이디
          required: true
          type: string
          x-portone-name: 계정 아이디
          x-portone-description: 베네피아 계정 아이디
        - name: benepia_password
          in: formData
          description: 베네피아 계정 비밀번호
          required: true
          type: string
          x-portone-name: 계정 비밀번호
          x-portone-description: 베네피아 계정 비밀번호
        - name: pg
          in: formData
          description: |-
            KCP PG설정이 2개 이상인 경우, 조회가 진행되길 원하는 KCP사이트코드를 지정하실 수 있습니다.
                 pg 파라메터는 <b>kcp.{KCP사이트코드}</b> 형식의 문자열입니다. pg 파라메터가 누락되는 경우 PG설정 내 KCP설정을 자동 탐색하여 처리하게 됩니다.
          required: false
          type: string
          x-portone-name: PG 구분코드
          x-portone-description: 사용하고자 하는 PG사 구분코드
      responses:
        '200':
          description: 베네피아 포인트 조회 완료
          schema:
            $ref: '#/definitions/BenepiaPointResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '500':
          description: 베네피아 포인트 조회 실패
      x-portone-supported-pgs:
        - kcp
      x-portone-category: etc.benepia
  /benepia/payment:
    post:
      tags:
        - benepia
      summary: 포인트 결제 요청 API
      description: |-
        API를 통해 베네피아 포인트(복지포인트)사용 결제요청합니다.<br>
              사용자로부터 전달받은 베네피아 계정 아이디, 비밀번호와 함께 결제정보를 요청하여 베네피아 포인트 사용처리합니다. <br>
              KCP를 통해서만 진행되므로 KCP사이트코드 발급이 필요합니다.
      operationId: payBenepiaPoint
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: benepia_user
          in: formData
          description: 베네피아 계정 아이디
          required: true
          type: string
          x-portone-name: 계정 아이디
          x-portone-description: 베네피아 계정 아이디
        - name: benepia_password
          in: formData
          description: 베네피아 계정 비밀번호
          required: true
          type: string
          x-portone-name: 계정 비밀번호
          x-portone-description: 베네피아 계정 비밀번호
        - name: benepia_member_code
          in: formData
          description: '베네피아 기관에서 부여한 회원사 코드(미입력시, 테스트 결제 처리됨)'
          required: false
          type: string
          x-portone-name: 회원사 코드
          x-portone-description: '베네피아 기관에서 부여한 회원사 코드(미입력시, 테스트 결제 처리됨)'
        - name: merchant_uid
          in: formData
          description: 고객사 거래 고유번호. 이미 결제가 이뤄진 적이 있는 merchant_uid로는 결제요청이 불가능합니다.
          required: true
          type: string
          maxLength: 40
          x-portone-name: 고객사 주문번호
          x-portone-summary: |
            <p>고객사 거래 고유번호</p>
          x-portone-description: 이미 결제가 이뤄진 적이 있는 merchant_uid로는 결제요청이 불가능합니다.
        - name: amount
          in: formData
          description: 결제요청금액
          required: true
          type: number
          x-portone-name: 결제요청금액
          x-portone-description: 결제 요청하고자 하는 금액
        - name: name
          in: formData
          description: 주문명
          required: true
          type: string
          maxLength: 40
          x-portone-name: 주문명
          x-portone-description: 주문명
        - name: buyer_name
          in: formData
          description: 주문자명
          required: false
          type: string
          maxLength: 16
          x-portone-name: 주문자명
          x-portone-description: 주문자명
        - name: buyer_email
          in: formData
          description: 주문자 Email주소
          required: false
          type: string
          maxLength: 64
          x-portone-name: 주문자 Email 주소
          x-portone-description: 주문자 Email주소
        - name: buyer_tel
          in: formData
          description: 주문자 전화번호
          required: false
          type: string
          maxLength: 16
          x-portone-name: 주문자 전화번호
          x-portone-description: 주문자 전화번호
        - name: buyer_addr
          in: formData
          description: 주문자 주소
          required: false
          type: string
          maxLength: 128
          x-portone-name: 주문자 주소
          x-portone-description: 주문자 주소
        - name: buyer_postcode
          in: formData
          description: 주문자 우편번호
          required: false
          type: string
          maxLength: 8
          x-portone-name: 주문자 우편번호
          x-portone-description: 주문자 우편번호
        - name: pg
          in: formData
          description: |-
            PG 구분코드<br>
                 KCP PG설정이 2개 이상인 경우, 결제가 진행되길 원하는 KCP사이트코드를 지정하실 수 있습니다.
                 pg 파라메터는 <b>kcp.{KCP사이트코드}</b> 형식의 문자열입니다. pg 파라메터가 누락되는 경우 PG설정 내 KCP설정을 자동 탐색하여 처리하게 됩니다.
          required: false
          type: string
          x-portone-name: PG 구분코드
          x-portone-description: 사용하고자 하는 PG사 구분코드
        - name: notice_url
          in: formData
          description: 선언되지 않으면 포트원 관리자 페이지에 정의된 Notification URL값을 사용
          required: false
          type: array
          x-portone-name: Notification URL(Webhook URL)
          x-portone-description: 웹훅을 수신하고자 하는 URL
        - name: custom_data
          in: formData
          description: 결제정보와 함께 저장할 custom_data. 객체로 전달되는 경우 JSON 문자열로 저장
          required: false
          type: string
          x-portone-name: 추가정보
          x-portone-summary: |
            <p>결제정보와 함께 저장할 custom_data</p>
          x-portone-description: 객체로 전달되는 경우 JSON 문자열로 저장
      responses:
        '200':
          description: 베네피아 포인트 결제 완료
          schema:
            $ref: '#/definitions/PaymentResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '500':
          description: 베네피아 포인트 결제 실패
      x-portone-supported-pgs:
        - kcp
      x-portone-category: etc.benepia
  '/certifications/{imp_uid}':
    get:
      tags:
        - certifications
      summary: 본인인증 결과조회 API
      description: 본인인증된 결과를 imp_uid를 이용하여 조회합니다.
      operationId: getCertification
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 인증 고유번호
          required: true
          type: string
          x-portone-name: 포트원 인증 고유번호
          x-portone-description: 본인인증 결과로 리턴 받은 포트원 인증 고유번호
      responses:
        '200':
          description: 본인인증결과 조회 성공
          schema:
            $ref: '#/definitions/CertificationResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 본인인증결과를 찾을 수 없음
      x-portone-supported-pgs:
        - danal
        - inicis_unified
        - inicis
        - kcp_v2
      x-portone-category: certification
    delete:
      tags:
        - certifications
      summary: 본인인증 정보삭제 API
      description: 본인인증 결과를 삭제합니다.<br>본인인증 결과정보를 포트원 서버내에서 완전히 삭제하고 싶을 때 요청합니다.
      operationId: deleteCertification
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 인증 고유번호
          required: true
          type: string
          x-portone-name: 포트원 인증 고유번호
          x-portone-description: 본인인증 결과로 리턴받은 포트원 인증 고유번호
      responses:
        '200':
          description: 본인인증결과 삭제 완료
          schema:
            $ref: '#/definitions/CertificationResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 본인인증결과를 찾을 수 없음
        '500':
          description: DB삭제도중 서버 장애 발생
      x-portone-supported-pgs:
        - danal
        - inicis_unified
        - inicis
        - kcp_v2
      x-portone-category: certification
  /certifications/otp/request:
    post:
      tags:
        - certifications
      summary: 본인인증 요청 API
      description: >-
        사용자 개인정보를 API로 전달하여, 통신사로부터 확인되는 경우 OTP(6자리 인증번호)를 사용자에게 SMS로 전달합니다.

        <br><br>통신사 승인을 받은 일부 고객사에 한해 사용하실 수 있으며, 현재 <b>다날</b>, <b>kcp(신모듈)</b>을
        통해서만 서비스되고 있습니다.

        <br><br>본인인증 대상자의 성명, 생년월일 + 주민등록 뒷부분 첫 자리, 휴대폰번호, 통신사 정보를 고객사에서 직접 입력받아
        API요청하면 됩니다. 전달된 개인정보가 올바를 경우 해당 휴대폰으로 인증번호 SMS가 전송됩니다.

        <br><br>200응답 시 imp_uid 가 응답데이터로 전달되며, SMS전송된 인증번호를 본인인증 완료 API 로 요청주시면
        최종 본인인증 프로세스가 완료됩니다.
      operationId: requestOTP
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: name
          in: formData
          description: 본인인증 대상자 성명
          required: true
          type: string
          x-portone-name: 성명
          x-portone-description: 본인인증 대상자 성명
        - name: phone
          in: formData
          description: >-
            본인인증 대상자 전화번호<br>(- 또는 . 과 같은 기호가 포함되어도 무방 - 포트원 내에서 숫자 외에는 정규식으로 모두
            제거처리)
          required: true
          type: string
          x-portone-name: 휴대폰번호
          x-portone-summary: |
            <p>본인인증 대상자 전화번호</p>
          x-portone-description: '- 또는 . 과 같은 기호가 포함되어도 무방 - 포트원 내에서 숫자 외에는 정규식으로 모두 제거처리'
        - name: birth
          in: formData
          description: >-
            본인인증 대상자 생년월일<br> YYMMDD 6자리(연/월/일 사이에 - 또는 . 과 같은 기호가 포함되어도 무방 -
            포트원 내에서 숫자 외에는 정규식으로 모두 제거처리함)
          required: true
          type: string
          x-portone-name: 생년월일
          x-portone-summary: |
            <p>본인인증 대상자 생년월일</p>
          x-portone-description: >-
            `YYMMDD` 6자리(연/월/일 사이에 - 또는 . 과 같은 기호가 포함되어도 무방 - 포트원 내에서 숫자 외에는
            정규식으로 모두 제거처리함)
        - name: gender_digit
          in: formData
          description: >-
            본인인증 대상자 주민등록번호 뒷부분 첫자리(주민등록번호 13자리 중 7번째 자리<br>2000년 이전 출생자는 1 또는
            2, 2000년 이후 출생자는 3 또는 4)

            <br><br> 외국인 고객은 다음 기준에 따라 입력해주세요:

            - 남성: ~1999년생은 5, 2000년 이후 출생자는 7

            - 여성: ~1999년생은 6, 2000년 이후 출생자는 8
          required: true
          type: string
          x-portone-name: 성별구분코드
          x-portone-summary: |
            <p>본인인증 대상자 주민등록번호 뒷부분 첫자리</p>
          x-portone-description: |-
            주민등록번호 13자리 중 7번째 자리

            2000년 이전 출생자는 1 또는 2, 2000년 이후 출생자는 3 또는 4
            <br><br> kcp(신모듈)의 경우 외국인 고객은 다음 기준에 따라 입력해주세요:
            - 남성: ~1999년생은 5, 2000년 이후 출생자는 7
            - 여성: ~1999년생은 6, 2000년 이후 출생자는 8
        - name: carrier
          in: formData
          description: >-
            본인인증 대상자 통신사 코드 (알뜰폰 사용자의 경우, carrier파라메터 SKT, KT, LGT 중 하나를 지정한 후
            <b>is_mvno : true</b> 로 설정)
                                        <ul><li>SKT</li>
                                        <li>KT</li>
                                        <li>LGT</li></ul>
          required: true
          type: string
          enum:
            - SKT
            - KT
            - LGT
          x-portone-name: 통신사구분코드
          x-portone-summary: |
            <p>본인인증 대상자 통신자 코드</p>
          x-portone-description: >-
            알뜰폰 사용자의 경우, carrier파라메터 SKT, KT, LGT 중 하나를 지정한 후 **is_mvno : true**
            로 설정

            - SKT

            - KT

            - LGT
        - name: is_mvno
          in: formData
          description: 본인인증 대상자 알뜰폰 사용 여부
          required: false
          type: boolean
          default: 'false'
          x-portone-name: 알뜰폰 사용 여부
          x-portone-description: 본인인증 대상자 알뜰폰 사용 여부
        - name: company
          in: formData
          description: 고객사 서비스명칭 또는 domain URL. <br> KISA에서 대상자에게 발송하는 SMS에 안내될 서비스 명칭
          required: false
          type: string
          x-portone-name: 고객사 서비스명칭
          x-portone-summary: |
            <p>고객사 서비스명칭 또는 domain URL</p>
          x-portone-description: KISA에서 대상자에게 발송하는 SMS에 안내될 서비스 명칭
        - name: merchant_uid
          in: formData
          description: 본인인증 요청건을 식별하기 위한 고객사 주문번호
          required: false
          type: string
          x-portone-name: 고객사 주문번호
          x-portone-description: 본인인증 요청건을 식별하기 위한 고객사 주문번호
        - name: pg
          in: formData
          description: >-
            PG사 구분자<br>다날 상점아이디를 2개 이상 동시에 사용하시려는 경우 설정하시면 됩니다.
            <b>danal.{상점아이디}</b> 형태로 지정. Deprecated 되었으므로 channelKey 파라미터를
            사용해주세요.
          required: false
          type: string
          x-portone-name: PG사 구분코드(deprecated)
          x-portone-summary: |
            <p>본인인증을 요청하고자 하는 PG사 구분자</p>
          x-portone-description: >-
            다날 상점아이디를 2개 이상 동시에 사용하시려는 경우 설정하시면 됩니다. **danal.{상점아이디}** 형태로 지정.
            Deprecated 되었으므로 channelKey 파라미터를 사용해주세요.
        - name: channelKey
          in: formData
          description: >-
            본인인증을 요청하고자 하는 PG사의 채널키로 kcp(신모듈) 본인인증을 사용하시려는 경우 반드시 channelKey를
            입력해야합니다.
          required: true
          type: string
          x-portone-name: 채널키
          x-portone-summary: |
            <p>본인인증을 요청하고자 하는 PG사의 채널키</p>
          x-portone-description: kcp(신모듈) 본인인증을 사용하시려는 경우 반드시 channelKey를 입력해야합니다.
        - name: verification_method
          in: formData
          description: |-
            본인인증을 진행하고자 하는 방식.
             - SMS
             - APP

            지원하는 pg사
            - kcp(신모듈)
          required: false
          type: string
          enum:
            - SMS
            - APP
          x-portone-name: 본인인증 방식
          x-portone-summary: |
            <p>본인인증을 진행하고자 하는 방식</p>
          x-portone-description: |-
            본인인증을 진행하고자 하는 방식. (현재 kcp(신모듈)만 지원)
            - SMS
            - APP
          x-portone-supported-pgs:
            - kcp_v2
        - name: bypass
          in: formData
          description: >-
            JSON string 형식의 PG사별로 특화된 파라미터. <br>전달 한 값은 가공 없이 그대로 PG사로 전달 됩니다.
            <br>각 PG사별 스펙은 PG사별 연동 문서 참고해주세요
          required: false
          type: string
          x-portone-name: bypass 데이터
          x-portone-summary: |
            <p>JSON string 형식의 PG사별로 특화된 파라미터</p>
          x-portone-description: 전달 한 값은 가공 없이 그대로 PG사로 전달 됩니다. 각 PG사별 스펙은 PG사별 연동 문서 참고해주세요
          x-portone-supported-pgs:
            - kcp_v2
      responses:
        '200':
          description: 본인인증을 위한 대상자 정보 검증 완료(인증번호 SMS전송요청 중)
          schema:
            $ref: '#/definitions/CertificationOTPResponse'
        '400':
          description: 대상자 개인정보 중 일부가 누락되었거나 올바르지 않은 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '500':
          description: 처리 중 다날서버 응답오류 등 오류가 발생한 경우
      x-portone-supported-pgs:
        - danal
        - kcp_v2
      x-portone-category: certification
  '/certifications/otp/confirm/{imp_uid}':
    post:
      tags:
        - certifications
      summary: 본인인증 완료 API
      description: |-
        본인인증 요청 API를 통해 SMS/APP로 전송된 인증번호를 전달하여 본인인증을 완료합니다. <br>
             본인인증이 완료되면 대상자의 이름, 전화번호, 통신사, 성별, 외국인 여부, 생년월일, CI, DI 값을 응답받을 수 있습니다.
      operationId: confirmOTP
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 본인인증 요청 API 요청 후 응답된 인증 고유번호
          required: true
          type: string
          x-portone-name: 포트원 인증 고유번호
          x-portone-description: 본인인증 요청 API 요청 후 응답된 인증 고유번호
        - name: otp
          in: formData
          description: SMS로 전송된 본인인증 번호. KCP (신모듈) APP 방식의 경우에는 해당 값을 전달하지 않습니다.
          required: false
          type: string
          x-portone-name: 본인인증 번호
          x-portone-description: SMS로 전송된 본인인증 번호. KCP (신모듈) APP 방식의 경우에는 해당 값을 전달하지 않습니다.
      responses:
        '200':
          description: 본인인증완료
          schema:
            $ref: '#/definitions/CertificationResponse'
        '400':
          description: 인증번호를 누락하였거나 이미 인증처리가 완료된 건에 대해 재요청하는 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid 에 해당되는 요청건이 없는 경우
        '500':
          description: 처리 중 다날서버 응답오류 등 오류가 발생한 경우
      x-portone-supported-pgs:
        - danal
        - kcp_v2
      x-portone-category: certification
  /subscribe/customers:
    get:
      tags:
        - subscribe.customer
      summary: 빌링키 정보 복수조회 API
      description: |-
        여러 개의 빌링키를 한 번에 조회하는 API입니다.<br><br>등록된 카드마다 1개의 customer_uid가 매핑되므로,
             고객사 시스템 내에 1명의 고객이 여러 장의 카드를 등록할 수 있는 경우 여러 개의 customer_uid를 가지게 됩니다.<br> 해당 고객이 등록해놓은 카드정보 목록을 한 번에 조회하는데 사용하면 편리합니다.
             <br><br>예시) /subscribe/customers?customer_uid[]=hong_1234_a&customer_uid[]=hong_1234_b
      operationId: customer_view_multiple
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: 'customer_uid[]'
          in: query
          description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
          required: true
          type: array
          items:
            type: string
          collectionFormat: multi
          default: customer_1234
          x-portone-name: 구매자의 결제 수단 식별 고유번호
          x-portone-description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
      responses:
        '200':
          description: >-
            요청된 모든 customer_uid 에 대한 빌키정보 응답완료. 조회된 빌링키에 따라 일반
            빌링키(CustomerAnnotation)와 슈퍼 빌링키(SuperBillingKeyAnnotation)를 포함할 수
            있습니다.
          schema:
            $ref: '#/definitions/MultipleCustomersResponse'
        '207':
          description: >-
            요청된 customer_uid 중 일부 빌키정보 조회 실패(ex. 접근권한없음 또는 존재하지 않는
            customer_uid). 조회된 빌링키에 따라 일반 빌링키(CustomerAnnotation)와 슈퍼
            빌링키(SuperBillingKeyAnnotation)를 포함할 수 있습니다.
          schema:
            $ref: '#/definitions/MultipleCustomersResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 유효하지 않은 customer_uid
      x-portone-supported-pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - payco
        - paymentwall
        - settle
        - settle_acc
        - settle_firm
        - smartro_v2
        - tosspayments
        - paypal_v2
        - welcome
        - tosspay_v2
      x-portone-category: billingkey
      x-portone-per-pg:
        paypal_v2:
          description: >-
            <p>연동 유의사항</p>

            <p>빌링키 발급 수단 및 정보를 알 수 없음</p>

            <p>페이팔을 통해 다양한 수단으로 빌링키 발급이 가능하지만, 페이팔이 승인 된 빌링키 발급 수단 및 정보를 알려주지
            않습니다.

            따라서 페이팔 빌링키 발급 건의 결제 수단(pay_method)은 모두 <strong>paypal</strong>로 일괄
            저장되며 발급 된 빌링키 정보 조회시 카드 정보는 모두 <strong>null</strong>로 내려갑니다.</p>

            <pre><code>\\ GET /subscribe/customers/{customer_uid}

            {
                ...중략
                pg_provider: 'paypal_v2',
                customer_uid: '{customer_uid}'
                card_name: null,
                card_code: null,
                card_number: null,
                card_type: null,
            }</code></pre>
  '/subscribe/customers/{customer_uid}':
    get:
      tags:
        - subscribe.customer
      summary: 빌링키 정보 단건조회 API
      description: 구매자의 빌링키 정보 조회
      operationId: customer_view
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: customer_uid
          in: path
          description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
          required: true
          type: string
          default: customer_1234
          x-portone-name: 구매자의 결제 수단 식별 고유번호
          x-portone-description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
      responses:
        '200':
          description: >-
            정상 조회 시, 일반 빌링키 조회는 CustomerResponse를 반환하며, 슈퍼 빌링키 조회는
            SuperBillingKeyResponse를 반환합니다.
          schema:
            properties:
              CustomerResponse:
                $ref: '#/definitions/CustomerResponse'
              SuperBillingKeyResponse:
                $ref: '#/definitions/SuperBillingKeyResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 유효하지 않은 customer_uid
      x-portone-supported-pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - payco
        - paymentwall
        - settle
        - settle_acc
        - settle_firm
        - smartro_v2
        - tosspayments
        - paypal_v2
        - nice_v2
        - welcome
        - tosspay_v2
      x-portone-category: billingkey
      x-portone-per-pg:
        paypal_v2:
          description: >-
            <p>연동 유의사항</p>

            <p>빌링키 발급 수단 및 정보를 알 수 없음</p>

            <p>페이팔을 통해 다양한 수단으로 빌링키 발급이 가능하지만, 페이팔이 승인 된 빌링키 발급 수단 및 정보를 알려주지
            않습니다.

            따라서 페이팔 빌링키 발급 건의 결제 수단(pay_method)은 모두 <strong>paypal</strong>로 일괄
            저장되며 발급 된 빌링키 정보 조회시 카드 정보는 모두 <strong>null</strong>로 내려갑니다.</p>

            <pre><code>\\ GET /subscribe/customers/{customer_uid}

            {
                ...중략
                pg_provider: 'paypal_v2',
                customer_uid: '{customer_uid}'
                card_name: null,
                card_code: null,
                card_number: null,
                card_type: null,
            }</code></pre>
    post:
      tags:
        - subscribe.customer
      summary: 빌링키 발급 API
      description: |-
        구매자에 대해 빌링키 발급 및 저장 <br> 해당 빌링키 발급 API는 PG사와 협의가 완료된 경우 이용 가능한 서비스입니다.
                                <ul> <li>PG사 협의를 통해 카드정보 필수 조건 값 조정이 가능합니다.</li>
                                <li>민감한 카드정보를 이용하기 때문에 보안에 특히 유의하셔야 합니다.</li>
                                <li>customer_uid 값은 <b>고객 & 카드번호</b> 단위별로 고유하게 발급 관리되어야 합니다</li>
                                </ul>
      operationId: customer_save
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: customer_uid
          in: path
          description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
          required: true
          type: string
          default: customer_1234
          maxLength: 80
          x-portone-name: 구매자의 결제 수단 식별 고유번호
          x-portone-description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
        - name: pg
          in: formData
          description: >-
            API 방식 비인증 PG설정이 2개 이상인 경우, 결제가 진행되길 원하는 PG사를 지정하실 수 있습니다. pg 파라메터는
            <b>{PG사}</b> 혹은 <b>{PG사}.{PG상점아이디}</b> 형태의 문자열입니다. <br>지정하지 않거나 유효하지
            않은 값이 전달되면 기본PG설정된 값을 이용해 결제하게 됩니다. <br><ul><li>나이스페이먼츠, KCP 2가지
            PG설정이 되어있다면, pg 파라메터로 <b>nice</b> 또는 <b>kcp</b>로 구분
            가능</li><li>나이스페이먼츠로부터 2개 이상의 상점아이디를 발급받았다면, <b>nice.MID1</b> 또는
            <b>nice.MID2</b>로 구분 가능</li></ul>
          required: false
          type: string
          maxLength: 80
          x-portone-name: PG 구분코드
          x-portone-description: 빌링키 발급을 받고자 하는 PG사 구분코드
        - name: customer_id
          in: formData
          description: '구매자 식별 고유 번호 (필수 : 토스페이먼츠)'
          required: false
          type: string
          x-portone-name: 구매자 ID
          x-portone-description: 구매자 식별 고유 번호
          x-portone-per-pg:
            tosspayments:
              required: true
              description: |
                <p>customer_id는 optional이기 때문에 보내지 않아도 동작은 하지만 보내지 않으면
                     (포트원이 빌링키 발급 요청시마다 customer_id에 uuid값을 채번하기 때문에)
                    구매자와 결제수단은 매칭되지 않으니 유념하시기 바랍니다.</p>
        - name: card_number
          in: formData
          description: 카드번호(dddd-dddd-dddd-dddd)
          required: true
          type: string
          x-portone-name: 카드번호
          x-portone-description: 빌링키 발급 하고자 하는 카드의 번호(`dddd-dddd-dddd-dddd`)
        - name: expiry
          in: formData
          description: 카드 유효기간(YYYY-MM)
          required: true
          type: string
          x-portone-name: 카드 유효기간
          x-portone-description: 빌링키 발급 하고자 하는 카드 유효기간(`YYYY-MM`)
        - name: birth
          in: formData
          description: 생년월일6자리(법인카드의 경우 사업자등록번호10자리)<br> PG사별로 혹은 계약상황에따라 필수값 여부가 상이합니다.
          required: false
          type: string
          x-portone-name: 생년월일
          x-portone-summary: |
            <p>생년월일6자리</p>
          x-portone-description: |-
            법인카드의 경우 사업자등록번호10자리

            PG사별로 혹은 계약상황에따라 필수값 여부가 상이합니다.
          x-portone-per-pg:
            ksnet:
              required: true
        - name: pwd_2digit
          in: formData
          description: 카드비밀번호 앞 2자리로 PG사별로 혹은 계약상황에 따라 필수값 여부가 상이합니다.
          required: false
          type: string
          x-portone-name: 카드비밀번호 앞 2자리
          x-portone-summary: |
            <p>빌링키 발급 하고자 하는 카드비밀번호 앞 2자리</p>
          x-portone-description: PG사별 혹은 계약상황에 따라 필수값 여부가 상이합니다.
          x-portone-per-pg:
            ksnet:
              required: true
        - name: cvc
          in: formData
          description: '카드 인증번호 (카드 뒷면 3자리, AMEX의 경우 4자리). Paymentwall에서만 사용'
          required: false
          type: string
          x-portone-name: 카드 인증번호
          x-portone-description: '빌링키 발급 받고자 하는 카드 카드 뒷면 3자리, AMEX의 경우 4자리'
          x-portone-supported-pgs:
            - paymentwall
          x-portone-per-pg:
            paymentwall:
              required: true
        - name: customer_name
          in: formData
          description: 고객(카드소지자) 관리용 성함
          required: false
          type: string
          maxLength: 20
          x-portone-name: 카드소유자명
          x-portone-description: 고객(카드소지자) 관리용 성함
          x-portone-per-pg:
            welcome:
              required: true
        - name: customer_tel
          in: formData
          description: 고객(카드소지자) 전화번호
          required: false
          type: string
          maxLength: 20
          x-portone-name: 카드소유자 연락처
          x-portone-description: 고객(카드소지자) 전화번호
        - name: customer_email
          in: formData
          description: 고객(카드소지자) Email
          required: false
          type: string
          maxLength: 200
          x-portone-name: 카드소유자 이메일주소
          x-portone-description: 고객(카드소지자) Email
        - name: customer_addr
          in: formData
          description: 고객(카드소지자) 주소
          required: false
          type: string
          maxLength: 200
          x-portone-name: 카드소유자 주소
          x-portone-description: 고객(카드소지자) 주소
        - name: customer_postcode
          in: formData
          description: 고객(카드소지자) 우편번호
          required: false
          type: string
          maxLength: 8
          x-portone-name: 카드소유자 우편번호
          x-portone-description: 고객(카드소지자) 우편번호
        - name: channelGroupId
          in: formData
          description: >-
            <ul><li>관리자 콘솔의 [연동관리] -> [스마트 라우팅] 메뉴에서 확인할 수 있습니다.</li> <li> 스마트
            라우팅 그룹 ID를 지정하여 결제를 요청하면, 스마트 라우팅 그룹 내 활성화 된 모든 채널로 빌링키 발급 요청을 합니다.
            <br>이때, pg 파라메터는 무시됩니다.</li></ul>
          required: false
          type: string
          maxLength: 55
          x-portone-name: 스마트 라우팅 그룹 ID
          x-portone-description: 스마트 라우팅 그룹 내 활성화 된 모든 채널로 빌링키 발급 요청을 합니다.
      responses:
        '200':
          description: >-
            정상 등록 시, 일반 빌링키 발급은 CustomerResponse를 반환하며, channelGroupId를 이용한 슈퍼
            빌링키 발급은 SuperBillingKeyResponse를 반환합니다.
          schema:
            properties:
              CustomerResponse:
                $ref: '#/definitions/CustomerResponse'
              SuperBillingKeyResponse:
                $ref: '#/definitions/SuperBillingKeyResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - nice
        - kcp
        - daou
        - html5_inicis
        - tosspayments
        - ksnet
        - nice_v2
        - welcome
      x-portone-category: billingkey
    delete:
      tags:
        - subscribe.customer
      summary: 빌링키 삭제 API
      description: >-
        구매자의 빌링키 정보 삭제<br> 빌링키 삭제시 결제예약된 내역이 존재하는지 반드시 확인하셔야 합니다. <br> 삭제된 빌링키는
        복구할 수 없습니다.
      operationId: customer_delete
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: customer_uid
          in: path
          description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
          required: true
          type: string
          default: customer_1234
          x-portone-name: 구매자의 결제 수단 식별 고유번호
          x-portone-description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
        - name: reason
          in: query
          description: 삭제사유
          required: false
          type: string
          x-portone-name: 삭제 사유
          x-portone-description: 빌링키를 삭제하려는 사유
        - name: 'extra[requester]'
          in: query
          description: 삭제 요청자(네이버페이에서만 사용)
          required: false
          type: string
          default: admin
          x-portone-name: 삭제 요청자
          x-portone-description: 빌링키 삭제 요청자
          x-portone-supported-pgs:
            - naverpay
      responses:
        '200':
          description: >-
            정상 삭제 시, 일반 빌링키 삭제는 CustomerResponse를 반환하며, 슈퍼 빌링키 삭제는
            SuperBillingKeyResponse를 반환합니다.
          schema:
            properties:
              CustomerResponse:
                $ref: '#/definitions/CustomerResponse'
              SuperBillingKeyResponse:
                $ref: '#/definitions/SuperBillingKeyResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 유효하지 않은 customer_uid
      x-portone-supported-pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - payco
        - paymentwall
        - settle
        - settle_acc
        - settle_firm
        - smartro_v2
        - tosspayments
        - paypal_v2
        - nice_v2
        - welcome
        - tosspay_v2
      x-portone-category: billingkey
  '/subscribe/customers/{customer_uid}/payments':
    get:
      tags:
        - subscribe.customer
      summary: 빌링키 결제 복수조회 API (빌링키 결제 내역 확인)
      description: 구매자의 빌링키로 결제된 결제목록을 조회합니다.
      operationId: customer_payments
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: customer_uid
          in: path
          description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
          required: true
          type: string
          default: customer_1234
          x-portone-name: 구매자의 결제 수단 식별 고유번호
          x-portone-description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
        - name: page
          in: query
          description: 조회목록 페이징. 1부터 시작
          required: false
          type: integer
          default: '1'
          x-portone-name: 조회목록 페이징
          x-portone-description: 조회목록 페이징으로 기본값은 1입니다.
      responses:
        '200':
          description: 정상 조회
          schema:
            $ref: '#/definitions/PaymentListResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 유효하지 않은 customer_uid
      x-portone-supported-pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - payco
        - paymentwall
        - settle
        - settle_acc
        - settle_firm
        - smartro_v2
        - tosspayments
        - paypal_v2
        - nice_v2
        - welcome
        - tosspay_v2
      x-portone-category: billingkey
  '/subscribe/customers/{customer_uid}/schedules':
    get:
      tags:
        - subscribe.customer
      summary: 빌링키 결제예약 조회 API
      description: >-
        결제예약 복수조회(빌키) API와 동일한 동작을 하는 API입니다.<br><br>customer_uid별 결제예약목록을 조회할 수
        있습니다. 결제예약정보가 (페이징된)목록으로 전달되며, 최대 3개월 단위로 조회가 가능합니다.<br><br>결제예약정보가 예약된
        시각 기준으로 최신순으로 정렬되어 전달됩니다.
      operationId: findSchedulesByCustomer
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: customer_uid
          in: path
          description: 결제예약에 사용된 구매자의 결제 수단 식별 고유번호
          required: true
          type: string
          x-portone-name: 구매자의 결제 수단 식별 고유번호
          x-portone-description: 결제예약에 사용된 구매자의 결제 수단 식별 고유번호
        - name: page
          in: query
          description: '조회목록 페이징. <br>1부터 시작하며, 기본값은 1입니다.'
          required: false
          type: integer
          x-portone-name: 조회목록 페이징
          x-portone-description: 조회목록 페이징으로 기본값은 1입니다.
        - name: from
          in: query
          description: 조회 시작시각 <br>unix timestamp(결제예약건의 '예약시각'기준으로 조회합니다. from <= '예약시각')
          required: true
          type: integer
          x-portone-name: 조회 시작시각
          x-portone-description: unix timestamp(결제예약건의 '예약시각'기준으로 조회합니다. from <= '예약시각')
        - name: to
          in: query
          description: 조회 종료시각 <br>unix timestamp(결제예약건의 '예약시각'기준으로 조회합니다. '예약시각' < to)
          required: true
          type: integer
          x-portone-name: 조회 종료시각
          x-portone-description: unix timestamp(결제예약건의 '예약시각'기준으로 조회합니다. '예약시각' < to)
        - name: schedule-status
          in: query
          description: |-
            예약상태. 누락되면 모든 상태의 예약내역 조회
                                        <ul> <li>scheduled: 예약됨(실행되기 전)</li>
                                        <li>executed: 예약된 결제실행완료</li>
                                        <li>revoked: 예약철회</li></ul>
          required: false
          type: string
          enum:
            - scheduled
            - executed
            - revoked
          x-portone-name: 예약상태
          x-portone-description: 조회 하고자 하는 예약 상태
      responses:
        '200':
          description: 결제예약목록 조회완료
          schema:
            $ref: '#/definitions/ScheduleResponse'
        '400':
          description: 검색 파라메터가 유효하지 않은 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - payco
        - paymentwall
        - settle
        - settle_acc
        - settle_firm
        - smartro_v2
        - tosspayments
        - paypal_v2
        - nice_v2
        - welcome
        - tosspay_v2
      x-portone-category: billingkey
  /cvs:
    post:
      tags:
        - cvs
      summary: 수납번호 발급 API
      description: >-
        편의점결제를 위한 수납번호(barcode)를 사전 발급 또는 등록합니다. 고객은 발급 또는 등록된 수납번호(barcode)에
        해당되는 바코드 이미지 또는 수납번호를 편의점 방문시 제시함으로써 현장 결제가 이뤄지게 됩니다.
      operationId: issueCvsPayment
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: formData
          description: |-
            고객사 주문번호<br>
                 이미 결제가 이뤄진 적이 있는 merchant_uid로는 추가적인 편의점결제 수납번호(barcode) 발급 또는 등록이 불가능합니다.
          required: true
          type: string
          maxLength: 40
          x-portone-name: 고객사 주문번호
          x-portone-summary: |
            <p>고객사 거래 고유번호</p>
          x-portone-description: >-
            이미 결제가 이뤄진 적이 있는 merchant_uid로는 추가적인 편의점결제 수납번호(barcode) 발급 또는 등록이
            불가능합니다.
        - name: amount
          in: formData
          description: 결제금액
          required: true
          type: number
          x-portone-name: 결제금액
          x-portone-description: 결제하고자 하는 금액
        - name: barcode
          in: formData
          description: >-
            고객사에서 직접 생성, 관리하는 바코드(barcode)번호가 있는 경우, 갤럭시아컴즈로부터 신규 수납번호(barcode)를
            발급요청하지 않고 고객사에서 관리하는 바코드(barcode)번호를 등록하여 수납번호로 활용할 수 있습니다.
          required: false
          type: string
          x-portone-name: 바코드
          x-portone-description: >-
            고객사에서 직접 생성, 관리하는 바코드(barcode)번호가 있는 경우, 갤럭시아컴즈로부터 신규 수납번호(barcode)를
            발급요청하지 않고 고객사에서 관리하는 바코드(barcode)번호를 등록하여 수납번호로 활용할 수 있습니다.
        - name: expired_at
          in: formData
          description: 편의점 수납가능한 결제기한(Unix Timestamp). 정의하지 않으면 갤럭시아컴즈와 계약시 협의한 기본값이 적용됩니다.
          required: false
          type: integer
          x-portone-name: 편의점 수납가능한 결제기한
          x-portone-description: 편의점 수납가능한 결제기한(Unix Timestamp). 정의하지 않으면 갤럭시아컴즈와 계약시 협의한 기본값이 적용됩니다.
        - name: name
          in: formData
          description: 주문명
          required: false
          type: string
          maxLength: 40
          x-portone-name: 주문명
          x-portone-description: 주문명
        - name: buyer_name
          in: formData
          description: 주문자명
          required: false
          type: string
          maxLength: 16
          x-portone-name: 주문자명
          x-portone-description: 주문자의 이름
        - name: buyer_email
          in: formData
          description: 주문자 Email주소
          required: false
          type: string
          maxLength: 64
          x-portone-name: 주문자 Email 주소
          x-portone-description: 주문자 Email 주소
        - name: buyer_tel
          in: formData
          description: 주문자 전화번호
          required: false
          type: string
          maxLength: 16
          x-portone-name: 주문자 전화번호
          x-portone-description: 주문자 전화번호
        - name: buyer_addr
          in: formData
          description: 주문자 주소
          required: false
          type: string
          maxLength: 128
          x-portone-name: 주문자 주소
          x-portone-description: 주문자의 주소
        - name: buyer_postcode
          in: formData
          description: 주문자 우편번호
          required: false
          type: string
          maxLength: 8
          x-portone-name: 주문자 우편번호
          x-portone-description: 주문자의 우편번호
        - name: pg
          in: formData
          description: >-
            PG 구분코드. 갤럭시아컴즈 상점아이디를 2개 이상 동시에 사용하시려는 경우 설정하시면 됩니다.
            <b>galaxia.{상점아이디}</b> 형태로 지정
          required: false
          type: string
          x-portone-name: PG 구분코드
          x-portone-description: 결제 하고자 하는 PG사 구분코드
        - name: confirm_url
          in: formData
          description: |-
            고객이 편의점결제 수납시도 시 수납가능여부를 체크하기 위한 URL<br>
                 설정하지 않은 결제에 대해서는 항상 수납가능으로 간주하고 수납성공진행 됩니다.<br>
                 설정된 결제에 대해서는 해당 URL로 아래와 같은 형식의 데이터가 Webhook(HTTP POST)으로 전송되며 200응답 == 수납가능 / 그 외응답 == 수납불가 처리
            <pre>{
                event : 'Galaxia.Cvs.Confirm',
                imp_uid : 'imp_123412341234',
                merchant_uid : 'asdfasdfasdf',
                status : 'ready',
                extra : {
                    barcode : '11222222',
                    payType : 'card' //card or cash
                }
            }</pre>
          required: false
          type: string
          x-portone-name: 수납가능여부 체크 URL
          x-portone-description: 고객이 편의점결제 수납시도 시 수납가능여부를 체크하기 위한 URL
        - name: notice_url
          in: formData
          description: |-
            편의점결제 수납성공 시 통지받을 URL<br>
                 선언되지 않으면 포트원 관리자 페이지에 정의된 Notification URL값을 사용
          required: false
          type: array
          x-portone-name: Notification URL(Webhook URL)
          x-portone-description: 편의점결제 수납성공 시 통지받을 URL
        - name: custom_data
          in: formData
          description: 결제정보와 함께 저장할 custom_data. 객체로 전달되는 경우 JSON 문자열로 저장
          required: false
          type: string
          x-portone-name: 추가정보
          x-portone-description: 결제정보와 함께 저장할 custom_data. 객체로 전달되는 경우 JSON 문자열로 저장
      responses:
        '200':
          description: 편의점결제 수납번호(barcode) 생성 완료
          schema:
            $ref: '#/definitions/PaymentResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - galaxia
      x-portone-category: etc.cvs
  '/cvs/{imp_uid}':
    delete:
      tags:
        - cvs
      summary: 수납취소 API
      description: >-
        고객에게 이미 발급/등록된 편의점결제 수납번호(barcode)가 아직 수납 전일 때, 재고소진 등에 상황에 따라 해당
        수납번호(barcode)로 결제가 이뤄지지 않도록 말소처리하는 API입니다.
      operationId: revokeCvsPayment
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 편의점결제 수납번호(barcode) 발급/등록된 포트원 거래고유번호
          required: true
          type: string
          x-portone-description: 편의점결제 수납번호(barcode) 발급/등록된 포트원 거래고유번호
          x-portone-name: 포트원 거래고유번호
      responses:
        '200':
          description: 편의점결제 수납번호(barcode) 말소 완료
          schema:
            $ref: '#/definitions/PaymentResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - galaxia
      x-portone-category: etc.cvs
  '/escrows/logis/{imp_uid}':
    get:
      tags:
        - escrow.logis
      summary: 배송정보 단건조회 API
      description: "에스크로 결제 건에 대한 배송정보 조회<br>\n\t 입력한 배송정보를 획득합니다.<br><br>\n\t 택배사 코드표 : https://developers.portone.io/docs/ko/tip/code\n\t <h4>지원되는 PG사</h4>\n\t <ul> <li>KG이니시스</li> <li>NHN KCP</li> <li>키움페이(구 다우, 페이조아)(다우테이타)</li> <li>KSNET</li> <li>스마트로 - 신모듈(PG사와의 사전 계약이 반드시 필요합니다.)</li><li>(신) 나이스페이</li><li>웰컴페이먼츠</li></ul>"
      operationId: escrow_logis_get
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 거래고유번호
          required: true
          type: string
          default: imp_12345678912
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 배송정보를 조회하고자 하는 에스크로 결제건의 포트원 거래고유번호
      responses:
        '200':
          description: 정상 조회
          schema:
            $ref: '#/definitions/EscrowLogisResponse'
        '400':
          description: '필수 파라메터가 누락되거나 (PG사별로 필수 여부가 다를 수 있음), 지원하는 않는 PG사인 경우'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 배송정보를 조회할 거래건이 존재하지 않음
        '409':
          description: 등록된 배송정보가 존재하지 않습니다.
        '500':
          description: 배송정보 조회 도중 오류 발생
      x-portone-supported-pgs:
        - html5_inicis
        - kcp
        - daou
        - ksnet
        - smartro_v2
        - nice_v2
        - welcome
      x-portone-category: escrow
    put:
      tags:
        - escrow.logis
      summary: 배송정보 단건수정 API
      description: >-
        에스크로 결제 건에 대해서 PUT /escrows/logis/{imp_uid} 로 등록된 배송정보를 수정하는 API
        입니다.(2-depth의 json으로 Request Body가 구성되어야 합니다)<br><br>
             logis는 하위 필드가 모두 필수입니다.<br>sender, receiver의 각 세부 항목은 PG사마다 필수 여부가 모두 다릅니다.<br><br>
             <h4>지원되는 PG사</h4>
             <ul> <li>KG이니시스</li> <li>키움페이(구 다우, 페이조아)(다우테이타)</li> <li>KSNET</li> <li>스마트로 - 신모듈 (PG사와의 사전 계약이 반드시 필요합니다.)</li> <li>웰컴페이먼츠</li></ul>
      operationId: escrow_logis_edit
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 거래고유번호
          required: true
          type: string
          default: imp_12345678912
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 배송정보를 수정하고자 하는 에스크로 결제건의 포트원 거래고유번호
        - name: sender
          in: formData
          description: 발신자 정보
          required: true
          schema:
            $ref: '#/definitions/EscrowLogisSenderAnnotation'
          type: string
          x-portone-name: 발신자 정보
          x-portone-description: '배송을 보내는 발신자의 정보(**이름, 연락처, 주소, 우편번호, 수신자와의 관계**)'
        - name: receiver
          in: formData
          description: 수신자 정보
          required: true
          schema:
            $ref: '#/definitions/EscrowLogisReceiverAnnotation'
          type: string
          x-portone-name: 수신자 정보
          x-portone-description: '배송을 받는 수신자의 정보(**이름, 연락처, 주소, 우편번호**)'
        - name: logis
          in: formData
          description: >-
            배송정보<br>택배사코드표는 <a
            href="https://developers.portone.io/docs/ko/tip/code">메뉴얼</a> 참조
          required: true
          schema:
            $ref: '#/definitions/EscrowLogisInfoAnnotation'
          type: string
          x-portone-name: 배송정보
          x-portone-description: '택배사코드표는 [메뉴얼](https://developers.portone.io/docs/ko/tip/code) 참조'
        - name: products
          in: formData
          description: '배송 상품 정보 (필수 : 웰컴페이먼츠)'
          required: false
          type: array
          items:
            $ref: '#/definitions/EscrowLogisProductsAnnotation'
          collectionFormat: multi
          x-portone-name: 배송 상품 정보
          x-portone-description: '배송 보내는 상품의 정보 **(고유 아이디, 이름, 고유 코드, 통화코드, 수량, 카테고리)**'
          x-portone-supported-pgs:
            - welcome
          x-portone-per-pg:
            welcome:
              required: true
      responses:
        '200':
          description: 수정 완료
          schema:
            $ref: '#/definitions/EscrowLogisResponse'
        '400':
          description: '필수 파라메터가 누락되거나 (PG사별로 필수 여부가 다를 수 있음), 지원하는 않는 PG사인 경우'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 배송정보를 수정할 거래건이 존재하지 않음
        '405':
          description: POST요청이 아닌 경우
        '409':
          description: 해당거래건은 배송정보를 수정할 수 없는 경우
        '500':
          description: 배송정보 수정 도중 오류 발생
      x-portone-supported-pgs:
        - html5_inicis
        - kcp
        - daou
        - ksnet
        - smartro_v2
        - welcome
      x-portone-category: escrow
    post:
      tags:
        - escrow.logis
      summary: 배송정보 단건등록 API
      description: |-
        에스크로 결제 건에 대한 배송정보 등록(2-depth의 json으로 Request Body가 구성되어야 합니다)<br><br>
             logis는 하위 필드가 모두 필수입니다.<br>sender, receiver의 각 세부 항목은 PG사마다 필수 여부가 모두 다릅니다.<br><br>
             <h4>지원되는 PG사</h4><ul> <li>KG이니시스</li> <li>NHN KCP</li> <li>키움페이(구 다우, 페이조아)(다우테이타)</li> <li>KSNET</li>  <li>스마트로 - 신모듈(PG사와의 사전 계약이 반드시 필요합니다.)</li><li>(신) 나이스페이</li><li>웰컴페이먼츠</li></ul>
      operationId: escrow_logis_save
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 거래고유번호
          required: true
          type: string
          default: imp_12345678912
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 배송정보를 등록하고자 하는 에스크로 결제건의 포트원 거래고유번호
        - name: sender
          in: formData
          description: 발신자 정보
          required: true
          schema:
            $ref: '#/definitions/EscrowLogisSenderAnnotation'
          type: string
          x-portone-name: 발신자 정보
          x-portone-description: '배송을 보내는 발신자의 정보(**이름, 연락처, 주소, 우편번호, 발신자와의 관계**)'
        - name: receiver
          in: formData
          description: 수신자 정보
          required: true
          schema:
            $ref: '#/definitions/EscrowLogisReceiverAnnotation'
          type: string
          x-portone-name: 수신자 정보
          x-portone-description: '배송을 받는 수신자의 정보(**이름, 연락처, 주소, 우편번호**)'
        - name: logis
          in: formData
          description: >-
            배송정보<br>택배사코드표는 <a
            href="https://developers.portone.io/docs/ko/tip/code">메뉴얼</a> 참조
          required: true
          schema:
            $ref: '#/definitions/EscrowLogisInfoAnnotation'
          type: string
          x-portone-name: 배송정보
          x-portone-description: '택배사코드표는 [매뉴얼](https://developers.portone.io/docs/ko/tip/code) 참조'
        - name: products
          in: formData
          description: '배송 상품 정보 (필수 : 웰컴페이먼츠)'
          required: false
          type: array
          items:
            $ref: '#/definitions/EscrowLogisProductsAnnotation'
          collectionFormat: multi
          x-portone-name: 배송 상품 정보
          x-portone-description: '배송 보내는 상품의 정보(고유 아이디, 이름, 고유 코드, 통화코드, 수량, 카테고리)'
          x-portone-supported-pgs:
            - welcome
          x-portone-per-pg:
            welcome:
              required: true
        - name: send_email
          in: formData
          description: '에스크로 구매 확정시 결제 창에 입력했던 이메일로 해당 사실을 전송할지 여부(기본값: true)'
          required: false
          type: boolean
          default: true
          x-portone-name: 구매확정 시 Email 전송여부
          x-portone-description: '에스크로 구매 확정시 결제 창에 입력했던 이메일로 해당 사실을 전송할지 여부 (기본값 : **true**)'
          x-portone-supported-pgs:
            - nice_v2
          x-portone-per-pg:
            nice_v2:
              description: >
                <p>에스크로 결제건에 대해 배송 정보 등록 API 호출 시 <code>send_email</code> 파라미터를
                이용하여
                     구매 확정됐을 때 결제창에 입력한 이메일로 구매 확정 내용을 전송할지 여부를 제어할 수 있습니다. 기본 값은 true(구매 확정 여부 이메일 전송)이며 false로 입력 시 구매가 확정되어도 이메일로 안내되지 않습니다.</p>
      responses:
        '200':
          description: 등록 완료
          schema:
            $ref: '#/definitions/EscrowLogisResponse'
        '400':
          description: '필수 파라메터가 누락되거나 (PG사별로 필수 여부가 다를 수 있음), 지원하는 않는 PG사인 경우'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 배송정보를 등록할 거래건이 존재하지 않음
        '405':
          description: POST요청이 아닌 경우
        '409':
          description: '이미 배송정보 등록이 완료됨, 해당거래건은 배송정보를 등록할 수 없는경우'
        '500':
          description: 배송정보 등록 도중 오류 발생
      x-portone-supported-pgs:
        - html5_inicis
        - kcp
        - daou
        - ksnet
        - smartro_v2
        - nice_v2
        - welcome
      x-portone-category: escrow
      x-portone-per-pg:
        ksnet:
          description: >
            <p>KSNET에서 일반 에스크로, 배송 에스크로 두 가지 유형의 에스크로를 제공합니다. 포트원을 통해 KSNET
            에스크로를 사용하려는 경우 반드시 <strong>배송 에스크로</strong> 설정이 되어 있어야 합니다.</p>

            <p>또한 에스크로 거래는 30분 ~ 1시간 뒤 <a
            href="https://ksta.ksnet.co.kr/ui/tsk/ath01/cob/athcob01m0.jsp"
            rel="noopener noreferrer">ksta.ksnet.co.kr</a> -&gt; PG 거래내역 -&gt;
            배송 에스크로 거래조회에서 확인이 가능합니다. 에스크로 정보 수정의 경우도 등록이 완료된 이후부터 가능합니다.</p>
        nice_V2:
          description: >
            <p>API로 에스크로 배송 정보 등록은 가능하지만 PUT 배송정보 단건수정 API로 수정은
            <span>불가능</span>합니다.</p>
  '/kcpquick/members/{member_id}':
    delete:
      tags:
        - kcpquick
      summary: (KCP 퀵페이) 구매자 정보 단건 삭제 API
      description: |-
        구매자의 KCP 퀵페이 정보 삭제합니다. <br>(KCP 퀵페이 정보를 DB에서 물리적삭제 합니다) <br>
                                <b>Accept 설정 필수</b>
                                <br>http header 에 아래와 같이 Accept 를 설정하셔야 합니다.
                                <br>Accept : application/json
      operationId: member_delete
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: member_id
          in: path
          description: 구매자 고유 아이디(memberID)
          required: true
          type: string
          default: memberID
          x-portone-name: 구매자 고유 아이디
          x-portone-description: 삭제 하고자 하는 구매자 고유 아이디(memberID)
        - name: site_code
          in: query
          description: KCP 퀵페이 등록 시 사용한 사이트 코드(SITE CD).
          required: true
          type: string
          default: IX0XX
          maxLength: 80
          x-portone-name: 사이트 코드
          x-portone-description: KCP 퀵페이 등록 시 사용한 사이트 코드(SITE CD)
        - name: partner_type
          in: query
          description: KCP 퀵페이 등록 시 사용한 파트너 타입.
          required: true
          type: string
          default: IX99
          maxLength: 80
          x-portone-name: 파트너 타입
          x-portone-description: KCP 퀵페이 등록 시 사용한 파트너 타입
        - name: partner_subtype
          in: query
          description: KCP 퀵페이 등록 시 사용한 파트너 서브타입.
          required: true
          type: string
          default: 99IX
          maxLength: 80
          x-portone-name: 파트너 서브타입
          x-portone-description: KCP 퀵페이 등록 시 사용한 파트너 서브타입
      responses:
        '200':
          description: 정상 삭제
          schema:
            $ref: '#/definitions/KcpQuickMemberResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 유효하지 않은 member_id
      x-portone-supported-pgs:
        - kcp_quick
      x-portone-category: pg.kcpquick
  /kcpquick/payment/money:
    post:
      tags:
        - kcpquick
      summary: KCP 선불머니 결제 API
      description: ''
      operationId: payWithMoney
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: member_id
          in: formData
          description: KCP 간편결제 유저 아이디
          required: true
          type: string
          default: member_id
          maxLength: '16'
          x-portone-name: 'KCP 퀵페이, 선불머니 서비스 유저 아이디'
          x-portone-description: 결제를 진행할 KCP 선불머니 결제서비스 유저 아이디
        - name: channel_key
          in: formData
          description: KCP 선불머니 결제 시 사용할 채널의 채널키
          required: true
          type: string
          x-portone-name: 채널키
          x-portone-description: KCP 선불머니 결제 시 사용할 채널의 채널키
        - name: merchant_uid
          in: formData
          description: 결제 요청할 거래의 고객사 주문번호
          required: true
          type: string
          maxLength: 40
          x-portone-name: 고객사 주문번호
          x-portone-description: 결제 요청할 거래의 고객사 주문번호
        - name: name
          in: formData
          description: 결제 요청할 거래의 주문명
          required: true
          type: string
          maxLength: 40
          x-portone-name: 주문명
          x-portone-description: 결제 요청할 거래의 주문명
        - name: amount
          in: formData
          description: 결제 요청할 금액
          required: true
          type: integer
          x-portone-name: 결제금액
          x-portone-description: 결제 요청할 금액
        - name: notice_url
          in: formData
          description: 결제 승인 성공 후 결과를 수신할 웹훅 URL
          required: false
          type: string
          x-portone-name: 결제 결과 수신 웹훅 URL
          x-portone-description: 결제 승인 성공 후 결과를 수신할 웹훅 URL
      responses:
        '200':
          description: 응답
          schema:
            $ref: '#/definitions/PaymentResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - kcp_quick
      x-portone-category: pg.kcpquick
  '/payments/{imp_uid}/naver/cancel':
    post:
      tags:
        - naver
      summary: (주문형-네이버페이) 네이버페이 주문환불 API
      description: >-
        (주문형-네이버페이) 네이버페이 상품주문들을 환불처리합니다.<br> 주문상품의 종류가 여러 개인 경우, 한 건의 포트원
        거래건(imp_uid)에 여러 개의 네이버페이 상품주문이 존재하며 일부 또는 전체를 환불처리할 수 있습니다.
             시도된 상품주문 중 <b>환불처리에 성공한 상품주문</b>에 대한 최종 정보만 제공됩니다.
      operationId: naverCancelProductOrder
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 환불할 거래건의 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 환불할 거래건의 포트원 거래고유번호
        - name: product_order_id
          in: formData
          description: 네이버페이 환불할 거래건의 네이버페이 상품주문번호로 생략되면 imp_uid 에 해당되는 모든 상품주문을 환불합니다.
          required: false
          type: array
          items: string
          x-portone-name: 환불할 거래건의 네이버페이 상품주문번호
          x-portone-description: 네이버페이 환불할 거래건의 네이버페이 상품주문번호로 생략되면 imp_uid 에 해당되는 모든 상품주문을 환불합니다.
        - name: reason
          in: formData
          description: |-
            취소 사유 코드. 올바르지 않은 코드인 경우 기본값(PRODUCT_UNSATISFIED)을 적용합니다.
                 <h4>reason (환불사유코드)</h4><ul>
                 <li>SOLD_OUT : 상품 품절</li>
                 <li>DELAYED_DELIVERY : 배송 지연</li>
                 <li>PRODUCT_UNSATISFIED : 서비스 및 상품 불만족</li>
                 <li>INTENT_CHANGED : 구매 의사 취소</li>
                 <li>COLOR_AND_SIZE : 색상 및 사이즈 변경</li>
                 <li>WRONG_ORDER : 다른 상품 잘못 주문</li>
                 <li>INCORRECT_INFO : 상품 정보 상이</li> </ul>
          required: false
          type: string
          default: PRODUCT_UNSATISFIED
          enum:
            - SOLD_OUT
            - DELAYED_DELIVERY
            - PRODUCT_UNSATISFIED
            - INTENT_CHANGED
            - COLOR_AND_SIZE
            - WRONG_ORDER
            - INCORRECT_INFO
          x-portone-name: 취소 사유 코드
          x-portone-description: 취소 사유 코드로 올바르지 않은 코드인 경우 기본값(`PRODUCT_UNSATISFIED`)을 적용합니다.
      responses:
        '200':
          description: 모든주문환불성공
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '207':
          description: >-
            일부주문 환불성공 & 일부주문 환불실패<br>네이버페이에 환불요청시 product_order_id 개별로 환불요청이
            진행되어야 합니다. 일부 건만 성공하는 경우 207 응답이 내려갑니다. (모두 성공인 경우 200응답 / 모두 실패인 경우
            500응답)
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
        '500':
          description: 모든주문 환불실패
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/approve-cancel':
    post:
      tags:
        - naver
      summary: (주문형-네이버페이) 구매자의 환불요청 승인처리 API
      description: >-
        네이버페이 주문형 구매자가 환불요청한 상품주문들을 환불승인처리합니다. 상품발주처리 중 구매자의 환불요청이 있는 경우, 최종
        환불처리를 위해서는 판매자의 승인이 필요하므로 본 API 를 사용하셔야 합니다.<br>
                     주문상품의 종류가 여러 개인 경우, 한 건의 포트원 거래고유번호(imp_uid)에 여러 개의 네이버페이 상품주문이 존재하며 일부 또는 전체를 환불승인처리할 수 있습니다.
                     시도된 상품주문 중 <b>환불승인처리에 성공한 상품주문</b>에 대한 최종 정보만 제공됩니다.
      operationId: naverApproveCancelProductOrder
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 환불승인할 거래건의 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 환불승인할 거래건의 포트원 거래고유번호
        - name: product_order_id
          in: formData
          description: 환불승인할 거래건의 네이버페이 상품주문번호. <br>생략되면 imp_uid 에 해당되는 모든 상품주문을 환불승인합니다.
          required: false
          type: array
          items: string
          x-portone-name: 환불승인할 거래건의 네이버페이 상품주문번호
          x-portone-description: 환불승인할 거래건의 네이버페이 상품주문번호로 생략되면 imp_uid 에 해당되는 모든 상품주문을 환불승인합니다.
      responses:
        '200':
          description: 주문환불승인성공
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '207':
          description: >-
            일부주문 환불승인성공 & 일부주문 환불승인실패<br>포트원에서 네이버페이에 환불승인요청시 product_order_id
            개별로 환불승인요청이 진행되어야 합니다. 일부 건만 성공하는 경우 207 응답이 내려갑니다. (모두 성공인 경우 200응답
            / 모두 실패인 경우 500응답)
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
        '500':
          description: 모든주문 환불승인실패
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/ship':
    post:
      tags:
        - naver
      summary: (주문형-네이버페이) 상품주문 발송처리 API
      description: |-
        (주문형-네이버페이) 네이버페이 상품주문들을 발송처리합니다. <br>
             주문상품의 종류가 여러 개인 경우, 한 건의 포트원 거래건(imp_uid)에 여러 개의 네이버페이 상품주문이 존재하며 일부 또는 전체를 발송처리할 수 있습니다.
             시도된 상품주문 중 <b>발송처리에 성공한 상품주문</b>에 대한 최종 정보만 제공됩니다.
      operationId: naverShipProductOrder
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 발송처리할 거래건의 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 발송처리할 거래건의 포트원 거래고유번호
        - name: product_order_id
          in: formData
          description: 발송처리할 거래건의 네이버페이 상품주문번호. 생략되면 imp_uid 에 해당되는 모든 상품주문을 발송처리합니다.
          required: false
          type: array
          items: string
          x-portone-name: 발송처리할 거래건의 네이버페이 상품주문번호
          x-portone-description: 발송처리할 거래건의 네이버페이 상품주문번호로 생략되면 imp_uid 에 해당되는 모든 상품주문을 발송처리합니다.
        - name: delivery_method
          in: formData
          description: |-
            배송방법 코드
                 <h4>delivery_method (배송방법코드)</h4><ul>
                 <li>DELIVERY : 택배, 등기, 소포</li>
                 <li>GDFW_ISSUE_SVC : 굿스플로 송장 출력</li>
                 <li>VISIT_RECEIPT : 방문 수령</li>
                 <li>DIRECT_DELIVERY : 직접 전달</li>
                 <li>QUICK_SVC : 퀵서비스</li><li>NOTHING : 배송 없음</li></ul>
          required: true
          type: string
          enum:
            - DELIVERY
            - GDFW_ISSUE_SVC
            - VISIT_RECEIPT
            - DIRECT_DELIVERY
            - QUICK_SVC
            - NOTHING
          x-portone-name: 배송방법 코드
          x-portone-description: 배송방법을 나타내는 코드
        - name: dispatched_at
          in: formData
          description: 발송일 unix timestamp
          required: true
          type: integer
          x-portone-name: 발송일
          x-portone-description: 발송일 (unix timestamp)
        - name: delivery_company
          in: formData
          description: |-
            택배사 코드(delivery_method == 'DELIVERY' 인 경우 필수 파라메터)
                 <h4>delivery_company (택배사 코드)</h4><ul>
                 <li>CJGLS : CJ 대한통운</li><li>KGB : 로젠택배</li>
                 <li>DONGBU : KG 로지스</li><li>EPOST : 우체국택배</li>
                 <li>REGISTPOST : 우편등기</li><li>HANJIN : 한진택배</li>
                 <li>HYUNDAI : 현대택배</li><li>KGBLS : KGB 택배</li>
                 <li>INNOGIS : GTX 로지스</li><li>DAESIN : 대신택배</li>
                 <li>ILYANG : 일양로지스</li><li>KDEXP : 경동택배</li>
                 <li>CHUNIL : 천일택배</li><li>CH1 : 기타 택배</li>
                 <li>HDEXP : 합동택배</li><li>CVSNET : 편의점택배</li>
                 <li>DHL : DHL</li> <li>FEDEX : FEDEX</li>
                 <li>GSMNTON : GSMNTON</li> <li>WARPEX : WarpEx</li>
                 <li>WIZWA : WIZWA</li> <li>EMS : EMS</li>
                 <li>DHLDE : DHL(독일)</li> <li>ACIEXPRESS : ACI</li>
                 <li>EZUSA : EZUSA</li> <li>PANTOS : 범한판토스</li>
                 <li>UPS : UPS</li> <li>HLCGLOBAL : 현대택배(국제택배)</li>
                 <li>KOREXG : CJ 대한통운(국제택배)</li> <li>TNT : TNT</li>
                 <li>SWGEXP : 성원글로벌</li> <li>DAEWOON : 대운글로벌</li>
                 <li>USPS : USPS</li> <li>IPARCEL : i-parcel</li>
                 <li>KUNYOUNG : 건영택배</li> <li>HPL : 한의사랑택배</li>
                 <li>DADREAM : 다드림</li> <li>SLX : SLX 택배</li>
                 <li>SFEXPRESS : 순풍택배</li> <li>HONAM : 호남택배</li></ul>
          required: false
          type: string
          enum:
            - CJGLS
            - KGB
            - DONGBU
            - EPOST
            - REGISTPOST
            - HANJIN
            - HYUNDAI
            - KGBLS
            - INNOGIS
            - DAESIN
            - ILYANG
            - KDEXP
            - CHUNIL
            - CH1
            - HDEXP
            - CVSNET
            - DHL
            - FEDEX
            - GSMNTON
            - WARPEX
            - WIZWA
            - EMS
            - DHLDE
            - ACIEXPRESS
            - EZUSA
            - PANTOS
            - UPS
            - HLCGLOBAL
            - KOREXG
            - TNT
            - SWGEXP
            - DAEWOON
            - USPS
            - IPARCEL
            - KUNYOUNG
            - HPL
            - DADREAM
            - SLX
            - SFEXPRESS
            - HONAM
          x-portone-name: 택배사 코드
          x-portone-description: 택배사 코드(delivery_method == `DELIVERY` 인 경우 필수로 입력해야하는 파라메터)
        - name: tracking_number
          in: formData
          description: 송장번호(delivery_method == 'DELIVERY' 인 경우 필수 파라메터)
          required: false
          type: string
          x-portone-name: 송장번호
          x-portone-description: 송장번호(delivery_method == `DELIVERY` 인 경우 필수 파라미터)
      responses:
        '200':
          description: 모든 상품주문 발송처리 성공
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '207':
          description: >-
            일부 상품주문 발송처리성공 & 일부주문 발송처리실패<br>포트원에서 네이버페이에 발송처리 요청시
            product_order_id 개별로 발송요청이 진행되어야 합니다. 일부 건만 성공하는 경우 207 응답이 내려갑니다.
            (모두 성공인 경우 200응답 / 모두 실패인 경우 500응답)
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '400':
          description: delivery_method / dispatched_at 파라메터가 누락되거나 올바르지 않은 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
        '500':
          description: 모든 상품주문 발송처리실패
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/ship-exchanged':
    post:
      tags:
        - naver
      summary: (주문형-네이버페이) 교환승인된 상품 재발송처리 API
      description: |-
        (주문형-네이버페이) 네이버페이 교환승인된 상품주문들을 재발송처리합니다. <br>
             주문상품의 종류가 여러 개인 경우, 한 건의 포트원 거래건(imp_uid)에 여러 개의 네이버페이 상품주문이 존재하며 일부 또는 전체를 재발송처리할 수 있습니다.
             시도된 상품주문 중 <b>재발송처리에 성공한 상품주문</b>에 대한 최종 정보만 제공됩니다.
      operationId: naverShipProductOrder
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 재발송처리할 거래건의 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 재발송처리할 거래건의 포트원 거래고유번호
        - name: product_order_id
          in: formData
          description: 재발송처리할 거래건의 네이버페이 상품주문번호. 생략되면 imp_uid 에 해당되는 모든 상품주문을 재발송처리합니다.
          required: false
          type: array
          items: string
          x-portone-name: 재발송처리할 거래건의 네이버페이 상품주문번호
          x-portone-description: 재발송처리할 거래건의 네이버페이 상품주문번호로 생략되면 imp_uid 에 해당되는 모든 상품주문을 재발송처리합니다.
        - name: delivery_method
          in: formData
          description: |-
            배송방법 코드
                 <h4>delivery_method (배송방법코드)</h4><ul>
                 <li>DELIVERY : 택배, 등기, 소포</li>
                 <li>GDFW_ISSUE_SVC : 굿스플로 송장 출력</li>
                 <li>VISIT_RECEIPT : 방문 수령</li>
                 <li>DIRECT_DELIVERY : 직접 전달</li>
                 <li>QUICK_SVC : 퀵서비스</li>
                 <li>NOTHING : 배송 없음</li> </ul>
          required: true
          type: string
          enum:
            - DELIVERY
            - GDFW_ISSUE_SVC
            - VISIT_RECEIPT
            - DIRECT_DELIVERY
            - QUICK_SVC
            - NOTHING
          x-portone-name: 배송방법 코드
          x-portone-description: 배송방법을 나타내는 코드
        - name: delivery_company
          in: formData
          description: |-
            택배사 코드(delivery_method == 'DELIVERY' 인 경우 필수 파라메터)
                 <h4>delivery_company (택배사 코드)</h4><ul>
                 <li>CJGLS : CJ 대한통운</li><li>KGB : 로젠택배</li>
                 <li>DONGBU : KG 로지스</li><li>EPOST : 우체국택배</li>
                 <li>REGISTPOST : 우편등기</li><li>HANJIN : 한진택배</li>
                 <li>HYUNDAI : 현대택배</li><li>KGBLS : KGB 택배</li>
                 <li>INNOGIS : GTX 로지스</li><li>DAESIN : 대신택배</li>
                 <li>ILYANG : 일양로지스</li><li>KDEXP : 경동택배</li>
                 <li>CHUNIL : 천일택배</li><li>CH1 : 기타 택배</li>
                 <li>HDEXP : 합동택배</li><li>CVSNET : 편의점택배</li>
                 <li>DHL : DHL</li> <li>FEDEX : FEDEX</li>
                 <li>GSMNTON : GSMNTON</li> <li>WARPEX : WarpEx</li>
                 <li>WIZWA : WIZWA</li> <li>EMS : EMS</li>
                 <li>DHLDE : DHL(독일)</li> <li>ACIEXPRESS : ACI</li>
                 <li>EZUSA : EZUSA</li> <li>PANTOS : 범한판토스</li>
                 <li>UPS : UPS</li> <li>HLCGLOBAL : 현대택배(국제택배)</li>
                 <li>KOREXG : CJ 대한통운(국제택배)</li> <li>TNT : TNT</li>
                 <li>SWGEXP : 성원글로벌</li> <li>DAEWOON : 대운글로벌</li>
                 <li>USPS : USPS</li> <li>IPARCEL : i-parcel</li>
                 <li>KUNYOUNG : 건영택배</li> <li>HPL : 한의사랑택배</li>
                 <li>DADREAM : 다드림</li> <li>SLX : SLX 택배</li>
                 <li>SFEXPRESS : 순풍택배</li> <li>HONAM : 호남택배</li></ul>
          required: false
          type: string
          enum:
            - CJGLS
            - KGB
            - DONGBU
            - EPOST
            - REGISTPOST
            - HANJIN
            - HYUNDAI
            - KGBLS
            - INNOGIS
            - DAESIN
            - ILYANG
            - KDEXP
            - CHUNIL
            - CH1
            - HDEXP
            - CVSNET
            - DHL
            - FEDEX
            - GSMNTON
            - WARPEX
            - WIZWA
            - EMS
            - DHLDE
            - ACIEXPRESS
            - EZUSA
            - PANTOS
            - UPS
            - HLCGLOBAL
            - KOREXG
            - TNT
            - SWGEXP
            - DAEWOON
            - USPS
            - IPARCEL
            - KUNYOUNG
            - HPL
            - DADREAM
            - SLX
            - SFEXPRESS
            - HONAM
          x-portone-name: 택배사 코드
          x-portone-description: 택배사 코드(delivery_method == `DELIVERY` 인 경우 필수로 입력해야하는 파라메터)
        - name: tracking_number
          in: formData
          description: 송장번호(delivery_method == 'DELIVERY' 인 경우 필수 파라메터)
          required: false
          type: string
          x-portone-name: 송장번호
          x-portone-description: 송장번호(delivery_method == `DELIVERY` 인 경우 필수로 입력해야하는 파라메터)
      responses:
        '200':
          description: 모든 상품주문 재발송처리 성공
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '207':
          description: >-
            일부 상품주문 재발송처리성공 & 일부주문 재발송처리실패<br>포트원에서 네이버페이에 재발송처리 요청시
            product_order_id 개별로 재발송요청이 진행되어야 합니다. 일부 건만 성공하는 경우 207 응답이 내려갑니다.
            (모두 성공인 경우 200응답 / 모두 실패인 경우 500응답)
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '400':
          description: delivery_method 파라메터가 누락되거나 올바르지 않은 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
        '500':
          description: 모든 상품주문 재발송처리실패
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/collect-exchanged':
    post:
      tags:
        - naver
      summary: (주문형-네이버페이) 교환승인된 상품 수거완료처리 API
      description: |-
        (주문형-네이버페이) 네이버페이 교환승인된 상품주문들을 수거완료처리합니다. <br>
             주문상품의 종류가 여러 개인 경우, 한 건의 포트원 거래건(imp_uid)에 여러 개의 네이버페이 상품주문이 존재하며 일부 또는 전체를 수거완료처리할 수 있습니다.
             시도된 상품주문 중 <b>수거완료처리에 성공한 상품주문</b>에 대한 최종 정보만 제공됩니다.
      operationId: naverCollectProductOrder
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 수거완료처리 할 거래건의 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 수거완료처리 할 거래건의 포트원 거래고유번호
        - name: product_order_id
          in: formData
          description: 수거완료처리 할 거래건의 네이버페이 상품주문번호. 생략되면 imp_uid 에 해당되는 모든 상품주문을 수거완료처리합니다.
          required: false
          type: array
          items: string
          x-portone-name: 네이버페이 상품주문번호
          x-portone-description: 수거완료처리 할 거래건의 네이버페이 상품주문번호로 생략되면 imp_uid 에 해당되는 모든 상품주문을 수거완료처리합니다.
      responses:
        '200':
          description: 모든 상품주문 수거완료처리 성공
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '207':
          description: >-
            일부 상품주문 수거완료처리성공 & 일부주문 수거완료처리실패<br>포트원에서 네이버페이에 수거완료처리 요청시
            product_order_id 개별로 수거완료요청이 진행되어야 합니다. 일부 건만 성공하는 경우 207 응답이 내려갑니다.
            (모두 성공인 경우 200응답 / 모두 실패인 경우 500응답)
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
        '500':
          description: 모든 상품주문 수거완료처리실패
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/place':
    post:
      tags:
        - naver
      summary: (주문형-네이버페이) 상품발주처리 API
      description: |-
        (주문형-네이버페이) 네이버페이 상품주문들을 발주처리합니다. <br>
             주문상품의 종류가 여러 개인 경우, 한 건의 포트원 거래건(imp_uid)에 여러 개의 네이버페이 상품주문이 존재하며 일부 또는 전체를 발주처리할 수 있습니다.
             시도된 상품주문 중 <b>발주처리에 성공한 상품주문</b>에 대한 최종 정보만 제공됩니다.
      operationId: naverPlaceProductOrder
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 발주처리할 거래건의 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 발주처리할 거래건의 포트원 거래고유번호
        - name: product_order_id
          in: formData
          description: 네이버페이 발주처리할 거래건의 네이버페이 상품주문번호. 생략되면 imp_uid 에 해당되는 모든 상품주문을 발주처리합니다.
          required: false
          type: array
          items: string
          x-portone-name: 네이버페이 상품주문번호
          x-portone-description: 네이버페이 발주처리할 거래건의 네이버페이 상품주문번호로 생략되면 imp_uid 에 해당되는 모든 상품주문을 발주처리합니다.
      responses:
        '200':
          description: 모든 상품주문 발주처리 성공
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '207':
          description: >-
            일부 상품주문 발주처리성공 & 일부주문 발주처리실패<br>포트원에서 네이버페이에 발주처리 요청시
            product_order_id 개별로 발주요청이 진행되어야 합니다. 일부 건만 성공하는 경우 207 응답이 내려갑니다.
            (모두 성공인 경우 200응답 / 모두 실패인 경우 500응답)
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
        '500':
          description: 모든 상품주문 발주처리실패
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/request-return':
    post:
      tags:
        - naver
      summary: (주문형-네이버페이) 상품반품요청 API
      description: |-
        (주문형-네이버페이) 네이버페이 상품주문들을 반품요청합니다. <br>
             주문상품의 종류가 여러 개인 경우, 한 건의 포트원 거래건(imp_uid)에 여러 개의 네이버페이 상품주문이 존재하며 일부 또는 전체를 반품요청할 수 있습니다.
             시도된 상품주문 중 <b>반품요청에 성공한 상품주문</b>에 대한 최종 정보만 제공됩니다.
      operationId: naverRequestReturnProductOrder
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 반품요청할 거래건의 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 반품요청할 거래건의 포트원 거래고유번호
        - name: product_order_id
          in: formData
          description: 반품요청할 거래건의 네이버페이 상품주문번호. 생략되면 imp_uid 에 해당되는 모든 상품주문을 반품요청합니다.
          required: false
          type: array
          items: string
          x-portone-name: 네이버페이 상품주문번호
          x-portone-description: 반품요청할 거래건의 네이버페이 상품주문번호로 생략되면 imp_uid 에 해당되는 모든 상품주문을 반품요청합니다.
        - name: reason
          in: formData
          description: |-
            반품사유코드. 올바르지 않은 사유코드인 경우 기본값(INTENT_CHANGED)을 적용합니다.
                             <ul>
                                 <li>INTENT_CHANGED : 구매 의사 취소</li>
                                 <li>COLOR_AND_SIZE : 색상 및 사이즈 변경</li>
                                 <li>WRONG_ORDER : 다른 상품 잘못 주문</li>
                                 <li>PRODUCT_UNSATISFIED : 서비스 및 상품 불만족</li>
                                 <li>DELAYED_DELIVERY : 배송 지연</li>
                                 <li>SOLD_OUT : 상품 품절</li>
                                 <li>DROPPED_DELIVERY : 배송 누락</li>
                                 <li>BROKEN : 상품 파손</li>
                                 <li>INCORRECT_INFO : 상품정보상이</li>
                                 <li>WRONG_DELIVERY : 오배송</li>
                                 <li>WRONG_OPTION : 색상 등이 다른 상품을 잘못 배송</li>
                             </ul>
          required: false
          type: string
          default: INTENT_CHANGED
          enum:
            - INTENT_CHANGED
            - COLOR_AND_SIZE
            - WRONG_ORDER
            - PRODUCT_UNSATISFIED
            - DELAYED_DELIVERY
            - SOLD_OUT
            - DROPPED_DELIVERY
            - BROKEN
            - INCORRECT_INFO
            - WRONG_DELIVERY
            - WRONG_OPTION
          x-portone-name: 반품사유코드
          x-portone-description: 반품사유코드로 올바르지 않은 사유코드인 경우 기본값(`INTENT_CHANGED`)을 적용합니다.
        - name: delivery_method
          in: formData
          description: |-
            반품 배송방법 코드
                            <ul>
                                <li>RETURN_DESIGNATED : 지정 반품 택배(판매자 측에서 택배접수는 미리 해준 경우)</li>
                                <li>RETURN_DELIVERY : 일반 반품 택배</li>
                                <li>RETURN_INDIVIDUAL : 직접 반송</li>
                            </ul>
          required: true
          type: string
          enum:
            - RETURN_DESIGNATED
            - RETURN_DELIVERY
            - RETURN_INDIVIDUAL
          x-portone-name: 배송방법 코드
          x-portone-description: 반품 배송방법 코드
        - name: delivery_company
          in: formData
          description: |-
            택배사 코드(delivery_method == 'RETURN_DELIVERY' 인 경우 필수 파라메터)
                            <ul>
                                <li>CJGLS : CJ 대한통운</li>
                                <li>KGB : 로젠택배</li>
                                <li>DONGBU : KG 로지스</li>
                                <li>EPOST : 우체국택배</li>
                                <li>REGISTPOST : 우편등기</li>
                                <li>HANJIN : 한진택배</li>
                                <li>HYUNDAI : 현대택배</li>
                                <li>KGBLS : KGB 택배</li>
                                <li>INNOGIS : GTX 로지스</li>
                                <li>DAESIN : 대신택배</li>
                                <li>ILYANG : 일양로지스</li>
                                <li>KDEXP : 경동택배</li>
                                <li>CHUNIL : 천일택배</li>
                                <li>CH1 : 기타 택배</li>
                                <li>HDEXP : 합동택배</li>
                                <li>CVSNET : 편의점택배</li>
                                <li>DHL : DHL</li>
                                <li>FEDEX : FEDEX</li>
                                <li>GSMNTON : GSMNTON</li>
                                <li>WARPEX : WarpEx</li>
                                <li>WIZWA : WIZWA</li>
                                <li>EMS : EMS</li>
                                <li>DHLDE : DHL(독일)</li>
                                <li>ACIEXPRESS : ACI</li>
                                <li>EZUSA : EZUSA</li>
                                <li>PANTOS : 범한판토스</li>
                                <li>UPS : UPS</li>
                                <li>HLCGLOBAL : 현대택배(국제택배)</li>
                                <li>KOREXG : CJ 대한통운(국제택배)</li>
                                <li>TNT : TNT</li>
                                <li>SWGEXP : 성원글로벌</li>
                                <li>DAEWOON : 대운글로벌</li>
                                <li>USPS : USPS</li>
                                <li>IPARCEL : i-parcel</li>
                                <li>KUNYOUNG : 건영택배</li>
                                <li>HPL : 한의사랑택배</li>
                                <li>DADREAM : 다드림</li>
                                <li>SLX : SLX 택배</li>
                                <li>SFEXPRESS : 순풍택배</li>
                                <li>HONAM : 호남택배</li>
                            </ul>
          required: false
          type: string
          enum:
            - CJGLS
            - KGB
            - DONGBU
            - EPOST
            - REGISTPOST
            - HANJIN
            - HYUNDAI
            - KGBLS
            - INNOGIS
            - DAESIN
            - ILYANG
            - KDEXP
            - CHUNIL
            - CH1
            - HDEXP
            - CVSNET
            - DHL
            - FEDEX
            - GSMNTON
            - WARPEX
            - WIZWA
            - EMS
            - DHLDE
            - ACIEXPRESS
            - EZUSA
            - PANTOS
            - UPS
            - HLCGLOBAL
            - KOREXG
            - TNT
            - SWGEXP
            - DAEWOON
            - USPS
            - IPARCEL
            - KUNYOUNG
            - HPL
            - DADREAM
            - SLX
            - SFEXPRESS
            - HONAM
          x-portone-name: 택배사 코드
          x-portone-description: 택배사 코드(delivery_method == `RETURN_DELIVERY` 인 경우 필수로 입력해야하는 파라메터)
        - name: tracking_number
          in: formData
          description: 송장번호(delivery_method == 'RETURN_DELIVERY' 인 경우 필수 파라메터)
          required: false
          type: string
          x-portone-name: 송장번호
          x-portone-description: 송장번호(delivery_method == `RETURN_DELIVERY` 인 경우 필수로 입력해야하는 파라메터)
      responses:
        '200':
          description: 모든 상품주문 반품요청 성공
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '207':
          description: |-
            일부 상품주문 반품요청성공 & 일부주문 반품요청실패<br>
                 포트원에서 네이버페이에 반품요청시 product_order_id 개별로 반품요청이 진행되어야 합니다. 일부 건만 성공하는 경우 207 응답이 내려갑니다. (모두 성공인 경우 200응답 / 모두 실패인 경우 500응답)
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '400':
          description: delivery_method 파라메터가 누락되거나 올바르지 않은 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
        '500':
          description: 모든 상품주문 반품요청실패
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/approve-return':
    post:
      tags:
        - naver
      summary: (주문형-네이버페이) 상품 반품승인 처리 API
      description: |-
        (주문형-네이버페이) 네이버페이 상품주문들을 반품승인처리합니다. <br>
             주문상품의 종류가 여러 개인 경우, 한 건의 포트원 거래건(imp_uid)에 여러 개의 네이버페이 상품주문이 존재하며 일부 또는 전체를 반품승인 처리할 수 있습니다.
             반품시 배송비 제외, 혹은 추가 청구액이 필요한 경우 반품보류 처리(<a target='_blank' href='/#!/naver/naverWithholdReturnProductOrder'>POST 반품요청상품 반품보류 처리 API</a>) 사용합니다.
             <br> 시도된 상품주문 중 <b>반품승인 처리에 성공한 상품주문</b>에 대한 최종 정보만 제공됩니다.
      operationId: naverApproveReturnProductOrder
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 반품승인 처리할 거래건의 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 반품승인 처리할 거래건의 포트원 거래고유번호
        - name: product_order_id
          in: formData
          description: 반품승인 처리할 거래건의 네이버페이 상품주문번호. 생략되면 imp_uid 에 해당되는 모든 상품주문을 반품승인 처리합니다.
          required: false
          type: array
          items: string
          x-portone-name: 네이버페이 상품주문번호
          x-portone-description: 반품승인 처리할 거래건의 네이버페이 상품주문번호로 생략되면 imp_uid 에 해당되는 모든 상품주문을 반품승인 처리합니다.
        - name: memo
          in: formData
          description: 반품승인 후 구매자에게 전달하는 메모
          required: false
          type: string
          x-portone-name: 메모
          x-portone-description: 반품승인 후 구매자에게 전달하는 메모
      responses:
        '200':
          description: 모든 상품주문 반품승인 처리 성공
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '207':
          description: |-
            일부 상품주문 반품승인 처리성공 & 일부주문 반품승인 처리실패<br>
                 포트원에서 네이버페이에 반품승인 처리시 product_order_id 개별로 반품승인 처리이 진행되어야 합니다. 일부 건만 성공하는 경우 207 응답이 내려갑니다.
                 (모두 성공인 경우 200응답 / 모두 실패인 경우 500응답)
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
        '500':
          description: 모든 상품주문 반품승인 처리실패
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/reject-return':
    post:
      tags:
        - naver
      summary: (주문형-네이버페이) 상품 반품거절 처리 API
      description: |-
        (주문형-네이버페이) 네이버페이 반품요청 상품주문들을 반품거절처리합니다. <br>
             주문상품의 종류가 여러 개인 경우, 한 건의 포트원 거래건(imp_uid)에 여러 개의 네이버페이 상품주문이 존재하며 일부 또는 전체를 반품거절 처리할 수 있습니다.
             시도된 상품주문 중 <b>반품거절 처리에 성공한 상품주문</b>에 대한 최종 정보만 제공됩니다.
      operationId: naverRejectReturnProductOrder
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 반품거절 처리할 거래건의 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원의 거래고유번호
          x-portone-description: 네이버페이 반품거절 처리할 거래건의 포트원 거래고유번호
        - name: product_order_id
          in: formData
          description: >-
            네이버페이 반품거절 처리할 거래건의 네이버페이 상품주문번호. 생략되면 imp_uid 에 해당되는 모든 상품주문을 반품거절
            처리합니다.
          required: false
          type: array
          items: string
          x-portone-name: 네이버페이 상품주문번호
          x-portone-description: >-
            네이버페이 반품거절 처리할 거래건의 네이버페이 상품주문번호로 생략되면 imp_uid 에 해당되는 모든 상품주문을 반품거절
            처리합니다.
        - name: memo
          in: formData
          description: 반품거절 후 구매자에게 전달하는 메모
          required: true
          type: string
          x-portone-name: 메모
          x-portone-description: 반품거절 후 구매자에게 전달하는 메모
      responses:
        '200':
          description: 모든 상품주문 반품거절 처리 성공
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '207':
          description: |-
            일부 상품주문 반품거절 처리성공 & 일부주문 반품거절 처리실패<br>
                 포트원에서 네이버페이에 반품거절 처리시 product_order_id 개별로 반품거절 처리이 진행되어야 합니다. 일부 건만 성공하는 경우 207 응답이 내려갑니다.
                 (모두 성공인 경우 200응답 / 모두 실패인 경우 500응답)
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '400':
          description: memo 파라미터가 누락되거나 올바르지 않은 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
        '500':
          description: 모든 상품주문 반품거절 처리실패
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/withhold-return':
    post:
      tags:
        - naver
      summary: (주문형-네이버페이) 상품 반품보류 처리 API
      description: |-
        (주문형-네이버페이) 반품요청 상품주문들을 반품보류처리합니다. <br>
             주문상품의 종류가 여러 개인 경우, 한 건의 포트원 거래건(imp_uid)에 여러 개의 네이버페이 상품주문이 존재하며 일부 또는 전체를 반품보류 처리할 수 있습니다.
             시도된 상품주문 중 <b>반품보류 처리에 성공한 상품주문</b>에 대한 최종 정보만 제공됩니다.
      operationId: naverWithholdReturnProductOrder
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 반품보류 처리할 거래건의 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 반품보류 처리할 거래건의 포트원 거래고유번호
        - name: product_order_id
          in: formData
          description: 반품보류 처리할 거래건의 네이버페이 상품주문번호. 생략되면 imp_uid 에 해당되는 모든 상품주문을 반품보류 처리합니다.
          required: false
          type: array
          items: string
          x-portone-name: 네이버페이 상품주문번호
          x-portone-description: 반품보류 처리할 거래건의 네이버페이 상품주문번호로 생략되면 imp_uid 에 해당되는 모든 상품주문을 반품보류 처리합니다.
        - name: reason
          in: formData
          description: |-
            반품보류사유 코드. 올바르지 않은 보류사유코드인 경우 기본값(ETC)를 적용합니다.
                            <ul>
                                <li>RETURN_DELIVERYFEE : 반품 배송비 청구</li>
                                <li>EXTRAFEEE : 기타 반품 비용 청구</li>
                                <li>RETURN_DELIVERYFEE_AND_EXTRAFEEE : 반품 배송비 및 기타 반품 비용 청구</li>
                                <li>RETURN_PRODUCT_NOT_DELIVERED : 반품 상품 미입고</li>
                                <li>ETC : 기타 사유</li>
                            </ul>
          required: false
          type: string
          default: ETC
          enum:
            - RETURN_DELIVERYFEE
            - EXTRAFEEE
            - RETURN_DELIVERYFEE_AND_EXTRAFEEE
            - RETURN_PRODUCT_NOT_DELIVERED
            - ETC
          x-portone-name: 반품보류사유 코드
          x-portone-description: 반품보류사유 코드로 올바르지 않은 보류사유코드인 경우 기본값(`ETC`)를 적용합니다.
        - name: memo
          in: formData
          description: 반품보류에 대하여 구매자에게 전달하는 메모
          required: true
          type: string
          x-portone-name: 메모
          x-portone-description: 반품보류에 대하여 구매자에게 전달하는 메모
        - name: extra_charge
          in: formData
          description: '기타 비용 청구액(기본값 : 0원)'
          required: false
          type: integer
          x-portone-name: 기타 비용 청구액
          x-portone-description: 기타 비용 청구액으로 기본값은 **0원**입니다.
      responses:
        '200':
          description: 모든 상품주문 반품보류 처리 성공
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '207':
          description: |-
            일부 상품주문 반품보류 처리성공 & 일부주문 반품보류 처리실패<br>
                 포트원에서 네이버페이에 반품보류 처리시 product_order_id 개별로 반품보류 처리이 진행되어야 합니다. 일부 건만 성공하는 경우 207 응답이 내려갑니다.
                 (모두 성공인 경우 200응답 / 모두 실패인 경우 500응답)
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '400':
          description: memo 파라미터가 누락되거나 올바르지 않은 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
        '500':
          description: 모든 상품주문 반품보류 처리실패
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/resolve-return':
    post:
      tags:
        - naver
      summary: (주문형-네이버페이) 반품보류상품 반품보류해제 처리 API
      description: |-
        (주문형-네이버페이) 반품보류 상품주문들을 반품보류해제처리합니다. <br>
             주문상품의 종류가 여러 개인 경우, 한 건의 포트원 거래건(imp_uid)에 여러 개의 네이버페이 상품주문이 존재하며 일부 또는 전체를 반품보류해제 처리할 수 있습니다.
             시도된 상품주문 중 <b>반품보류해제 처리에 성공한 상품주문</b>에 대한 최종 정보만 제공됩니다.
      operationId: naverResolveReturnProductOrder
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 반품보류해제 처리할 거래건의 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 반품보류해제 처리할 거래건의 포트원 거래고유번호
        - name: product_order_id
          in: formData
          description: >-
            반품보류해제 처리할 거래건의 네이버페이 상품주문번호. 생략되면 imp_uid 에 해당되는 모든 상품주문을 반품보류해제
            처리합니다.
          required: false
          type: array
          items: string
          x-portone-name: 네이버페이 상품주문번호
          x-portone-description: >-
            반품보류해제 처리할 거래건의 네이버페이 상품주문번호로 생략되면 imp_uid 에 해당되는 모든 상품주문을 반품보류해제
            처리합니다.
      responses:
        '200':
          description: 모든 상품주문 반품보류해제 처리 성공
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '207':
          description: |-
            일부 상품주문 반품보류해제 처리성공 & 일부주문 반품보류해제 처리실패<br>
                 포트원에서 네이버페이에 반품보류해제 처리시 product_order_id 개별로 반품보류해제 처리이 진행되어야 합니다. 일부 건만 성공하는 경우 207 응답이 내려갑니다.
                 (모두 성공인 경우 200응답 / 모두 실패인 경우 500응답)
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
        '500':
          description: 모든 상품주문 반품보류해제 처리실패
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/point':
    post:
      tags:
        - naver
      summary: (결제형-네이버페이) 네이버페이 포인트 적립 API
      description: (결제형-네이버페이) 네이버페이 포인트 적립 API
      operationId: naverDepositPoint
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 포인트 적립할 거래건의 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 포인트 적립할 거래건의 포트원 거래고유번호
      responses:
        '200':
          description: 네이버페이 포인트 적립 성공
          schema:
            $ref: '#/definitions/ResponseAnnotation'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
        '500':
          description: 네이버페이 포인트 적립 실패. 응답 BODY의 message 확인 필요
      x-portone-supported-pgs:
        - naverpay
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/confirm':
    post:
      tags:
        - naver
      summary: (결제형-네이버페이) 에스크로 주문 확정 API
      description: (결제형-네이버페이) 에스크로 주문 확정
      operationId: naverConfirmPayment
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 구매확정할 거래건의 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 구매확정할 거래건의 포트원 거래고유번호
        - name: requester
          in: formData
          description: '구매확정 요청자 (admin : 고객사 관리자 (기본값), customer : 구매자)'
          required: false
          type: string
          x-portone-name: 구매확정 요청자
          x-portone-description: '구매확정 요청자 (admin : 고객사 관리자 (기본값), customer : 구매자)'
      responses:
        '200':
          description: 네이버페이 구매확정 성공
          schema:
            $ref: '#/definitions/ResponseAnnotation'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
        '500':
          description: 네이버페이 구매확정 실패. 응답 BODY의 message 확인 필요
      x-portone-supported-pgs:
        - naverpay
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/product-orders':
    get:
      tags:
        - naver
      summary: (주문형-네이버페이) 포트원 거래고유번호 기준 네이버페이 상품주문 조회 API
      description: |-
        (주문형-네이버페이) 포트원 거래번호 기준으로 네이버페이 상품주문 목록을 조회합니다. (배열 반환)<br><br>
             네이버페이의 경우 주문하는 상품의 종류별로 주문번호(product_order_id)를 관리합니다. 포트원 거래건 당 1개 이상의 네이버페이 상품주문이 연결되므로,
             포트원 거래고유번호(imp_uid)에 매핑된 1개 이상의 네이버페이 상품주문번호(product_order_id) 및 상세 내역을 조회할 수 있습니다.<br><br>
             <h3>응답 안내</h3>
             <h4>product_order_status</h4><ul>
             <li>PAYMENT_WAITING : 입금 대기</li>
             <li>PAYED : 결제 완료</li>
             <li>DELIVERING : 배송 중</li>
             <li>DELIVERED : 배송 완료</li>
             <li>PURCHASE_DECIDED : 구매 확정</li>
             <li>EXCHANGED : 교환 완료</li>
             <li>CANCELED : 취소 완료</li>
             <li>RETURNED : 반품 완료</li>
             <li>CANCELED_BY_NOPAYMENT : 미입금 취소</li> </ul>
             <h4>claim_type</h4><ul>
             <li>CANCEL : 취소</li>
             <li>RETURN : 반품</li>
             <li>EXCHANGE : 교환</li>
             <li>PURCHASE_DECISION_HOLDBACK : 구매 확정 보류</li>
             <li>ADMIN_CANCEL : 직권 취소</li></ul>
             <h4>claim_status</h4><h4>[ claim_type : CANCEL 일 때 ]</h4><ul>
             <li>CANCEL_REQUEST : 취소 요청</li><li>CANCELING : 취소 처리 중</li>
             <li>CANCEL_DONE : 취소 처리 완료</li><li>CANCEL_REJECT : 취소 철회</li></ul>
             <h4>[ claim_type : RETURN 일 때 ]</h4>
             <ul><li>RETURN_REQUEST : 반품 요청</li><li>COLLECTING : 수거 처리 중</li><li>COLLECT_DONE : 수거 완료</li><li>RETURN_DONE : 반품 완료</li><li>RETURN_REJECT : 반품 철회</li></ul>
             <h4>[ claim_type : EXCHANGE 일 때 ]</h4>
             <ul><li>EXCHANGE_REQUEST : 교환 요청</li>
             <li>COLLECTING : 수거 처리 중</li>
             <li>COLLECT_DONE : 수거 완료(교환)</li>
             <li>EXCHANGE_REDELIVERING : 교환 재배송 중</li>
             <li>EXCHANGE_DONE : 교환 완료</li>
             <li>EXCHANGE_REJECT : 교환 거부</li></ul>
             <h4>[ claim_type : PURCHASE_DECISION_HOLDBACK 일 때 ]</h4>
             <ul><li>PURCHASE_DECISION_HOLDBACK : 구매 확정 보류</li>
             <li>PURCHASE_DECISION_HOLDBACK_REDELIVERING : 구매 확정 보류 재배송 중</li>
             <li>PURCHASE_DECISION_REQUEST : 구매 확정 요청</li>
             <li>PURCHASE_DECISION_HOLDBACK_RELEASE : 구매 확정 보류 해제</li></ul>
             <h4>[ claim_type : ADMIN_CANCEL 일 때 ]</h4>
             <ul><li>ADMIN_CANCELING : 직권 취소 중</li><li>ADMIN_CANCEL_DONE : 직권 취소 완료</li></ul>
      operationId: getProductOrders
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 상품주문 조회를 위한 포트원 거래 고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 상품주문 조회를 위한 포트원 거래 고유번호
      responses:
        '200':
          description: 네이버페이 상품주문 조회 성공
          schema:
            $ref: '#/definitions/NaverProductOrderArrayResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: imp_uid에 해당되는 거래건을 찾을 수 없거나 접근 권한이 없는 계정인 경우
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  '/naver/product-orders/{product_order_id}':
    get:
      tags:
        - naver
      summary: (주문형-네이버페이) 네이버페이 상품주문번호로 상품주문 상세 조회 API
      description: |-
        (주문형-네이버페이) 네이버페이 상품주문번호 기준 네이버페이 상품주문을 조회합니다. (단건 반환)<br><br>
             네이버페이 상품주문번호(product_order_id)를 통해 해당되는 상품주문정보 단건을 조회할 수 있습니다.<br>
             <h4>product_order_status</h4>
             <ul> <li>PAYMENT_WAITING : 입금 대기</li>
             <li>PAYED : 결제 완료</li><li>DELIVERING : 배송 중</li>
             <li>DELIVERED : 배송 완료</li><li>PURCHASE_DECIDED : 구매 확정</li>
             <li>EXCHANGED : 교환 완료</li><li>CANCELED : 취소 완료</li>
             <li>RETURNED : 반품 완료</li><li>CANCELED_BY_NOPAYMENT : 미입금 취소</li> </ul>
             <h4>claim_type</h4>
             <ul><li>CANCEL : 취소</li><li>RETURN : 반품</li><li>EXCHANGE : 교환</li>
             <li>PURCHASE_DECISION_HOLDBACK : 구매 확정 보류</li>
             <li>ADMIN_CANCEL : 직권 취소</li></ul>
             <h4>claim_status</h4><h4>[ claim_type : CANCEL 일 때 ]</h4>
             <ul><li>CANCEL_REQUEST : 취소 요청</li>
             <li>CANCELING : 취소 처리 중</li>
             <li>CANCEL_DONE : 취소 처리 완료</li>
             <li>CANCEL_REJECT : 취소 철회</li></ul>
             <h4>[ claim_type : RETURN 일 때 ]</h4>
             <ul><li>RETURN_REQUEST : 반품 요청</li>
             <li>COLLECTING : 수거 처리 중</li>
             <li>COLLECT_DONE : 수거 완료</li>
             <li>RETURN_DONE : 반품 완료</li>
             <li>RETURN_REJECT : 반품 철회</li></ul>
             <h4>[ claim_type : EXCHANGE 일 때 ]</h4>
             <ul><li>EXCHANGE_REQUEST : 교환 요청</li>
             <li>COLLECTING : 수거 처리 중</li>
             <li>COLLECT_DONE : 수거 완료(교환)</li>
             <li>EXCHANGE_REDELIVERING : 교환 재배송 중</li>
             <li>EXCHANGE_DONE : 교환 완료</li>
             <li>EXCHANGE_REJECT : 교환 거부</li></ul>
             <h4>[ claim_type : PURCHASE_DECISION_HOLDBACK 일 때 ]</h4>
             <ul><li>PURCHASE_DECISION_HOLDBACK : 구매 확정 보류</li>
             <li>PURCHASE_DECISION_HOLDBACK_REDELIVERING : 구매 확정 보류 재배송 중</li>
             <li>PURCHASE_DECISION_REQUEST : 구매 확정 요청</li>
             <li>PURCHASE_DECISION_HOLDBACK_RELEASE : 구매 확정 보류 해제</li></ul>
             <h4>[ claim_type : ADMIN_CANCEL 일 때 ]</h4>
             <ul><li>ADMIN_CANCELING : 직권 취소 중</li><li>ADMIN_CANCEL_DONE : 직권 취소 완료</li></ul>
      operationId: getProductOrderSingle
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: product_order_id
          in: path
          description: 네이버페이 상품주문번호
          required: true
          type: string
          x-portone-name: 네이버페이 상품주문번호
          x-portone-description: 상세 조회할 네이버페이 상품주문번호
      responses:
        '200':
          description: 네이버페이 상품주문 조회 성공
          schema:
            $ref: '#/definitions/NaverProductOrderResponse'
        '400':
          description: 요청 파라메터에 product_order_id 가 누락된 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: product_order_id에 해당되는 네이버 상품주문을 찾을 수 없거나 접근 권한이 없는 계정인 경우
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  /naver/reviews:
    get:
      tags:
        - naver
      summary: (주문형-네이버페이) 네이버페이 구매평 조회 API
      description: (주문형-네이버페이) 네이버페이 구매평 조회 API
      operationId: getReviews
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: from
          in: query
          description: 조회기간 시작 unix timestamp
          required: true
          type: integer
          x-portone-name: 조회기간 시작
          x-portone-description: 조회기간 시작 unix timestamp
        - name: to
          in: query
          description: 조회기간 종료 unix timestamp
          required: true
          type: integer
          x-portone-name: 조회기간 종료
          x-portone-description: 조회기간 종료 unix timestamp
        - name: review_type
          in: query
          description: |-
            구매평 유형.
                 <ul><li>일반구매평(general)</li>
                 <li>프리미엄 구매평(premium)</li></ul>
          required: true
          type: string
          enum:
            - general
            - premium
          x-portone-name: 구매평 유형
          x-portone-description: 조회할 구매평의 유형
      responses:
        '200':
          description: 네이버페이 상품주문 조회 성공
          schema:
            $ref: '#/definitions/NaverReviewsResponse'
        '400':
          description: '요청 파라메터에 from, to, review_type 가 누락되거나 올바르지 않은 경우'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '500':
          description: 네이버페이 구매평 조회시 네이버응답이 올바르지 않은 경우
      x-portone-supported-pgs:
        - naverco
      x-portone-category: pg.naverpay
  '/payments/{imp_uid}/naver/cash-amount':
    get:
      tags:
        - naver
      summary: (결제형-네이버페이) 현금영수증 발급 가용액 조회 API
      description: (결제형-네이버페이) 현금영수증 발급 가용액 조회 API
      operationId: queryCashAmount
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 네이버페이 현금영수증 발급가능 금액 조회를 위한 포트원 거래 고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 네이버페이 현금영수증 발급가능 금액 조회를 위한 포트원 거래 고유번호
      responses:
        '200':
          description: 네이버페이 현금영수증 발급가능 금액 조회 성공
          schema:
            $ref: '#/definitions/NaverCashAmountResponse'
        '400':
          description: 네이버페이 결제형 거래가 아닌 건에 대해 요청하는 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '500':
          description: 네이버페이 현금영수증 발급가능 금액 조회시 네이버응답이 올바르지 않은 경우
      x-portone-supported-pgs:
        - naverpay
      x-portone-category: pg.naverpay
  '/partners/receipts/{imp_uid}':
    post:
      tags:
        - partners
      summary: 영수증 내 하위 상점 거래 등록 API
      description: |-
        결제 내역 매출전표에 하위 상점의 거래를 등록할 수 있는 API입니다.
             <h4>지원되는 PG사</h4>
             <ul> <li>KG이니시스 (이용 전 콘솔 -> 결제연동 탭에서 INIApi Key 등록 필요)</li> </ul>
      operationId: partner
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 하위 상점 거래를 등록할 결제건의 포트원 거래고유번호
        - name: data
          in: formData
          description: >-
            등록할 하위 상점 및 하위 상점 별 거래 금액 정보 배열<br>[ 필수항목
            ]<br>business_registration_number : 하위 상점 사업자 등록 번호<br>company_name
            : 하위 상점 명<br>amount : 하위 상점 거래 금액<br>[ 선택항목 ]<br>tax_free : 하위 상점 거래
            금액 중 면세 금액 (기본값 : 0)<br>vat_amount : 하위 상점 거래 금액 중 부가세 금액 (기본값 :
            amount / 11)
          required: true
          type: array
          items:
            $ref: '#/definitions/PartnerReceiptsAnnotation'
          default: >-
            [&#13;&#09;{&#13;&#09;&#09;&quot;business_registration_number&quot;:
            &quot;하위 상점 사업자 등록
            번호1&quot;,&#13;&#09;&#09;&quot;company_name&quot;: &quot;하위 상점
            명1&quot;,&#13;&#09;&#09;&quot;amount&quot;:
            1000&#13;},&#13;&#09;{&#13;&#09;&#09;&quot;business_registration_number&quot;:
            &quot;하위 상점 사업자 등록
            번호2&quot;,&#13;&#09;&#09;&quot;company_name&quot;: &quot;하위 상점
            명2&quot;,&#13;&#09;&#09;&quot;amount&quot;: 2000&#13;}&#13;]
          x-portone-name: 등록할 하위 상점 및 하위 상점 별 거래 금액 정보
          x-portone-description: imp_uid에 매핑되는 거래 하위를 구성하는 하위 상점 및 하위 상점 별 거래 금액 정보의 배열
      responses:
        '200':
          description: 정상적으로 하위 상점 거래 등록이 완료되었습니다.
          schema:
            $ref: '#/definitions/PartnerReceiptResponse'
        '400':
          description: '필수 파라미터 누락, 결제 미승인, PG사로부터 요청 실패 응답을 받은 경우'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: '결제내역 검색 실패, 결제건에 등록되어있는 결제연동 내역이 확인 불가한 경우'
        '500':
          description: 포트원 내부 이슈로 인한 API 호출 실패
        '501':
          description: 지원하지 않는 PG사
      x-portone-supported-pgs:
        - html5_inicis
      x-portone-category: partner
  '/payco/orders/status/{imp_uid}':
    post:
      tags:
        - payco
      summary: (페이코) 주문상태 단건 수정 API
      description: 페이코 주문상품의 상태를 변경합니다
      operationId: changeOrderStatus
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 주문상태를 변경할 결제건의 포트원 거래고유번호
        - name: status
          in: formData
          description: |-
            주문상품 변경될 상태
                                        <ul><li>DELIVERY_START : 배송시작-출고지시</li>
                                        <li>PURCHASE_DECISION : 구매확정</li>
                                        <li>CANCELED : 취소</li></ul>
          required: true
          type: string
          enum:
            - DELIVERY_START
            - PURCHASE_DECISION
            - CANCELED
          x-portone-name: 주문상태코드
          x-portone-description: 변경될 주문상태
      responses:
        '200':
          description: 주문상품 상태 변경 완료
          schema:
            $ref: '#/definitions/PaycoStatusResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - payco
      x-portone-category: pg.payco
  '/payments/{imp_uid}/balance':
    get:
      tags:
        - payments
      summary: 결제 상세내역 조회 API
      description: >-
        포트원 거래고유번호로 결제수단별 금액 상세정보를 확인합니다.(현재, PAYCO결제수단에 한해 제공되고 있습니다. 타 PG사의 경우
        파라메터 검증 등 검토/협의 단계에 있습니다.
      operationId: balanceByImpUid
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 거래고유번호
          required: true
          type: string
          default: imp_448280090638
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 상세정보를 조회할 결제건의 포트원 거래고유번호
      responses:
        '200':
          description: 정상 조회
          schema:
            $ref: '#/definitions/PaymentBalanceResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 유효하지 않은 imp_uid
        '405':
          description: 허용되지 않는 HTTP METHOD
      x-portone-supported-pgs:
        - payco
      x-portone-category: payment
  '/payments/{imp_uid}':
    get:
      tags:
        - payments
      summary: 결제내역 단건조회 API
      description: 포트원 거래고유번호로 결제내역을 확인합니다
      operationId: getPaymentByImpUid
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 거래고유번호
          required: true
          type: string
          default: imp_448280090638
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 결제내역을 확인할 결제건의 포트원 거래고유번호
        - name: include_sandbox
          in: query
          description: '테스트 채널을 통해 발생한 결제건을 조회 결과에 포함할지 여부 (default: false)'
          required: false
          type: boolean
          x-portone-name: 테스트 결제건 포함 여부
          x-portone-description: |-
            테스트 채널을 통해 발생한 결제건을 조회 결과에 포함할지 여부 (기본값: `false`)

            (본 파라미터는 `2026년 1월 26일`부터 추가 예정입니다.)
      responses:
        '200':
          description: 정상 조회
          schema:
            $ref: '#/definitions/PaymentResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 유효하지 않은 imp_uid
      x-portone-category: payment
      x-portone-per-pg:
        daou:
          description: >-
            <p>키움페이(구 다우, 페이조아)는 (발급된) 가상계좌에 입금 완료시, 송금자의 정보(은행명, 계좌번호, 송금인) 중
            <strong>송금자 이름</strong>만 알려줍니다.
                 따라서 송금자의 은행코드(<code>bank_code</code>)과 은행명(<code>bank_name</code>)은 모두 <strong>NULL</strong>로 내려가며, 송금자 이름을 확인하기 위해서는 아래 예시와 같이 별도의 쿼리 파라미터(<code>extension</code>)를 <strong>true</strong>로 설정해주셔야 합니다.</p>
            <div class="highlight highlight-source-text notranslate"><pre>GET
            http://api.iamport.kr/payments/{포트원
            거래고유번호}?**extension=true**</pre></div><pre><code>{
                // ... 중략
                "bank_code": null, // 송금자 은행 코드 알 수 없음
                "bank_name": null, // 송금자 은행 이름 알 수 없음
                "extension": {
                   // ... 중략
                   "REMITTER": "홍길동" // 송금자 이름
                }
            }</code></pre>
        paypal_v2:
          description: >
            <p>페이팔 결제 건은 승인 요청 시 바로 승인 되지 않고 일정 시간 후 처리되는 승인
            대기(<code>pending</code>) 상태가 존재합니다.
                 따라서 고객사는 트랜잭션 종료시 결제 내역을 조회(GET /payments/{imp_uid})한 후 응답 되는 status를 보고 각 상황에 맞는 후 처리 로직을 작성해야 합니다.
                 승인 대기 상태에서는 최종적으로 승인(<code>paid</code>)이 될 수도 있고 승인이 되지 않을 수도(<code>failed</code>) 있기 때문에 고객사는 반드시
                 (가상계좌나 정기결제와 같이 결제가 비동기로 승인되는 경우 포트원 → 고객사로 결제 결과를 통보해주는) <span>웹훅 기능을 연동해야 합니다.</span></p>
  /payments:
    get:
      tags:
        - payments
      summary: 결제내역 복수조회 API
      description: |-
        여러 개의 포트원 거래고유번호 또는 고객사 주문번호로 결제내역을 한 번에 조회합니다.(최대 100개)
             <br>(예시) /payments?imp_uid[]=imp_448280090638&imp_uid[]=imp_448280090639&merchant_uid[]=merchant_143434085216
      operationId: getPaymentListByImpUid
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: 'imp_uid[]'
          in: query
          description: 포트원 거래고유번호
          required: false
          type: array
          items:
            type: string
          collectionFormat: multi
          default: imp_448280090638
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 조회할 결제건의 포트원 거래고유번호 리스트
        - name: 'merchant_uid[]'
          in: query
          description: 결제요청 시 고객사에서 요청한 merchant_uid
          required: false
          type: array
          items:
            type: string
          collectionFormat: multi
          default: merchant_143434085216
          x-portone-name: 고객사 주문번호
          x-portone-description: 결제요청 시 고객사에서 요청한 고객사 주문번호
      responses:
        '200':
          description: 요청된 모든 imp_uid 에 대한 결제정보 응답완료
          schema:
            $ref: '#/definitions/MultiplePaymentsResponse'
        '207':
          description: 요청된 imp_uid 중 일부 거래 조회 실패(ex. 접근권한없음 또는 존재하지 않는 imp_uid)
          schema:
            $ref: '#/definitions/MultiplePaymentsResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 해당되는 결제건을 찾지 못하였습니다.
      x-portone-category: payment
  '/payments/find/{merchant_uid}/{payment_status}':
    get:
      tags:
        - payments
      summary: 결제 단건조회(고유 고객사 주문번호 조회) API
      description: |-
        고객사지정 고유번호로 결제내역을 확인합니다 <br>
             동일한 merchant_uid가 여러 건 존재하는 경우, 정렬 기준에 따라 가장 첫 번째 해당되는 건을 반환합니다.
             (모든 내역에 대한 조회가 필요하시면 GET 결제 복수조회(고객사 주문번호 중복 포함) API를 사용해주세요.)<br><br>
             payment_status를 추가로 지정하시면, 해당 status에 해당하는 가장 최신 데이터를 반환합니다.
      operationId: getPaymentByMerchantUid
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: path
          description: 결제요청 시 고객사에서 요청한 merchant_uid
          required: true
          type: string
          default: merchant_1448280088556
          x-portone-name: 고객사 주문번호
          x-portone-description: 결제요청 시 고객사에서 요청한 고객사 주문번호
        - name: payment_status
          in: path
          description: >-
            특정 status상태의 값만 필터링하고 싶은 경우에 사용.<br>지정하지 않으면 모든 상태를 대상으로 조회합니다.
            <ul><li>ready(미결제)</li> <li>paid(결제완료)</li> <li>failed(결제실패)</li>
            <li>cancelled(환불취소)</li> </ul>
          required: false
          type: string
          default: ''
          x-portone-name: 거래상태 구분코드
          x-portone-description: >-
            특정 status상태의 값만 필터링하고 싶은 경우에 사용하는 파라미터로 지정하지 않으면 **모든 상태**를 대상으로
            조회합니다
        - name: sorting
          in: query
          description: |-
            기본값은 -started<br>마이너스(-) 기호가 앞에 붙으면 내림차순 정렬을 의미합니다.<br>
                 <ul> <li>-started : 결제시작시각(결제창오픈시각) 기준 내림차순(DESC) 정렬
                 </li> <li>started : 결제시작시각(결제창오픈시각) 기준 오름차순(ASC) 정렬
                 </li><li>-paid : 결제완료시각 기준 내림차순(DESC) 정렬
                 </li><li>paid : 결제완료시각 기준 오름차순(ASC) 정렬
                 </li><li>-updated : 최종수정시각(결제건 상태변화마다 수정시각 변경됨) 기준 내림차순(DESC) 정렬
                 </li> <li>updated : 최종수정시각(결제건 상태변화마다 수정시각 변경됨) 기준 오름차순(ASC) 정렬</li></ul>
          required: false
          type: string
          default: '-started'
          enum:
            - '-started'
            - started
            - '-paid'
            - paid
            - '-updated'
            - updated
          x-portone-name: 정렬구분코드
          x-portone-description: 정렬 기준을 설정하는 파라미터로 기본값은 `-started`입니다.
      responses:
        '200':
          description: 정상 조회
          schema:
            $ref: '#/definitions/PaymentResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 거래건이 존재하지 않는 경우
      x-portone-category: payment
  '/payments/findAll/{merchant_uid}/{payment_status}':
    get:
      tags:
        - payments
      summary: 결제 복수조회(고객사 주문번호 중복 포함) API
      description: >-
        고객사지정 고유번호 및 상태기준으로 결제내역을 확인합니다<br> 동일한 merchant_uid가 여러 건 존재하는 경우, 존재하는
        모든 거래가 조회됩니다.
             <br><br>payment_status를 추가로 지정하시면, 해당 status에 해당하는 가장 최신 데이터를 반환합니다.
      operationId: getAllPaymentsByMerchantUid
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: path
          description: 결제요청 시 고객사에서 요청한 merchant_uid
          required: true
          type: string
          default: merchant_1448280088556
          x-portone-name: 고객사 주문번호
          x-portone-description: 결제요청 시 고객사에서 요청한 고객사 주문번호
        - name: payment_status
          in: path
          description: >-
            특정 status상태의 값만 필터링하고 싶은 경우에 사용.<br>지정하지 않으면 모든 상태를 조회합니다.
            <ul><li>ready(미결제)</li> <li>paid(결제완료)</li> <li>failed(결제실패)</li>
            <li>cancelled(환불취소)</li></ul>
          required: false
          type: string
          default: ''
          x-portone-name: 결제상태코드
          x-portone-description: 특정 status상태의 값만 필터링하고 싶은 경우에 사용하는 파라미터로 지정하지 않으면 **모든 상태**를 조회합니다.
        - name: page
          in: query
          description: 1부터 시작. 기본값 1
          required: false
          type: integer
          x-portone-name: 페이지번호
          x-portone-description: 1부터 시작하며 기본값은 1입니다.
        - name: limit
          in: query
          description: '한 번에 조회할 결제건수.(최대 1000건, 기본값 20건)'
          required: false
          type: integer
          default: '20'
          maximum: '1000'
          minimum: '1'
          x-portone-name: 페이지당 조회건수
          x-portone-description: '한 번에 조회할 결제건수.(최대 1000건, 기본값 20건)'
        - name: sorting
          in: query
          description: |-
            기본값은 -started<br>마이너스(-) 기호가 앞에 붙으면 내림차순 정렬을 의미합니다.<br>
                 <ul> <li>-started : 결제시작시각(결제창오픈시각) 기준 내림차순(DESC) 정렬
                 </li><li>started : 결제시작시각(결제창오픈시각) 기준 오름차순(ASC) 정렬
                 </li><li>-paid : 결제완료시각 기준 내림차순(DESC) 정렬
                 </li><li>paid : 결제완료시각 기준 오름차순(ASC) 정렬
                 </li><li>-updated : 최종수정시각(결제건 상태변화마다 수정시각 변경됨) 기준 내림차순(DESC) 정렬
                 </li> <li>updated : 최종수정시각(결제건 상태변화마다 수정시각 변경됨) 기준 오름차순(ASC) 정렬</li></ul>
          required: false
          type: string
          default: '-started'
          enum:
            - '-started'
            - started
            - '-paid'
            - paid
            - '-updated'
            - updated
          x-portone-name: 정렬기준
          x-portone-description: 정렬기준을 나타내는 파라미터로 기본값은 `-started`입니다.
      responses:
        '200':
          description: 정상 조회
          schema:
            $ref: '#/definitions/PaymentListResponse'
        '400':
          description: 'merchant_uid누락, 올바르지 않은 status 등 파라메터가 잘못된 경우'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 유효하지 않은 merchant_uid
      x-portone-category: payment
  '/payments/status/{payment_status}':
    get:
      tags:
        - payments
      summary: 결제상태기준 복수조회 API
      description: |-
        미결제/결제완료/결제취소/결제실패 상태 별로 검색할 수 있습니다.(20건씩 최신순 페이징)<br><br>
             검색기간은 최대 90일까지이며 to파라메터의 기본값은 현재 unix timestamp이고 from파라메터의 기본값은 to파라메터 기준으로 90일 전입니다.
             때문에, from/to 파라메터가 없이 호출되면 현재 시점 기준으로 최근 90일 구간에 대한 데이터를 검색하게 됩니다. <br>
             from, to 파라메터를 지정하여 90일 단위로 과거 데이터 조회는 가능합니다.<br>
      operationId: getPaymentsByStatus
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: payment_status
          in: path
          description: >-
            <ul> <li>전체 : all</li> <li>미결제 : ready</li> <li>결제완료 : paid</li>
            <li>결제취소 : cancelled</li> <li>결제실패 : failed</li></ul>
          required: true
          type: string
          enum:
            - all
            - ready
            - paid
            - cancelled
            - failed
          x-portone-name: 결제상태코드
          x-portone-description: 조회할 결제건의 결제상태 코드
        - name: page
          in: query
          description: 1부터 시작. 기본값 1
          required: false
          type: integer
          x-portone-name: 페이지번호
          x-portone-description: 1부터 시작하며 기본값 1입니다.
        - name: limit
          in: query
          description: '한 번에 조회할 결제건수.(최대 1000건, 기본값 20건)'
          required: false
          type: integer
          default: '20'
          maximum: '1000'
          minimum: '1'
          x-portone-name: 페이지 당 조회건수
          x-portone-description: '한 번에 조회할 결제건수.(최대 1000건, 기본값 20건)'
        - name: from
          in: query
          description: >-
            기본값 : to 파라메터 기준으로 90일 전 unix timestamp.<br><br>시간별 검색 시작 시각(>=)
            UNIX TIMESTAMP. 결제건의 최종 status에 따라 다른 검색기준이 적용됩니다.<br>ready : 결제시작
            시각 기준<br>paid : 결제완료 시각 기준<br>cancelled : 결제취소 시각 기준<br>failed :
            결제실패 시각 기준
          required: false
          type: integer
          x-portone-name: 검색 시작 시각
          x-portone-description: >-
            기본값은 to 파라메터 기준으로 **90일** 전 unix timestamp입니다. (시간별 검색 시작 시각(>=)
            UNIX TIMESTAMP)
        - name: to
          in: query
          description: >-
            기본값 : 현재 unix timestamp<br><br>시간별 검색 종료 시각(<=) UNIX TIMESTAMP. 결제건의
            최종 status에 따라 다른 검색기준이 적용됩니다.<br>ready : 결제시작 시각 기준<br>paid : 결제완료
            시각 기준<br>cancelled : 결제취소 시각 기준<br>failed : 결제실패 시각 기준
          required: false
          type: integer
          x-portone-name: 검색 종료 시각
          x-portone-description: 기본값은 현재 unix timestamp입니다. (시간별 검색 종료 시각(<=) UNIX TIMESTAMP)
        - name: sorting
          in: query
          description: |-
            기본값은 -started <br>마이너스(-) 기호가 앞에 붙으면 내림차순 정렬을 의미합니다.<br>
                 <ul> <li>-started : 결제시작시각(결제창오픈시각) 기준 내림차순(DESC) 정렬
                 </li><li>started : 결제시작시각(결제창오픈시각) 기준 오름차순(ASC) 정렬
                 </li><li>-paid : 결제완료시각 기준 내림차순(DESC) 정렬
                 </li><li>paid : 결제완료시각 기준 오름차순(ASC) 정렬
                 </li><li>-updated : 최종수정시각(결제건 상태변화마다 수정시각 변경됨) 기준 내림차순(DESC) 정렬
                 </li><li>updated : 최종수정시각(결제건 상태변화마다 수정시각 변경됨) 기준 오름차순(ASC) 정렬</li></ul>
          required: false
          type: string
          default: '-started'
          enum:
            - '-started'
            - started
            - '-paid'
            - paid
            - '-updated'
            - updated
          x-portone-name: 정렬기준
          x-portone-description: 정렬기준을 나타내는 파라미터로 기본값은 `-started`입니다.
      responses:
        '200':
          description: 정상 조회
          schema:
            $ref: '#/definitions/PaymentListResponse'
        '400':
          description: '유효하지 않은 payment_status인 경우, 데이터 범위를 넘어선 page인 경우'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-category: payment
  /payments/cancel:
    post:
      tags:
        - payments
      summary: 결제취소 API
      description: |-
        승인된 결제를 취소합니다.<br>신용카드/실시간계좌이체/휴대폰소액결제의 경우 즉시 취소처리가 이뤄지게 되며,
             가상계좌와 휴대폰소액결제 익월 환불(KCP)의 경우는 환불받으실 계좌정보를 같이 전달해주시면 환불정보가 PG사에 등록되어 익영업일에 처리됩니다.
             (가상계좌 환불, 휴대폰소액결제 익월 환불(KCP)의 경우 관련 특약계약 필요)
      operationId: cancelPayment
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: formData
          description: 취소할 거래의 포트원 거래고유번호
          required: false
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 취소할 거래의 포트원 거래고유번호
        - name: merchant_uid
          in: formData
          description: >-
            고객사에서 전달한 거래 고유번호.<br>imp_uid, merchant_uid 중 하나는 필수이어야 합니다.<br>두 값이
            모두 넘어오면 imp_uid를 우선 적용합니다.
          required: false
          type: string
          x-portone-name: 고객사 주문번호
          x-portone-description: >-
            고객사에서 전달한 거래 고유번호로 imp_uid, merchant_uid 중 하나는 필수이어야 합니다. (두 값이 모두
            넘어오면 **imp_uid를 우선 적용**합니다.)
        - name: amount
          in: formData
          description: (부분)취소요청 금액<br><h5>누락하거나 0을 입력하는 경우 전액 취소 요청합니다.</h5>
          required: false
          type: number
          x-portone-name: (부분)취소 요청금액
          x-portone-summary: |
            <p>(부분)취소요청금액으로 누락하거나 0을 입력 시 전액취소를 요청합니다.</p>
          x-portone-description: (부분)취소요청 금액으로 **(누락하거나 0을 입력하는 경우 전액 취소 요청합니다.)**
        - name: tax_free
          in: formData
          description: >-
            (부분)취소요청금액 중 면세금액(누락되면 0원처리)<br><h5>단, 아래 PG사의 경우 자동으로 0원 처리 되지 않으므로
            면세 결제에 한하여 필수 입력
            바랍니다.</h5><ul><li>kcp</li><li>kcp_quick</li><li>kicc</li><li>nice</li><li>payco</li></ul>
          required: false
          type: number
          x-portone-name: (부분)취소요청 금액 중 면세금액
          x-portone-summary: |
            <p>(부분)취소요청금액 중 면세금액으로 누락되면 0원처리합니다.</p>
          x-portone-description: '단, 아래 PG사의 경우 자동으로 0원 처리 되지 않으므로 면세 결제에 한하여 **필수 입력** 바랍니다.'
          x-portone-per-pg:
            kcp:
              description: |
                <p>누락시 자동으로 0원 처리 되지 않으므로 면세 결제에 한하여 필수 입력 바랍니다.</p>
            kcp_quick:
              description: |
                <p>누락시 자동으로 0원 처리 되지 않으므로 면세 결제에 한하여 필수 입력 바랍니다.</p>
            kicc:
              description: |
                <p>누락시 자동으로 0원 처리 되지 않으므로 면세 결제에 한하여 필수 입력 바랍니다.</p>
            nice:
              description: |
                <p>누락시 자동으로 0원 처리 되지 않으므로 면세 결제에 한하여 필수 입력 바랍니다.</p>
            payco:
              description: |
                <p>누락시 자동으로 0원 처리 되지 않으므로 면세 결제에 한하여 필수 입력 바랍니다.</p>
            smartro_v2:
              description: |
                <p>부분취소시 면세 금액이 포함된 경우 반드시 취소 면세금액(tax_free)을 필수 입력 바랍니다</p>
            welcome:
              description: >
                <p><strong><code>부가세업체정함</code> 설정 고객사에 한해 결제 시 면세금액을 지정했던 경우
                필수</strong> 입력 바라며, 입력한 면세금액이 그대로 취소 승인되기 때문에 정확한 금액을 입력해 주시길
                바랍니다.</p>
        - name: vat_amount
          in: formData
          description: >-
            (부분)취소요청금액 중 부가세 금액(기본값: null).<br>단, <b>결제 시 부가세를 지정했던 경우 필수</b> 입력
            바랍니다.<br><h5>지원되는
            PG사</h5><ul><li>나이스페이먼츠(nice)</li><li>이니시스(html5_inicis)</li><li>웰컴페이먼츠</li><li>(신)
            나이스페이먼츠(nice_v2)</li></ul>
          required: false
          type: number
          x-portone-name: (부분)취소요청금액 중 부가세 금액
          x-portone-summary: |
            <p>(부분)취소요청금액 중 부가세 금액으로 기본값은 <code>null</code>입니다.</p>
          x-portone-description: '단, **결제 시 부가세를 지정했던 경우 필수** 입력 바랍니다.'
          x-portone-supported-pgs:
            - nice
            - html5_inicis
            - welcome
            - nice_v2
          x-portone-per-pg:
            nice:
              description: |
                <p><strong>결제 시 부가세를 지정했던 경우 필수</strong> 입력 바랍니다.</p>
            html5_inicis:
              description: |
                <p><strong>결제 시 부가세를 지정했던 경우 필수</strong> 입력 바랍니다.</p>
            welcome:
              description: >
                <p><strong><code>부가세업체정함</code> 설정 고객사에 한해 결제 시 부가세를 지정했던 경우
                필수</strong> 입력이 필요하며, 입력한 부가세가 그대로 취소 승인되기 때문에 정확한 금액을 입력해 주시길
                바랍니다.</p>
        - name: checksum
          in: formData
          description: >-
            취소 트랜잭션 수행 전, 현재시점의 취소 가능한 잔액.<br><br>API요청자가 기록하고 있는 취소가능 잔액과 포트원이
            기록하고 있는 취소가능 잔액이 일치하는지 사전에 검증하고, 검증에 실패하면 트랜잭션을 수행하지 않습니다. null인
            경우에는 검증 프로세스를 생략합니다.
          required: false
          type: number
          x-portone-name: 현재시점의 취소 가능한 잔액
          x-portone-summary: |
            <p>취소 트랜잭션 수행 전, 현재시점의 취소 가능한 잔액</p>
          x-portone-description: >-
            API요청자가 기록하고 있는 취소가능 잔액과 포트원이 기록하고 있는 취소가능 잔액이 일치하는지 사전에 검증하고, 검증에
            실패하면 트랜잭션을 수행하지 않습니다. null인 경우에는 검증 프로세스를 생략합니다.
        - name: reason
          in: formData
          description: 취소 사유
          required: false
          type: string
          x-portone-name: 취소 사유
          x-portone-description: 결제건을 취소하려는 사유
          x-portone-per-pg:
            naverpay:
              required: true
              description: |
                <p>해당 파라미터 누락시 <strong>네이버페이 실 검수를 통과할 수 없습니다.</strong></p>
        - name: refund_holder
          in: formData
          description: '환불계좌 예금주 <br>(가상계좌취소, 휴대폰소액결제 익월 환불(KCP)시 필수)'
          required: false
          type: string
          x-portone-name: 환불계좌 예금주
          x-portone-description: 환불받을 계좌의 예금주
          x-portone-per-pg:
            kcp:
              description: |
                <p>휴대폰소액결제 익월 환불시 필수입력입니다.</p>
            smartro_v2:
              description: |
                <p>가상계좌, 계좌이체 거래건 환불시 필수입력입니다.</p>
        - name: refund_bank
          in: formData
          description: >-
            환불계좌 은행코드<br><a
            href="https://developers.portone.io/docs/ko/tip/pg-1">링크보기</a><br>
            가상계좌취소, 휴대폰소액결제 익월 환불(KCP)시 필수)
          required: false
          type: string
          x-portone-name: 환금계좌 은행코드
          x-portone-summary: |
            <p>환불받을 계좌의 은행코드</p>
          x-portone-description: '[은행 코드 리스트 확인하기](https://developers.portone.io/docs/ko/tip/pg-1)'
          x-portone-per-pg:
            kcp:
              description: |
                <p>휴대폰소액결제 익월 환불시 필수입력입니다.</p>
            smartro_v2:
              description: |
                <p>가상계좌, 계좌이체 거래건 환불시 필수입력입니다.</p>
        - name: refund_account
          in: formData
          description: '환불계좌 계좌번호<br>(가상계좌취소, 휴대폰소액결제 익월 환불(KCP)시 필수)'
          required: false
          type: string
          x-portone-name: 환불계좌 계좌번호
          x-portone-description: 환불받을 계좌번호
          x-portone-per-pg:
            kcp:
              description: |
                <p>휴대폰소액결제 익월 환불시 필수입력입니다.</p>
            smartro_v2:
              description: |
                <p>가상계좌, 계좌이체 거래건 환불시 필수입력입니다.</p>
        - name: refund_tel
          in: formData
          description: '환불계좌 예금주 연락처<br>(가상계좌, 스마트로 - 구모듈 취소인 경우 필수)'
          required: false
          type: string
          x-portone-name: 환불계좌 예금주 연락처
          x-portone-description: 환불받을 계좌의 예금주 연락처 (가상계좌 취소인 경우 필수)
          x-portone-per-pg:
            smartro:
              required: true
            smartro_v2:
              description: |
                <p>가상계좌, 계좌이체 거래건 환불시 필수입력입니다.</p>
        - name: retain_promotion
          in: formData
          description: >-
            프로모션이 적용된 결제일 경우 결제 취소 이후 잔여 금액이 프로모션 정책에 위반되더라도 프로모션을 유지할지에 대한 여부
            (default: false)
          required: false
          type: boolean
          x-portone-name: 프로모션 정책 유지 여부
          x-portone-description: >-
            프로모션이 적용된 결제일 경우 결제 취소 이후 잔여 금액이 프로모션 정책에 위반되더라도 프로모션을 유지할지에 대한 여부
            (default: false)
        - name: extra
          in: formData
          description: |-
            네이버페이 사용 시 <b> extra.requester </b>를 설정해야합니다.<br>
                 <ul><li>customer : 구매자에 의한 요청
                 </li><li>admin : (기본값) 관리자에 의한 요청</li></ul>
          required: false
          type: array
          x-portone-name: 추가 파라미터
          x-portone-description: 결제 취소 요청시 필요한 추가 정보
          x-portone-per-pg:
            naverpay:
              required: true
              description: |
                <ul>
                <li>customer : 구매자에 의한 요청</li>
                <li>admin : (기본값) 관리자에 의한 요청</li>
                </ul>
      responses:
        '200':
          description: 정상 조회
          schema:
            $ref: '#/definitions/PaymentResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-category: payment
      x-portone-per-pg:
        kcp:
          description: >
            <p>휴대폰소액결제 익월 환불의 경우는 환불받으실 계좌정보를 같이 전달해주시면 환불정보가 PG사에 등록되어
            <strong>익영업일</strong>에 처리됩니다. (관련 특약계약 필요)</p>
        ksnet:
          description: |
            <p>결제 취소 특이사항
                 - 휴대폰 결제는 부분취소가 불가능합니다.
                 - 카드결제, 가상계좌, 계좌이체, 간편결제의 경우 부분취소는 총 <strong>9번</strong> 가능하며 취소는 결제일 기준 <strong>6개월 이내</strong>에만 가능합니다.
                 - 계좌입금 거래 시 발급한 현금영수증은 경우 거래 취소 시 <strong>자동으로 취소 되지 않습니다.</strong> 수동으로 취소해야 합니다.
                 - 복합과세의 계좌입금 거래를 부분취소하는 경우 기존에 발급한 현금영수증을 취소하고 부분취소 금액이 반영된 금액 정보로 다시 현금영수증을 발급해야합니다.
                 - 가상계좌 결제건 취소는 <strong>23:00~06:00</strong> 시간 외에만 가능합니다.</p>
        smartro_v2:
          description: |
            <p>테스트 모드 특이사항
                 - 체크카드 결제 건의 경우 전액 취소만 가능하며 <strong>부분취소는 불가능</strong>합니다.
                 - 카카오페이에서 등록된 카드로 결제시, 결제 된 금액이 자동으로 취소되지 않으므로 반드시 포트 REST 결제취소 API(POST /payments/cancel)로 직접 취소하셔야 합니다.</p>
            <p>연동 특이사항
                 - 가상 계좌 결제건 취소에 한해 취소 요청이후 즉시 환불 처리가 되는 것이 아니라 스마트로에서 입력한 환불계좌로 최종 환불 처리하면,
                 고객사는 결과를 핑백(웹훅)으로 응답받은 후에 최종 취소 완료 처리를 해주셔야 합니다.
                 - 현금영수증 미발행 가상 계좌 결제건은 스마트로에서 면세금액에 대한 검증을 따로 지원하지 않기 때문에, 취소시 정확한 취소 면세금액을 요청해야합니다.</p>
        naverpay:
          description: >-
            <p>API 호출시 아래 파라미터를 반드시 설정해 주셔야 합니다. (<strong>해당 파라미터 누락시 네이버페이 실
            검수를 통과할 수 없습니다.</strong>)
                 - <code>extra.requester</code>: API를 호출하는 출처
                 - <code>customer</code>: 구매자에 의한 요청
                 - <code>admin</code>(기본값): 어드민에 의한 요청
                 - <code>reason</code>: 결제 취소 사유</p>
            <h4 id="예시json"><a class="anchor" aria-hidden="true" tabindex="-1"
            href="#예시json"><svg class="octicon octicon-link" viewBox="0 0 16 16"
            width="16" height="16" aria-hidden="true"><path fill-rule="evenodd"
            d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83
            2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95
            0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0
            010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0
            00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0
            00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83
            0z"></path></svg></a>예시(json)</h4>

            <pre><code>```javascript

            {

            "imp_uid" : "imp_123412341234", //환불처리할 포트원 거래고유번호

            "amount" : 3000, //환불할 금액

            "reason": "결제 취소 사유", //실제 사유와 같아야 함

            "extra" : {

            "requester" : "customer"

            }

            }

            ```</code></pre><h4 id="예시form-urlencoded"><a class="anchor"
            aria-hidden="true" tabindex="-1" href="#예시form-urlencoded"><svg
            class="octicon octicon-link" viewBox="0 0 16 16" width="16"
            height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775
            3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2
            0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5
            0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0
            012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0
            004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83
            0z"></path></svg></a>예시(form-urlencoded)</h4>

            <pre><code>```

            imp_uid=imp_123412341234&amp;amount=3000&amp;extra[requester]=customer

            ```
             </code></pre>
        html5_inicis:
          description: >
            <p>취소 시 <strong>요청된 값 그대로 이니시스에서 취소</strong>가 되므로, 취소할 금액, 부가세,
            면세금액을 정확하게 전달해 주셔야 부가세, 면세금액이 설정되어 정상적으로 취소가 된다는 점 주의해주시기 바랍니다.</p>
        nice:
          description: >
            <p>상점 아이디 설정이 지정금액 방식인 경우에는 취소 시에 공급가액, 부가세, 봉사료, 면세금액 등을 설정하도록 하고
            있습니다.(<a href="https://developers.nicepay.co.kr/tip.php"
            rel="noopener noreferrer">링크</a>의 1617 코드 참조). 취소 시 취소할 금액, 부가세,
            면세금액을 정확하게 전달해 주셔야 공급가액, 부가세, 면세금액, 봉사료(0원)가 설정되어 정상적으로 취소가 된다는 점
            주의해주시기 바랍니다.</p>
        daou:
          description: >
            <p>가상계좌 결제 취소시, PG사와 특약 필요하며, 실제 환불 금액 입금까지 <strong>7 영업일
            이상</strong> 소요됩니다.</p>

            <ul>

            <li>가상계좌 입금 완료 건에 대한 결제 취소(환불)은 가상계좌 발급 시 부과되는 수수료 이슈로 인해 키움페이(구 다우,
            페이조아)와 특약을 맺어야지만 가능합니다. 이 특약 없이는 기본적으로 가상계좌 결제 건의 환불은
            <strong>불가능</strong>합니다.</li>

            <li>키움페이(구 다우, 페이조아) 가상계좌 결제 취소(환불)는 고객사 → 포트원 → 키움페이(구 다우, 페이조아)로
            환불 요청 접수 시, 키움페이(구 다우, 페이조아) 담당자가 수기로 확인 후 환불 처리를 해 주는 프로세스로 진행되기
            때문에 환불 금액이 실제로 입금 될때까지 <strong>7 영업일 이상</strong> 소요됩니다.</li>

            </ul>
        paypal_v2:
          description: >
            <p>결제 취소 요청 시 취소 요청이 바로 승인 되지 않고 일정 시간 후 승인처리되는 경우가 존재합니다.
                 고객사는 결제 취소 요청 응답 처리 시 취소가 승인되었는지 여부를 확인해야 합니다.</p>
            <p>결제 취소 API를 통해 취소 요청을 한 경우 API 응답의 <strong>status</strong>와
            <strong>cancel_history</strong> 값을 기준으로 취소 승인 여부를 판단해야 합니다. status가
            cancelled 이고 cancel_history에 취소 요청 내역이 있는 경우 취소가 승인된 것이고 그렇지 않은 경우
            취소 승인대기 상태입니다.

            콘솔을 통한 취소 요청이 승인대기인 경우 결제내역에서 결제상태는 결제취소로 변경되지 않고 진행중인 취소요청 내역이 있음이
            표시되며 결제내역 상세 화면에서 취소요청내역이 조회됩니다.</p>

            <p>취소 요청이 승인대기 상태인 경우 최종적으로 승인되거나 승인되지 않을 수 있기 때문에 <span>고객사는 최종 취소
            처리 결과를 전달받기 위해 고객사 통보 웹훅 기능을 연동해야 합니다.</span></p>

            <h3 id="취소-요청이-승인대기-중인-결제-상태"><a class="anchor" aria-hidden="true"
            tabindex="-1" href="#취소-요청이-승인대기-중인-결제-상태"><svg class="octicon
            octicon-link" viewBox="0 0 16 16" width="16" height="16"
            aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75
            0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0
            .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0
            00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0
            012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0
            004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83
            0z"></path></svg></a>취소 요청이 승인대기 중인 결제 상태</h3>

            <p><img
            src="https://raw.githubusercontent.com/portone-io/developers.portone.io/e206047c43ed15bc364b58e0647dda4584964c9c/public/gitbook-assets/ko/image%20%283%29%20%282%29.png"
            alt="" /></p>

            <h3 id="취소-요청이-승인대기-중인-결제내역-상세"><a class="anchor" aria-hidden="true"
            tabindex="-1" href="#취소-요청이-승인대기-중인-결제내역-상세"><svg class="octicon
            octicon-link" viewBox="0 0 16 16" width="16" height="16"
            aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75
            0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0
            .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0
            00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0
            012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0
            004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83
            0z"></path></svg></a>취소 요청이 승인대기 중인 결제내역 상세</h3>

            <p><img
            src="https://raw.githubusercontent.com/portone-io/developers.portone.io/e206047c43ed15bc364b58e0647dda4584964c9c/public/gitbook-assets/ko/image%20%281%29%20%282%29.png"
            alt="" />
                 </p>
        tosspayments:
          description: |
            <p>결제수단이 <strong>상품권</strong>인 결제건은 부분취소가 불가능합니다</p>
        welcome:
          description: >
            <p>부분 취소는 지불수단 별로 <strong>부분 환불 사용 서비스 신청</strong> 고객사에 한해 지원 가능합니다.
            부분 환불 사용 서비스 사용 신청 및 사용 여부 문의는 웰컴페이먼츠 계약 담당자에게 확인해주시기를 바랍니다.</p>
  /payments/prepare:
    put:
      tags:
        - payments.validation
      summary: 결제금액 단건 수정 API
      description: POST 결제금액 사전등록 API 로 이미 등록된 결제사전정보에 대해 금액을 수정하는 기능입니다.
      operationId: editPreparePayment
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: formData
          description: 이미 사전등록한 고객사 주문번호
          required: true
          type: string
          maxLength: 40
          x-portone-name: 고객사 주문번호
          x-portone-description: 이미 사전등록한 고객사 주문번호
        - name: amount
          in: formData
          description: 결제예정금액
          required: true
          type: number
          x-portone-name: 결제 예정금액
          x-portone-description: 수정 할 결제건의 결제예정금액
        - name: currency
          in: formData
          description: '결제예정통화.(ex. KRW, USD, JPY) null일 경우 통화 검증을 하지 않습니다. (default=null)'
          required: false
          type: string
          x-portone-name: 결제예정통화
          x-portone-description: 사전 등록할 결제예정통화. null일 경우 통화 검증을 하지 않습니다.
      responses:
        '200':
          description: 정상 조회
          schema:
            $ref: '#/definitions/PaymentPrepareResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 요청된 merchant_uid 로 등록된 결제사전정보를 찾을 수 없는 경우
      x-portone-category: payment.validation
    post:
      tags:
        - payments.validation
      summary: 결제금액 사전등록 API
      description: >-
        (포트원 javascript사용)인증방식의 결제를 진행할 때 결제금액 위변조시 결제진행자체를 block하기 위해 결제예정금액을
        사전등록하는 기능입니다.
             * <br>이 API를 통해 사전등록된 고객사 주문번호(merchant_uid)에 대해, IMP.request_pay()에 전달된 merchant_uid가 일치하는 주문의 결제금액이 다른 경우 PG사 결제창 호출이 중단됩니다.
      operationId: preparePayment
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: formData
          description: 고객사 주문번호
          required: true
          type: string
          maxLength: 40
          x-portone-name: 고객사 주문번호
          x-portone-description: 결제금액을 사전 등록할 결제건의 고객사 주문번호
        - name: amount
          in: formData
          description: 결제예정금액
          required: true
          type: number
          x-portone-name: 결제예정금액
          x-portone-description: 사전 등록할 결제예정금액
        - name: currency
          in: formData
          description: '결제예정통화.(ex. KRW, USD, JPY) null일 경우 통화 검증을 하지 않습니다. (default=null)'
          required: false
          type: string
          x-portone-name: 결제예정통화
          x-portone-description: 사전 등록할 결제예정통화. null일 경우 통화 검증을 하지 않습니다.
      responses:
        '200':
          description: 정상 조회
          schema:
            $ref: '#/definitions/PaymentPrepareResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-category: payment.validation
  '/payments/prepare/{merchant_uid}':
    get:
      tags:
        - payments.validation
      summary: 결제금액 단건조회 API
      description: POST 결제금액 사전등록 API 로 이미 등록되어있는 사전등록 결제정보를 조회합니다
      operationId: getPaymentPrepareByMerchantUid
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: path
          description: 고객사 주문번호
          required: true
          type: string
          x-portone-name: 고객사 주문번호
          x-portone-description: 결제금액을 조회할 결제건의 고객사 주문번호
      responses:
        '200':
          description: 정상 조회
          schema:
            $ref: '#/definitions/PaymentPrepareResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-category: payment.validation
  /paymentwall/delivery:
    post:
      tags:
        - paymentwall
      summary: 페이먼트월 배송등록 API
      description: >-
        이커머스(실물 상품) 비즈니스의 경우, 페이먼트월에서 필수적으로 요구되는 배송정보 등록 API <br> 해당 배송등록을 누락한
        경우 페이먼트월 PG사로부터 정산대금을 받지 못합니다.
      operationId: paymentwall_delivery
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: formData
          description: 포트원 거래고유번호
          required: true
          type: string
          maxLength: 40
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 배송등록 할 결제건의 포트원 거래고유번호
        - name: merchant_uid
          in: formData
          description: 고객사 주문번호
          required: true
          type: string
          maxLength: 40
          x-portone-name: 고객사 주문번호
          x-portone-description: 배송등록 할 결제건의 고객사 주문번호
        - name: type
          in: formData
          description: |-
            상품구분코드
                                        <ul><li> physical : 실물</li>
                                        <li>digital : 디지털 </li></ul>
          required: true
          type: string
          maxLength: 10
          enum:
            - physical
            - digital
          x-portone-name: 상품구분코드
          x-portone-description: 배송등록 할 결제건의 상품 구분 코드
        - name: status
          in: formData
          description: |-
            아래 중 하나는 필수적으로 설정이 필요합니다.
                                        <ul><li>order_placed</li>
                                        <li>order_shipped</li>
                                        <li>delivering</li>
                                        <li>delivered</li></ul>
          required: true
          type: string
          maxLength: 10
          enum:
            - order_placed
            - order_shipped
            - delivering
            - delivered
          x-portone-name: 배송상태 구분코드
          x-portone-description: 배송등록 할 결제건의 배송 상태코드
        - name: carrier_tracking_id
          in: formData
          description: 운송장 번호 (physical 주문인 경우 필수 파라미터)
          type: string
          maxLength: 64
          x-portone-name: 운송장 번호
          x-portone-description: 배송등록 할 결제건의 운송장 번호 (`physical` 주문인 경우 필수 파라미터)
        - name: carrier_type
          in: formData
          description: 운송사 이름 (physical 주문인 경우 필수 파라미터)
          type: string
          maxLength: 64
          x-portone-name: 운송사 이름
          x-portone-description: 운송사 이름 (`physical` 주문인 경우 필수 파라미터)
        - name: estimated_delivery_datetime
          in: formData
          description: '도착예상시간 Unix timestamp sec (digital인 경우, 지금 시간을 기록해도 무방)'
          required: true
          type: integer
          maxLength: 64
          x-portone-name: 도착예상시간
          x-portone-description: '도착예상시간 Unix timestamp sec (`digital`인 경우, 지금 시간을 기록해도 무방)'
        - name: estimated_update_datetime
          in: formData
          description: '배송상태 업데이트 예정시간 Unix timestamp sec (digital인 경우, 지금 시간을 기록해도 무방)'
          required: true
          type: integer
          maxLength: 64
          x-portone-name: 배송상태 업데이트 예정시간
          x-portone-description: '배송상태 업데이트 예정시간 Unix timestamp sec (`digital`인 경우, 지금 시간을 기록해도 무방)'
        - name: reason
          in: formData
          description: 사유
          type: string
          maxLength: 64
          x-portone-name: 사유
          x-portone-description: ''
        - name: refundable
          in: formData
          description: |-
            환불가능여부
                                        <ul><li>yes</li>
                                        <li>no</li></ul>
          required: true
          type: string
          maxLength: 64
          enum:
            - 'yes'
            - 'no'
          x-portone-name: 환불가능여부
          x-portone-description: 결제건의 환불가능여부를 나타내는 파라미터
        - name: details
          in: formData
          description: 자세한 사항들
          type: string
          maxLength: 400
          x-portone-name: 상세 사항
          x-portone-description: ''
        - name: shipping_address_email
          in: formData
          description: 수신자 email
          required: true
          type: string
          maxLength: 50
          x-portone-name: email
          x-portone-description: 수신자의 email주소
        - name: shipping_address_country
          in: formData
          description: 수신자 국가 (physical 주문인 경우 필수 파라미터)
          type: string
          maxLength: 40
          x-portone-name: 수신자 국가
          x-portone-description: 수신자의 국가 (`physical` 주문인 경우 필수 파라미터)
        - name: shipping_address_city
          in: formData
          description: 수신자 시 (physical 주문인 경우 필수 파라미터)
          type: string
          maxLength: 40
          x-portone-name: 수신자 시
          x-portone-description: 수신자 주소 중 시 (`physical` 주문인 경우 필수 파라미터)
        - name: shipping_address_zip
          in: formData
          description: 수신자 우편번호 (physical 주문인 경우 필수 파라미터)
          type: string
          maxLength: 40
          x-portone-name: 수신자 우편번호
          x-portone-description: 수신자 우편번호 (`physical` 주문인 경우 필수 파라미터)
        - name: shipping_address_state
          in: formData
          description: 수신자 주. 미국이 아닌 경우 'N/A'로 표기 (physical 주문인 경우 필수 파라미터)
          type: string
          maxLength: 40
          x-portone-name: 수신자 주
          x-portone-description: 수신자 주소 중 주. 미국이 아닌 경우 'N/A'로 표기 (`physical` 주문인 경우 필수 파라미터)
        - name: shipping_address_street
          in: formData
          description: 수신자 거리명 (physical 주문인 경우 필수 파라미터)
          type: string
          maxLength: 40
          x-portone-name: 수신자 거리명
          x-portone-description: 수신자 거리명 (`physical` 주문인 경우 필수 파라미터)
        - name: shipping_address_phone
          in: formData
          description: 수신자 전화번호 (physical 주문인 경우 필수 파라미터)
          type: string
          maxLength: 40
          x-portone-name: 수신자 전화번호
          x-portone-description: 수신자 전화번호 (`physical` 주문인 경우 필수 파라미터)
        - name: shipping_address_firstname
          in: formData
          description: 수신자 이름 (physical 주문인 경우 필수 파라미터)
          type: string
          maxLength: 40
          x-portone-name: 수신자 이름
          x-portone-description: 수신자 이름 (`physical` 주문인 경우 필수 파라미터)
        - name: shipping_address_lastname
          in: formData
          description: 수신자 성 (physical 주문인 경우 필수 파라미터)
          type: string
          maxLength: 40
          x-portone-name: 수신자 성
          x-portone-description: 수신자 성 (`physical` 주문인 경우 필수 파라미터)
      responses:
        '200':
          description: 정상 결제
          schema:
            $ref: '#/definitions/PaymentwallDeliveryAnnotation'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - paymentwall
      x-portone-category: pg.paymentwall
  '/receipts/{imp_uid}':
    get:
      tags:
        - receipts
      summary: 발급내역 단건 조회 API
      description: 포트원을 통해 발행된 현금영수증 상세정보를 조회하는 API입니다.
      operationId: getReceipt
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 현금영수증을 조회할 결제건의 포트원 거래고유번호
      responses:
        '200':
          description: 현금영수증 상세정보 조회 완료
          schema:
            $ref: '#/definitions/ReceiptResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 존재하지 않는 포트원 거래정보이거나 현금영수증 발행된 내역이 확인되지 않는 경우
      x-portone-supported-pgs:
        - nice
        - daou
        - html5_inicis
        - kcp
        - payco
        - smartro
        - uplus
        - tosspayments
        - ksnet
        - smartro_v2
        - nice_v2
        - welcome
      x-portone-category: receipt
    post:
      tags:
        - receipts
      summary: 현금영수증 단건발급 API
      description: >-
        포트원을 통해 발생된 현금성 거래<b>(가상계좌, 계좌이체)</b>의 포트원 거래고유번호(imp_uid)를 기준으로 현금영수증이
        발급 됩니다.<br>
             imp_uid 거래를 처리하는데 사용된 PG설정값을 그대로 활용합니다.<br>
             (ex. KCP 거래건이면 KCP를 통해 현금영수증 발행 API처리)<br>
             현금영수증 발급 금액은 현금성 거래의 금액으로 자동 적용됩니다. 부분취소된 거래인 경우 남은 잔액으로 발급됩니다.<br><br>
             <h4>지원되는 PG사</h4>
             <ul> <li>KG 이니시스</li> <li>NHN KCP</li> <li>나이스페이먼츠</li> <li>KICC</li>
             <li>헥토파이낸셜(구 세틀뱅크)</li> <li>키움페이(구 다우, 페이조아)</li>
             <li>토스페이먼츠 - 신모듈</li> <li>KSNET</li> <li>스마트로 - 신모듈</li><li>(신) 나이스페이</li><li>웰컴페이먼츠</li></ul>
      operationId: issueReceipt
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 거래 고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 현금영수증을 발급할 결제건의 포트원 거래 고유번호
        - name: product_type
          in: formData
          description: |-
            현금영수증 발행 주문 상품구분<br>(필수 : KSNET)
                 <ul><li>real: 실물상품
                 </li><li>digital: 디지털컨텐츠</li></ul>
          required: false
          type: string
          enum:
            - real
            - digital
          x-portone-name: 주문 상품구분
          x-portone-description: 현금영수증 발행 주문 상품구분
          x-portone-supported-pgs:
            - ksnet
            - nice_v2
          x-portone-per-pg:
            ksnet:
              required: true
        - name: identifier
          in: formData
          description: '현금영수증 발행대상 식별정보. <br> 국세청현금영수증카드, 휴대폰번호, 주민등록번호, 사업자등록번호를 기재합니다.'
          required: true
          type: string
          x-portone-name: 식별정보
          x-portone-description: '현금영수증 발행대상 식별정보로 `국세청현금영수증카드`, `휴대폰번호`, `주민등록번호`, `사업자등록번호`를 기재합니다.'
          x-portone-per-pg:
            html5_inicis:
              description: >
                <p>identifier을 활용하여 자동으로 타입 처리가 이루어지므로, 별도의 identifier_type 파라미터
                입력은 필요하지 않습니다.</p>
            kcp:
              description: >
                <p>identifier을 활용하여 자동으로 타입 처리가 이루어지므로, 별도의 identifier_type 파라미터
                입력은 필요하지 않습니다.</p>
            nice:
              description: >
                <p>identifier을 활용하여 자동으로 타입 처리가 이루어지므로, 별도의 identifier_type 파라미터
                입력은 필요하지 않습니다.</p>
            daou:
              description: >
                <p>identifier을 활용하여 자동으로 타입 처리가 이루어지므로, 별도의 identifier_type 파라미터
                입력은 필요하지 않습니다.</p>
        - name: identifier_type
          in: formData
          description: |-
            현금영수증 식별정보 구분코드 <br>
                 (필수 : KICC, 헥토파이낸셜(구 세틀뱅크))<br>
                 KG이니시스/NHN KCP/나이스페이먼츠/키움페이(구 다우, 페이조아), 웰컴페이먼츠는 identifier 만으로 자동 처리<br><br>
                 <ul><li>person : 주민등록번호
                 </li><li> business : 사업자등록번호
                 </li><li> phone : 휴대폰번호
                 </li><li> taxcard : 국세청현금영수증카드</li></ul>
          required: false
          type: string
          enum:
            - person
            - business
            - phone
            - taxcard
          x-portone-name: 식별정보 구분코드
          x-portone-description: 현금영수증를 발행대상의 식별정보 구분코드
          x-portone-supported-pgs:
            - kicc
            - settle
            - nice_v2
          x-portone-per-pg:
            kicc:
              required: true
            settle:
              required: true
            nice_v2:
              required: true
              description: >
                <p>API로 현금영수증 발급 시, <strong>현금영수증 카드 번호로 현금영수증 발급이
                불가능</strong>하오니 참고 부탁드립니다.</p>
        - name: type
          in: formData
          description: |-
            현금영수증 발행 타입(대상).
                 <ul><li>소득공제용(개인) : person
                 </li><li>지출증빙용(법인) : company
                 </li><li>기본값 : person</li></ul>
          required: false
          type: string
          default: person
          enum:
            - person
            - company
          x-portone-name: 타입(대상)
          x-portone-description: 현금영수증 발행할 대상의 타입
          x-portone-per-pg:
            smartro_v2:
              required: true
            nice_v2:
              required: true
            welcome:
              required: true
        - name: company_tel
          in: formData
          description: '발행 상점 고객센터 번호 <br> (필수 : 키움페이(구 다우, 페이조아))'
          required: false
          type: string
          x-portone-name: 고객센터 번호
          x-portone-description: 현금영수증 발행 상점 고객센터 번호
          x-portone-supported-pgs:
            - daou
          x-portone-per-pg:
            daou:
              required: true
        - name: company_name
          in: formData
          description: '상점 사업자 명 <br> (필수 : 키움페이(구 다우, 페이조아))'
          required: false
          type: string
          x-portone-name: 상점 사업자 명
          x-portone-description: 현금영수증 발행 상점 사업자 명
          x-portone-supported-pgs:
            - daou
          x-portone-per-pg:
            daou:
              required: true
        - name: corp_reg_no
          in: formData
          description: '상점 사업자 번호 <br> (필수 : 키움페이(구 다우, 페이조아), 웰컴페이먼츠)'
          required: false
          type: string
          x-portone-name: 상점 사업자 번호
          x-portone-description: 현금영수증 발행 상점 사업자 번호
          x-portone-supported-pgs:
            - daou
            - welcome
          x-portone-per-pg:
            daou:
              required: true
            welcome:
              required: true
        - name: buyer_name
          in: formData
          description: >-
            구매자 이름 <br>(필수 : KSNET, 스마트로 - 신모듈) </br><b>(현금영수증 발행건 사후 추적을 위해 입력을
            강력히 권장합니다.)</b>
          required: false
          type: string
          x-portone-name: 구매자 이름
          x-portone-summary: |
            <p>현금영수증을 발행할 결제건의 구매자 이름</p>
          x-portone-description: 현금영수증 발행건 사후 추적을 위해 입력을 **강력히 권장**합니다.
          x-portone-per-pg:
            ksnet:
              required: true
            smartro_v2:
              required: true
        - name: buyer_email
          in: formData
          description: 구매자 Email
          required: false
          type: string
          x-portone-name: 구매자 Email 주소
          x-portone-description: 현금영수증을 발행할 결제건의 구매자 Email 주소
        - name: buyer_tel
          in: formData
          description: >-
            구매자 전화번호 <br> (필수 : 스마트로 - 신모듈, 웰컴페이먼츠) <br> <b>(현금영수증 발행건 사후 추적을 위해
            입력을 강력히 권장합니다.)</b>
          required: false
          type: string
          x-portone-name: 구매자 전화번호
          x-portone-summary: |
            <p>현금영수증을 발행할 결제건의 구매자 전화번호</p>
          x-portone-description: 현금영수증 발행건 사후 추적을 위해 입력을 강력히 권장합니다.
          x-portone-per-pg:
            smartro_v2:
              required: true
            welcome:
              requiqred: true
        - name: tax_free
          in: formData
          description: >-
            현금영수증 발행금액 중 면세금액<br>지정하지 않으면 0원으로 적용 <br> 발행금액의 1/11 이 부가세로 자동
            적용되므로, 부가세금액 조정을 위해서는 `tax_free` 파라메터를 활용해주세요.
          required: false
          type: integer
          x-portone-name: 면세금액
          x-portone-summary: |
            <p>현금영수증 발행금액 중 면세금액으로 지정하지 않으면 0원으로 적용합니다.</p>
          x-portone-description: '발행금액의 1/11 이 부가세로 자동 적용되므로, 부가세금액 조정을 위해서는 `tax_free` 파라메터를 활용해주세요.'
        - name: vat
          in: formData
          description: >-
            Deprecated 되었으므로 tax_free 파라메터를 사용해주세요.<br>부가세(지정하지 않으면 공급가액의 10%로
            자동 적용)
          required: false
          type: integer
          deprecated: true
        - name: vat_amount
          in: formData
          description: 부가세 지정 고객사에 한해 현금영수증 발행 금액 중 부가세 금액으로 부가세를 지정할 수 있습니다.
          required: false
          type: number
          x-portone-name: 부가세 지정 금액
          x-portone-description: 부가세 지정 고객사에 한해 현금영수증 발행 금액 중 부가세 금액으로 부가세를 지정할 수 있습니다.
      responses:
        '200':
          description: 현금영수증 발행 완료
          schema:
            $ref: '#/definitions/ReceiptResponse'
        '400':
          description: >-
            필수 파라메터가 누락된 경우, 결제완료(paid)가 아닌 결제 건에 대해 발행요청한 경우, 이미 현금영수증 발행된 건에
            대해 요청한 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '500':
          description: 현금영수증 발행에 실패한 경우
        '501':
          description: 현재 포트원이 현금영수증 관련 지원하지 않는 PG사인 경우
      x-portone-supported-pgs:
        - html5_inicis
        - kcp
        - nice
        - kicc
        - settle
        - daou
        - tosspayments
        - ksnet
        - smartro
        - smartro_v2
        - nice_v2
        - welcome
      x-portone-category: receipt
      x-portone-per-pg:
        tosspayments:
          description: >
            <p>현금영수증 발급 API 호출시 유효성 검사를 하지 않습니다.</p>

            <p>예를 들어 현금영수증 발급 유형(type)을 소득공제(<code>person</code>)으로 보내고 현금영수증 발급
            번호(identifier)를 사업자 등록번호로 보내면

            실제로는 현금영수증 발급에 실패해야하지만 토스페이먼츠에서 유효성 검사를 하지 않아 그대로 성공 응답을 보내고 있습니다.

            따라서 원활한 현금영수증 발급을 위해서는 <strong>현금영수증 발급 API 호출시 현금영수증 정보를 정확하게
            입력</strong>하셔야 합니다.</p>
        smartro_v2:
          description: >
            <p>현금영수증 발급 API를 통해 발급받은 경우는 현금영수증을 발급 받은 거래건 취소 시 현금영수증 자동 발급 취소를
            지원하지 않기 때문에, 따로 현금영수증 발급 취소 API를 통해 취소해야합니다.</p>
        nice_v2:
          description: >
            <p>현금영수증 유의사항</p>

            <ul>

            <li>결제창에서 현금성 결제(가상계좌, 계좌이체, 네이버페이 포인트 결제 등)시 승인 단계에서 현금영수증을 발급 요청하지
            못한 경우,

            현금영수증 단건발급 API(POST /receipts/"imp_uid")를 사용한다고 하더라도 발급이 되지 않으니 참고
            부탁드립니다.</li>

            </ul>
    delete:
      tags:
        - receipts
      summary: 포트원 발급분 취소 API
      description: |-
        포트원을 통해 발급한 현금영수증 발급거래를 취소합니다<br>
            포트원과 별개로 거래된 현금영수증 취소는 DELETE 외부 발급분 취소 API를 이용해주세요.
        <h4>지원되는 PG사</h4>
        <ul>
            <li>KG 이니시스</li>
            <li>NHN KCP</li>
            <li>헥토파이낸셜(구 세틀뱅크)</li>
            <li>나이스페이먼츠</li>
            <li>키움페이(구 다우, 페이조아)</li>
            <li>토스페이먼츠 - 신모듈</li>
            <li>(신) 나이스페이</li>
            <li>KSNET</li>
            <li>스마트로 - 신모듈</li>
            <li>웰컴페이먼츠</li>
        </ul>
      operationId: revokeReceipt
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 거래고유번호
          required: true
          type: string
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 현금영수증을 취소할 결제건의 포트원 거래고유번호
      responses:
        '200':
          description: 현금영수증 발급취소 완료
          schema:
            $ref: '#/definitions/ReceiptResponse'
        '400':
          description: 포트원으로 현금영수증이 발급된 적 없는 건에 대해서 발급취소 요청한 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '500':
          description: PG사로부터 현금영수증 발급취소 실패응답을 받은 경우
        '501':
          description: 현재 포트원이 현금영수증 관련 지원하지 않는 PG사인 경우
      x-portone-supported-pgs:
        - html5_inicis
        - kcp
        - settle
        - nice
        - daou
        - tosspayments
        - nice_v2
        - ksnet
        - smartro_v2
        - welcome
      x-portone-category: receipt
  '/receipts/external/{merchant_uid}':
    get:
      tags:
        - receipts
      summary: 외부 발급내역 단건 조회 API
      description: 포트원 API를 통해 현금영수증만 발행된 건의 상세정보를 조회하는 API입니다. (포트원과 별개로 결제된 현금거래건)
      operationId: getExternalReceipt
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: path
          description: 현금영수증 발행 대상 고객사 주문번호
          required: true
          type: string
          x-portone-name: 고객사 주문번호
          x-portone-description: 현금영수증 발행 대상 고객사 주문번호
      responses:
        '200':
          description: 현금영수증 상세정보 조회 완료
          schema:
            $ref: '#/definitions/ExternalReceiptResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: merchant_uid 로 현금영수증 발행된 내역이 확인되지 않는 경우
      x-portone-supported-pgs:
        - html5_inicis
        - kcp
        - settle
        - nice
        - kicc
        - tosspayments
        - nice_v2
        - ksnet
        - smartro_v2
        - welcome
      x-portone-category: receipt
    post:
      tags:
        - receipts
      summary: 현금영수증 발급(외부) API
      description: |-
        포트원과 별개로 거래된 일반 현금결제에 대해, 포트원 내에 설정된 PG사로 현금영수증 발행 요청하는 API입니다.

             <h4>지원되는 PG사</h4>
             <ul> <li>KG이니시스
             </li> <li>NHN KCP
             </li> <li>나이스페이먼츠
             </li> <li>KICC
             </li> <li>헥토파이낸셜(구 세틀뱅크)
             </li> <li>토스페이먼츠 - 신모듈
             </li> <li>KSNET
             </li> <li>스마트로 - 신모듈
             </li><li>(신) 나이스페이
             </li><li>웰컴페이먼츠</li></ul>
      operationId: issueExternalReceipt
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: path
          description: >-
            현금영수증 발행을 위한 고객사 주문번호 (스마트로 - 신모듈의 경우, 특수문자 포함이 불가능합니다.) <br>고객사
            주문번호는 현금거래 주문번호와 동일한 번호를 기재해야 추후 대사가 가능한점 유념하시기 바랍니다.
          required: true
          type: string
          x-portone-name: 고객사 주문번호
          x-portone-summary: |
            <p>현금영수증 발행을 위한 고객사 주문번호</p>
          x-portone-description: 고객사 주문번호는 현금거래 주문번호와 동일한 번호를 기재해야 추후 대사가 가능한점 유념하시기 바랍니다.
          x-portone-per-pg:
            smartro_v2:
              description: |
                <p><strong>특수문자 포함이 불가능</strong>합니다.</p>
        - name: name
          in: formData
          description: 현금영수증 발행 주문명
          required: true
          type: string
          x-portone-name: 주문명
          x-portone-description: 현금영수증 발행할 결제건의 주문명
        - name: amount
          in: formData
          description: 현금영수증 발행 금액
          required: true
          type: integer
          x-portone-name: 발행 금액
          x-portone-description: 현금영수증 발행할 결제건의 금액
        - name: product_type
          in: formData
          description: |-
            현금영수증 발행 주문 상품구분<br> (필수 : KSNET)
                 <ul><li> real: 실물상품
                 </li><li> digital: 디지털컨텐츠</li></ul>
          required: false
          type: string
          enum:
            - real
            - digital
          x-portone-name: 주문 상품구분
          x-portone-description: 현금영수증 발행할 결제건의 주문 상품구분
          x-portone-supported-pgs:
            - ksnet
          x-portone-per-pg:
            ksnet:
              required: true
        - name: identifier
          in: formData
          description: '현금영수증 발행대상 식별정보<br> 국세청현금영수증카드, 휴대폰번호, 주민등록번호, 사업자등록번호를 기재합니다.'
          required: true
          type: string
          x-portone-name: 식별정보
          x-portone-description: '현금영수증 발행대상 식별정보로 `국세청현금영수증카드`, `휴대폰번호`, `주민등록번호`, `사업자등록번호`를 기재합니다.'
          x-portone-per-pg:
            html5_inicis:
              description: >
                <p>identifier을 활용하여 자동으로 타입 처리가 이루어지므로, 별도의 identifier_type 파라미터
                입력은 필요하지 않습니다.</p>
            kcp:
              description: >
                <p>identifier을 활용하여 자동으로 타입 처리가 이루어지므로, 별도의 identifier_type 파라미터
                입력은 필요하지 않습니다.</p>
            nice:
              description: >
                <p>identifier을 활용하여 자동으로 타입 처리가 이루어지므로, 별도의 identifier_type 파라미터
                입력은 필요하지 않습니다.</p>
        - name: identifier_type
          in: formData
          description: |-
            현금영수증 발행대상 식별정보 유형<br>
                 (필수 : KICC, 헥토파이낸셜(구 세틀뱅크)) <br>
                 KG이니시스/NHN KCP/나이스페이먼츠, 웰컴페이먼츠는 identifier 만으로 자동 처리<br><br>
                 <ul><li> person : 주민등록번호
                 </li><li> business : 사업자등록번호
                 </li><li> phone : 휴대폰번호
                 </li><li> taxcard : 국세청현금영수증카드</li></ul>
          required: false
          type: string
          enum:
            - person
            - business
            - phone
            - taxcard
          x-portone-name: 식별정보 구분코드
          x-portone-description: 현금영수증 발행대상의 식별정보 구분코드
          x-portone-supported-pgs:
            - kicc
            - settle
            - nice_v2
          x-portone-per-pg:
            kicc:
              required: true
            settle:
              required: true
            nice_v2:
              required: true
              description: >
                <p>API로 현금영수증 발급 시, <strong>현금영수증 카드 번호로 현금영수증 발급이
                불가능</strong>하오니 참고 부탁드립니다.</p>
        - name: type
          in: formData
          description: |-
            현금영수증 발행 타입(대상)
                 <ul><li>소득공제용(개인) : person
                 </li><li>지출증빙용(법인) : company
                 </li><li>기본값 : person</li></ul>
          required: false
          type: string
          default: person
          enum:
            - person
            - company
          x-portone-name: 타입(대상)
          x-portone-description: 현금영수증 발행할 대상의 타입
          x-portone-per-pg:
            smartro_v2:
              required: true
            nice_v2:
              required: true
            welcome:
              required: true
        - name: buyer_name
          in: formData
          description: |-
            구매자 이름 <br>
                 (필수 : KSNET, 스마트로 - 신모듈) <br>
                 (현금영수증 발행건 사후 추적을 위해 입력을 강력히 권장합니다.)
          required: false
          type: string
          x-portone-name: 구매자 이름
          x-portone-summary: |
            <p>현금영수증을 발행할 결제건의 구매자 이름</p>
          x-portone-description: 현금영수증 발행건 사후 추적을 위해 입력을 **강력히 권장**합니다.
          x-portone-per-pg:
            ksnet:
              required: true
            smartro_v2:
              required: true
        - name: buyer_email
          in: formData
          description: 구매자 Email
          required: false
          type: string
          x-portone-name: 구매자 Email 주소
          x-portone-description: 현금영수증을 발행할 결제건의 구매자 Email 주소
        - name: buyer_tel
          in: formData
          description: |-
            구매자 전화번호 <br>
                 (필수 : 스마트로 - 신모듈, 웰컴페이먼츠)
                 <br>(현금영수증 발행건 사후 추적을 위해 입력을 강력히 권장합니다.)
          required: false
          type: string
          x-portone-name: 구매자 전화번호
          x-portone-summary: |
            <p>현금영수증을 발행할 결제건의 구매자 전화번호</p>
          x-portone-description: 현금영수증 발행건 사후 추적을 위해 입력을 **강력히 권장**합니다.
          x-portone-per-pg:
            smartro_v2:
              required: true
            welcome:
              required: true
        - name: tax_free
          in: formData
          description: >-
            현금영수증 발행금액 중 면세금액<br>지정하지 않으면 0원으로 적용<br> 발행금액의 1/11 이 부가세로 자동
            적용되므로, 부가세금액 조정을 위해서는 tax_free 파라메터를 활용해주세요.
          required: false
          type: integer
          x-portone-name: 면세금액
          x-portone-summary: |
            <p>현금영수증 발행금액 중 면세금액으로 지정하지 않으면 0원으로 적용</p>
          x-portone-description: '발행금액의 1/11 이 부가세로 자동 적용되므로, 부가세금액 조정을 위해서는 tax_free 파라메터를 활용해주세요.'
        - name: pg
          in: formData
          description: |-
            PG설정이 2개 이상인 경우, 현금영수증 발행처리를 원하는 PG사를 지정하실 수 있습니다.
                 pg 파라메터는 <b>{PG사}</b> 혹은 <b>{PG사}.{PG상점아이디}</b> 형태의 문자열입니다. <br>
                 지정하지 않거나 유효하지 않은 값이 전달되면 기본PG설정된 값을 이용해 결제하게 됩니다. <br>
                 <ul><li>나이스페이먼츠, KCP 2가지 PG설정이 되어있다면, pg 파라메터로 <b>nice</b> 또는 <b>kcp</b>로 구분 가능</li>
                 <li>나이스페이먼츠로부터 2개 이상의 상점아이디를 발급받았다면, <b>nice.MID1</b> 또는 <b>nice.MID2</b>로 구분 가능</li></ul>
          required: false
          type: string
          maxLength: 80
          x-portone-name: PG 구분코드
          x-portone-description: 현금영수증을 발행할 PG사 구분코드
        - name: vat_amount
          in: formData
          description: 부가세 지정 고객사에 한해 현금영수증 발행 금액 중 부가세 금액으로 부가세를 지정할 수 있습니다.
          required: false
          type: number
          x-portone-name: 부가세 지정 금액
          x-portone-description: 부가세 지정 고객사에 한해 현금영수증 발행 금액 중 부가세 금액으로 부가세를 지정할 수 있습니다.
        - name: corp_reg_no
          in: formData
          description: '상점 사업자 번호 <br> (필수 : 웰컴페이먼츠)'
          required: false
          type: string
          x-portone-name: 상점 사업자 번호
          x-portone-description: 현금영수증 발행 상점 사업자 번호
          x-portone-supported-pgs:
            - welcome
          x-portone-per-pg:
            welcome:
              required: true
        - name: pay_method
          in: formData
          description: |-
            결제건의 결제수단<br> (필수 : 웰컴페이먼츠)
                 <ul><li>trans : 계좌이체
                 </li><li>vbank : 가상계좌</li></ul>
          required: false
          type: string
          enum:
            - trans
            - vbank
          x-portone-name: 결제수단
          x-portone-description: 현금영수증 발행 할 결제건의 결제수단
          x-portone-supported-pgs:
            - welcome
          x-portone-per-pg:
            welcome:
              required: true
      responses:
        '200':
          description: 현금영수증 발행 완료
          schema:
            $ref: '#/definitions/ExternalReceiptResponse'
        '400':
          description: '필수 파라메터가 누락된 경우, 이미 현금영수증 발행된 merchant_uid 에 대해 요청한 경우'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '500':
          description: 현금영수증 발행에 실패한 경우
        '501':
          description: 현재 포트원이 현금영수증 관련 지원하지 않는 PG사인 경우
      x-portone-supported-pgs:
        - html5_inicis
        - kcp
        - settle
        - nice
        - kicc
        - tosspayments
        - nice_v2
        - ksnet
        - smartro
        - smartro_v2
        - welcome
      x-portone-category: receipt
      x-portone-per-pg:
        tosspayments:
          description: >
            <p>현금영수증 발급 API 호출시 유효성 검사를 하지 않습니다.</p>

            <p>예를 들어 현금영수증 발급 유형(type)을 소득공제(<code>person</code>)으로 보내고 현금영수증 발급
            번호(identifier)를 사업자 등록번호로 보내면

            실제로는 현금영수증 발급에 실패해야하지만 토스페이먼츠에서 유효성 검사를 하지 않아 그대로 성공 응답을 보내고 있습니다.

            따라서 원활한 현금영수증 발급을 위해서는 <strong>현금영수증 발급 API 호출시 현금영수증 정보를 정확하게
            입력</strong>하셔야 합니다.</p>
        smartro_v2:
          description: >
            <p>현금영수증 발급 API를 통해 발급받은 경우는 현금영수증을 발급 받은 거래건 취소 시 현금영수증 자동 발급 취소를
            지원하지 않기 때문에, 따로 현금영수증 발급 취소 API를 통해 취소해야합니다.</p>
        nice_v2:
          description: >
            <p>현금영수증 유의사항</p>

            <ul>

            <li>결제창에서 현금성 결제(가상계좌, 계좌이체, 네이버페이 포인트 결제 등)시 승인 단계에서 현금영수증을 발급 요청하지
            못한 경우,
               현금영수증 발급(외부) API(POST /receipts/external/{merchant_uid})를 사용한다고 하더라도 발급이 되지 않으니 참고 부탁드립니다.</li>
            </ul>
    delete:
      tags:
        - receipts
      summary: 외부 발급분 취소 API
      description: >-
        포트원과 별개로 거래된 일반 현금결제에 대해, 포트원 내에 설정된 PG사로 포트원 API를 이용해 현금영수증 발행취소하는
        API입니다.

        <h4>지원되는 PG사</h4>

        <ul>
            <li>KG이니시스</li>
            <li>NHN KCP</li>
            <li>헥토파이낸셜(구 세틀뱅크)</li>
            <li>나이스페이먼츠</li>
            <li>토스페이먼츠 - 신모듈</li>
            <li>KSNET</li>
            <li>스마트로 - 신모듈</li>
            <li>(신) 나이스페이</li>
            <li>웰컴페이먼츠</li>
        </ul>
      operationId: revokeExternalReceipt
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: path
          description: >-
            발급취소대상 고객사 주문번호 <br> merchant_uid는 현금결제를 구분할 고유주문번호를 의미하며 발행에 사용된 값을
            전달하면 됩니다.
          required: true
          type: string
          x-portone-name: 고객사 주문번호
          x-portone-summary: |
            <p>발급취소대상 고객사 주문번호</p>
          x-portone-description: merchant_uid는 현금결제를 구분할 고유주문번호를 의미하며 발행에 사용된 값을 전달하면 됩니다.
      responses:
        '200':
          description: 현금영수증 발행취소 완료
          schema:
            $ref: '#/definitions/ExternalReceiptResponse'
        '400':
          description: merchant_uid 파라메터가 누락된 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 현금영수증 발행된 적이 없는 merchant_uid 에 대해 요청한 경우
        '500':
          description: 현금영수증 발행취소에 실패한 경우
        '501':
          description: 현재 포트원이 현금영수증 관련 지원하지 않는 PG사인 경우
      x-portone-supported-pgs:
        - html5_inicis
        - kcp
        - settle
        - nice
        - tosspayments
        - nice_v2
        - ksnet
        - smartro_v2
        - welcome
      x-portone-category: receipt
  /cards:
    get:
      tags:
        - codes
      summary: 카드사코드 전체조회 API
      description: |-
        카드사정보 리스트를 조회합니다.<br>
             카드사표준코드, 카드사명을 모두 조회할 수 있습니다(금융결제원표준코드 기준)
      operationId: allCardCodes
      consumes:
        - application/json
      produces:
        - application/json
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/StandardCodeListResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 코드에 해당되는 카드사정보를 찾을 수 없음
      x-portone-category: etc.code
  '/cards/{card_standard_code}':
    get:
      tags:
        - codes
      summary: 카드사명 단건조회 API
      description: |-
        특정 카드사표준코드를 기준으로 카드명을 조회합니다.<br>
             카드사표준코드, 카드사명을 조회할 수 있습니다(금융결제원표준코드 기준)
      operationId: cardCodes
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: card_standard_code
          in: path
          description: ''
          required: true
          type: string
          x-portone-name: 카드사코드
          x-portone-description: 조회할 카드사 코드
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/StandardCodeResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 코드에 해당되는 카드사정보를 찾을 수 없음
      x-portone-category: etc.code
  /banks:
    get:
      tags:
        - codes
      summary: 은행코드 전체조회 API
      description: |-
        은행정보 리스트를 조회합니다. <br>
             은행표준코드, 은행명을 모두 조회할 수 있습니다(금융결제원표준코드 기준)
      operationId: allBankCodes
      consumes:
        - application/json
      produces:
        - application/json
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/StandardCodeListResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 코드에 해당되는 은행정보를 찾을 수 없음
      x-portone-category: etc.code
  '/banks/{bank_standard_code}':
    get:
      tags:
        - codes
      summary: 은행명 단건조회 API
      description: |-
        은행코드로 은행명을 조회합니다.<br>
             은행표준코드, 은행명을 조회할 수 있습니다(금융결제원표준코드 기준)
      operationId: bankCodes
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: bank_standard_code
          in: path
          description: ''
          required: true
          type: string
          x-portone-name: 은행코드
          x-portone-description: 조회할 은행코드
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/StandardCodeResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 코드에 해당되는 은행정보를 찾을 수 없음
      x-portone-category: etc.code
  /subscribe/payments/onetime:
    post:
      tags:
        - subscribe
      summary: 비 인증 결제(일회성) API
      description: >-
        구매자로부터 별도의 인증과정을 거치지 않고, 카드정보만으로 결제를 진행하는 API입니다.<br><br>빌링키 저장 시,
        buyer_email, buyer_name 등의 정보는 customer 부가정보인 customer_email,
        customer_name 등으로 함께 저장됩니다. <br>빌링키 발급 API참조
      operationId: onetime
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: formData
          description: 고객사 거래 고유번호 <br> 매 결제요청 시 고유값으로 요청해야 합니다.
          required: true
          type: string
          maxLength: 40
          x-portone-name: 고객사 주문번호
          x-portone-description: 고객사 거래 고유번호로 매 결제요청 시 고유값으로 요청해야 합니다.
        - name: currency
          in: formData
          description: '(Paymentwall 전용) 통화 e.g.) KRW, USD, VND, ... Default: KRW'
          required: false
          type: string
          x-portone-name: 결제통화 구분코드
          x-portone-description: '통화 e.g.) KRW, USD, VND, ... Default: KRW'
          x-portone-per-pg:
            ksnet:
              description: |
                <p>USD 결제는 순수 해외카드로만 결제 가능합니다.</p>
        - name: amount
          in: formData
          description: 결제금액
          required: true
          type: number
          x-portone-name: 결제금액
          x-portone-description: 결제요청 할 금액
        - name: tax_free
          in: formData
          description: >-
            amount 중 면세공급가액.<br/>기본값은 0이므로(amount 모두 과세대상이므로) amount의 1/11 이
            부가세로 처리됩니다.
          required: false
          type: number
          x-portone-name: 면세금액
          x-portone-description: amount 중 면세공급가액
          x-portone-per-pg:
            ksnet:
              description: >
                <p>면세 설정 상점아이디에서 면세처리를 위해 결제 금액과 동일한 면세 금액을 반드시 입력해야 합니다. 그렇지 않은
                경우 매출전표에 전액 면세가 아닌 것으로 표시되고 실제 처리 내역이 다를 수 있습니다.</p>

                <p>과세 설정 상점아이디에서 면세 금액을 전달하지 않아야 합니다. 면세 금액을 전달하는 경우 매출전표에 면세
                처리된 것으로 표시되지만 실제 처리 내역과 다를 수 있습니다.</p>
            welcome:
              description: |
                <p><code>부가세업체정함</code> 설정 고객사에 한해 사용 가능합니다.</p>
        - name: vat_amount
          in: formData
          description: >-
            amount 중 부가세 금액.<br/>부가세를 지정할 수 있으며, tax_free=0, vat_amount=0으로 영세율로
            결제 가능합니다.(기본값: null)<br><h5>지원되는
            PG사</h5><ul><li>나이스페이먼츠</li><li>이니시스</li><li>(신)
            나이스페이</li><li>웰컴페이먼츠</li></ul>
          required: false
          type: number
          x-portone-name: 부가세
          x-portone-summary: |
            <p>amount 중 부가세 금액</p>
          x-portone-description: |-
            부가세를 지정할 수 있으며, `tax_free=0, vat_amount=0`으로 영세율로 결제 가능합니다.
            PG사와의 사전 협의 후 사용가능합니다. (기본값: **null**)
          x-portone-supported-pgs:
            - nice
            - html5_inicis
            - nice_v2
            - welcome
          x-portone-per-pg:
            welcome:
              description: >
                <p><code>부가세업체정함</code> 설정 고객사에 한해 사용 가능하며 전체금액의 10% 이하로 설정해야
                합니다. vat_amount가 <span>총 상품가격의 10%를 초과할 경우는 결제가
                거절됩니다.</span></p>
        - name: vat
          in: formData
          description: >-
            Deprecated 되었습니다. tax_free 파라메터를 사용해주세요.<br/>결제금액 중 부가세 금액(파라메터가
            누락되면 10%로 자동 계산됨)
          required: false
          type: number
          deprecated: true
        - name: card_number
          in: formData
          description: 카드번호(dddd-dddd-dddd-dddd) 기재 양식을 유의하세요.
          required: true
          type: string
          x-portone-name: 카드번호
          x-portone-description: 카드번호(`dddd-dddd-dddd-dddd`) 기재 양식을 유의하세요.
        - name: expiry
          in: formData
          description: 카드 유효기간(YYYY-MM) 기재 양식을 유의하세요.
          required: true
          type: string
          x-portone-name: 카드 유효기간
          x-portone-description: 카드 유효기간(`YYYY-MM`) 기재 양식을 유의하세요.
        - name: birth
          in: formData
          description: >-
            생년월일6자리(YYMMDD) (법인카드의 경우 사업자등록번호10자리) <br>(생년월일기재가 필요없는 해외 PG사 결제
            요청의 경우 000000으로 고정 기재하도 무방)
          required: false
          type: string
          x-portone-name: 생년월일 6자리
          x-portone-summary: |
            <p>생년월일6자리(<code>YYMMDD</code>) (법인카드의 경우 사업자등록번호10자리)</p>
          x-portone-description: |-
            PG사별로 혹은 계약상황에 따라 필수값 여부가 상이합니다.

            생년월일 기재가 필요없는 해외 PG사 결제 요청의 경우 `000000`으로 고정 기재하도 무방합니다.
          x-portone-per-pg:
            ksnet:
              description: |
                <p>카드번호와 유효기간만으로 결제를 요청하는 비인증 승인 API만 연동되어 있어
                     <code>birth</code>(생년월일 6자리 혹은 사업자 등록번호 10자리)는 검증하지 않습니다.</p>
        - name: pwd_2digit
          in: formData
          description: 카드비밀번호 앞 2자리 <br> PG사별로 혹은 계약상황에따라 필수값 여부가 상이합니다.
          required: false
          type: string
          x-portone-name: 카드비밀번호 앞 2자리
          x-portone-summary: |
            <p>결제 요청할 카드의 비밀번호 앞 2자리</p>
          x-portone-description: PG사별로 혹은 계약상황에 따라 필수값 여부가 상이합니다.
          x-portone-per-pg:
            ksnet:
              description: |
                <p>카드번호와 유효기간만으로 결제를 요청하는 비인증 승인 API만 연동되어 있어
                     <code>pwd_2digit</code>(생년월일 6자리 혹은 사업자 등록번호 10자리)는 검증하지 않습니다.</p>
        - name: cvc
          in: formData
          description: '카드 인증번호 (카드 뒷면 3자리, AMEX의 경우 4자리). Paymentwall에서만 사용'
          required: false
          type: string
          x-portone-name: 카드 인증번호
          x-portone-description: '결제 요청할 카드의 인증번호 (카드 뒷면 3자리, AMEX의 경우 4자리)'
          x-portone-supported-pgs:
            - paymentwall
          x-portone-per-pg:
            paymentwall:
              required: true
        - name: customer_uid
          in: formData
          description: >-
            빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호.<br><br>(결제에 사용된 카드정보를 빌링키
            형태로 저장해두고 결제에 사용하시려면 customer_uid를 지정해주세요. 비 인증 결제(빌링키) API, 결제 예약
            API로 결제를 진행하실 수 있습니다. customer_uid가 없는 경우 저장되지 않습니다.)
          required: false
          type: string
          maxLength: 80
          x-portone-name: 구매자의 결제 수단 식별 고유번호
          x-portone-description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
          x-portone-unsupported-pgs:
            - ksnet
            - tosspayments
        - name: pg
          in: formData
          description: >-
            API 방식 비인증 PG설정이 2개 이상인 경우, 결제가 진행되길 원하는 PG사를 지정하실 수 있습니다. pg 파라메터는
            <b>{PG사}</b> 혹은 <b>{PG사}.{PG상점아이디}</b> 형태의 문자열입니다. <br>지정하지 않거나 유효하지
            않은 값이 전달되면 기본PG설정된 값을 이용해 결제하게 됩니다. <br><ul><li>나이스페이먼츠, KCP 2가지
            PG설정이 되어있다면, pg 파라메터로 <b>nice</b> 또는 <b>kcp</b>로 구분
            가능</li><li>나이스페이먼츠로부터 2개 이상의 상점아이디를 발급받았다면, <b>nice.MID1</b> 또는
            <b>nice.MID2</b>로 구분 가능</li></ul>
          required: false
          type: string
          maxLength: 80
          x-portone-name: PG 구분코드
          x-portone-description: 결제 요청할 PG사 구분코드
        - name: channelGroupId
          in: formData
          description: >-
            <ul><li>관리자 콘솔의 [연동관리] -> [스마트 라우팅] 메뉴에서 확인할 수 있습니다.</li> <li> 스마트
            라우팅 그룹 ID를 지정하여 결제를 요청하면, 스마트 라우팅 그룹 내 설정된 채널 비율에 따라 확률 기반으로 하나의
            결제대행사로 결제 요청을 합니다. <br>이때, pg 파라메터는 무시됩니다.</li></ul>
          required: false
          type: string
          maxLength: 55
          x-portone-name: 스마트 라우팅 그룹 ID
          x-portone-description: 스마트 라우팅 그룹 내 설정된 채널 비율에 따라 확률 기반으로 하나의 결제대행사로 결제 요청을 합니다.
        - name: name
          in: formData
          description: 제품명
          required: false
          type: string
          maxLength: 40
          x-portone-name: 주문명
          x-portone-description: 결제요청 할 결제건의 주문명
          x-portone-per-pg:
            html5_inicis:
              required: true
        - name: buyer_name
          in: formData
          description: >-
            주문자명 <br>(필수 : KSNET, 웰컴페이먼츠) <br> 페이먼트월 PG를 이용하는 경우 구매자명은 first
            name 과 last name이 한칸 띄어쓰기 형태로 구분되서 유입되어야 합니다. <br>예시) Michael
            Jackson
          required: false
          type: string
          maxLength: 16
          x-portone-name: 구매자명
          x-portone-description: 결제건의 구매자명
          x-portone-per-pg:
            html5_inicis:
              required: true
            ksnet:
              required: true
            welcome:
              required: true
            paymentwall:
              description: >
                <p>구매자명은 first name 과 last name이 <strong>한칸 띄어쓰기</strong> 형태로
                구분되서 유입되어야 합니다. 예시) Michael Jackson</p>
        - name: buyer_email
          in: formData
          description: 주문자 E-mail주소
          required: false
          type: string
          maxLength: 64
          x-portone-name: 주문자 E-mail 주소
          x-portone-description: 결제건의 주문자 E-mail주소
          x-portone-per-pg:
            html5_inicis:
              required: true
        - name: buyer_tel
          in: formData
          description: 주문자 전화번호
          required: false
          type: string
          maxLength: 16
          x-portone-name: 주문자 전화번호
          x-portone-description: 결제건의 주문자 전화번호
          x-portone-per-pg:
            html5_inicis:
              required: true
        - name: buyer_addr
          in: formData
          description: 주문자 주소
          required: false
          type: string
          maxLength: 128
          x-portone-name: 주문자 주소
          x-portone-description: 결제건의 주문자 주소
        - name: buyer_postcode
          in: formData
          description: 주문자 우편번호
          required: false
          type: string
          maxLength: 8
          x-portone-name: 주문자 우편번호
          x-portone-description: 결제건의 주문자 우편번호
        - name: card_quota
          in: formData
          description: >-
            카드할부개월수. 2 이상의 integer 할부개월수 적용 <br>(결제금액 50,000원 이상 한정, default =
            0(일시불)) 
          required: false
          type: integer
          x-portone-name: 카드할부개월수
          x-portone-summary: |
            <p>결제건의 카드할부개월수으로 기본값은 **0(일시불)**입니다.</p>
          x-portone-description: '결제금액 50,000원 이상 한정으로 2 이상의 integer 할부개월수가 적용가능합니다.'
        - name: interest_free_by_merchant
          in: formData
          description: >-
            카드할부처리할 때, 할부이자가 발생하는 경우(카드사 무이자 프로모션 제외) 부과되는 할부이자를 고객대신 고객사가 지불하고자
            PG사와 계약된 경우 <br>(현재, 나이스페이먼츠, (신) 나이스페이만 지원됨)
          required: false
          type: boolean
          default: false
          x-portone-name: 고객사 부담 무이자 할부여부
          x-portone-description: >-
            카드할부처리할 때, 할부이자가 발생하는 경우(카드사 무이자 프로모션 제외) 부과되는 할부이자를 고객대신 고객사가
            지불하는지에 대한 여부 (**PG사와 사전 계약이 필요**)
          x-portone-supported-pgs:
            - nice_v2
            - nice
        - name: use_card_point
          in: formData
          description: >-
            승인요청시 카드사 포인트 차감하며 결제승인처리할지 여부 flag. PG사 영업담당자와 계약 당시 사전 협의 필요 <br>
            (현재, (신) 나이스페이만 지원됨)
          required: false
          type: boolean
          default: false
          x-portone-name: 카드포인트 사용여부
          x-portone-description: 승인요청시 카드사 포인트 차감하며 결제승인처리할지 여부 flag. **PG사 영업담당자와 계약 당시 사전 협의 필요**
          x-portone-supported-pgs:
            - ksnet
            - nice
            - nice_v2
        - name: custom_data
          in: formData
          description: 거래정보와 함께 저장할 추가 정보
          required: false
          type: string
          x-portone-name: 추가 정보
          x-portone-description: 거래정보와 함께 저장할 추가 정보
        - name: notice_url
          in: formData
          description: 결제성공 시 통지될 Notification URL(Webhook URL)
          required: false
          type: string
          x-portone-name: Notification URL(Webhook URL)
          x-portone-description: 결제성공 시 통지될 Notification URL(Webhook URL)
        - name: browser_ip
          in: formData
          description: 구매자 브라우저(PC)의 IP (입력하지 않은 경우 API를 호출한 클라이언트 IP로 설정됩니다.)
          required: false
          type: string
          x-portone-name: 브라우저 IP
          x-portone-description: 구매자 브라우저(PC)의 IP
          x-portone-per-pg:
            paymentwall:
              required: true
        - name: secure_3d_charge_id
          in: formData
          description: (해외PG 전용) 3D secure 인증 후 결제시 PG사에서 부여한 결제 ID
          required: false
          type: string
          x-portone-name: 결제 ID
          x-portone-description: 해외PG 전용 파라미터로 3D secure 인증 후 결제시 PG사에서 부여한 결제 ID
          x-portone-supported-pgs:
            - paymentwall
        - name: secure_3d_token
          in: formData
          description: (해외PG 전용) 3D secure 인증 후 결제시 PG사에서 부여한 토큰
          required: false
          type: string
          x-portone-name: 토큰
          x-portone-description: 해외PG 전용 파라미터로 3D secure 인증 후 결제시 PG사에서 부여한 토큰
          x-portone-supported-pgs:
            - paymentwall
        - name: product_type
          in: formData
          description: '판매 상품에 대한 구분 값<br>real : 실물상품<br>digital : 디지털 컨텐츠<br>(필수 : KSNET)'
          required: false
          type: string
          enum:
            - real
            - digital
          x-portone-name: 주문 상품구분
          x-portone-description: 결제 요청할 판매 상품에 대한 구분 값
          x-portone-supported-pgs:
            - ksnet
          x-portone-per-pg:
            ksnet:
              required: true
        - name: promotion_id
          in: formData
          description: >-
            `promotion-id-`로 시작하며, 프로모션 아이디에 설정된 할인 내용을 적용하여 결제합니다. 비인증 결제 경우
            빌링키 발급시 저장된 마스킹된 카드번호를 통해 프로모션 적용 여부가 결정됩니다.
          required: false
          type: string
          x-portone-name: 프로모션 아이디
          x-portone-description: >-
            `promotion-id-`로 시작하며, 프로모션 아이디에 설정된 할인 내용을 적용하여 결제합니다. 비인증 결제 경우
            빌링키 발급시 저장된 마스킹된 카드번호를 통해 프로모션 적용 여부가 결정됩니다.
      responses:
        '200':
          description: 정상 결제
          schema:
            $ref: '#/definitions/PaymentResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - daou
        - kcp
        - nice
        - nice_v2
        - html5_inicis
        - paymentwall
        - settle
        - tosspayments
        - ksnet
        - welcome
      x-portone-category: nonAuthPayment
  /subscribe/payments/again:
    post:
      tags:
        - subscribe
      summary: 비 인증 결제(빌링키) API
      description: >-
        저장된 빌링키로 결제를 하는 경우 사용됩니다. PG사 결제창, 비 인증 결제(일회성)API 또는 빌링키 발급 API로 등록된
        빌링키가 있을 때 매칭되는 customer_uid로 결제를 진행할 수 있습니다.
      operationId: again
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: customer_uid
          in: formData
          description: >-
            빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호<br> PG사가 발급한 빌링키와 1:1로 맵핑되는
            고객사가 지정한 고유값입니다. <br>customer_uid는 카드번호 단위로 구분되서 저장되어야 합니다.
          required: true
          type: string
          maxLength: 80
          x-portone-name: 구매자의 결제 수단 식별 고유번호
          x-portone-description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
        - name: merchant_uid
          in: formData
          description: '고객사 거래 고유번호 (스마트로 - 신모듈의 경우, 특수문자 포함이 불가능합니다.)'
          required: true
          type: string
          maxLength: 40
          x-portone-name: 고객사 주문번호
          x-portone-description: 결제 요청할 결제건의 고객사 거래 고유번호
          x-portone-per-pg:
            smartro_v2:
              description: >
                <p>스마트로는 주문 번호(merchant_uid)에 <strong>특수문자를 허용하고 있지
                않습니다.</strong></p>

                <p>따라서 결제창에서 일반결제를 할때와 발급 된 빌링키로 API를 통해 결제를 하는 경우 숫자, 문자(알파벳
                소문자와 대문자) 또는 그 조합으로 이루어진 주문 번호를 사용해주세요.

                또한, 주문번호(merchant_uid)가 <strong>최대 40자</strong>를 넘을 수 없습니다. 40자가
                넘을 경우 40자까지 잘려서 저장되기 때문에 유의 바랍니다.</p>
        - name: currency
          in: formData
          description: '(Paymentwall 전용) 통화 e.g.) KRW, USD, VND, ... Default: KRW'
          required: false
          type: string
          x-portone-name: 결제 통화 코드
          x-portone-description: '통화 e.g.) KRW, USD, VND, ... Default: KRW'
          x-portone-per-pg:
            ksnet:
              description: |
                <p>USD 결제는 순수 해외카드로만 결제 가능합니다.</p>
            paypal_v2:
              required: true
              description: |
                <p>KRW은 불가능합니다.</p>
        - name: amount
          in: formData
          description: 결제금액
          required: true
          type: number
          x-portone-name: 결제금액
          x-portone-description: 결제 요청할 금액
        - name: tax_free
          in: formData
          description: >-
            amount 중 면세공급가액.<br/>기본값은 0이므로(amount 모두 과세대상이므로) amount의 1/11 이
            부가세로 처리됩니다.
          required: false
          type: number
          x-portone-name: 면세금액
          x-portone-description: amount 중 면세공급가액
          x-portone-per-pg:
            ksnet:
              description: >
                <p>면세 설정 상점아이디에서 면세처리를 위해 결제 금액과 동일한 면세 금액을 반드시 입력해야 합니다. 그렇지 않은
                경우 매출전표에 전액 면세가 아닌 것으로 표시되고 실제 처리 내역이 다를 수 있습니다.</p>

                <p>과세 설정 상점아이디에서 면세 금액을 전달하지 않아야 합니다. 면세 금액을 전달하는 경우 매출전표에 면세
                처리된 것으로 표시되지만 실제 처리 내역과 다를 수 있습니다.</p>
            welcome:
              description: |
                <p><code>부가세업체정함</code> 설정 고객사에 한해 사용 가능합니다.</p>
        - name: vat_amount
          in: formData
          description: >-
            amount 중 부가세 금액.<br/>부가세를 지정할 수 있으며, tax_free=0, vat_amount=0으로 영세율로
            결제 가능합니다.(기본값: null)<br><h5>지원되는
            PG사</h5><ul><li>나이스페이먼츠</li><li>이니시스</li><li>(신)
            나이스페이</li><li>웰컴페이먼츠</li><li>(신) 토스페이</li></ul>
          required: false
          type: number
          x-portone-name: 부가세
          x-portone-summary: |
            <p>amount 중 부가세 금액</p>
          x-portone-description: >-
            부가세를 지정할 수 있으며, `tax_free=0, vat_amount=0`으로 영세율로 결제 가능합니다.(기본값:
            **null**)
          x-portone-supported-pgs:
            - nice
            - html5_inicis
            - nice_v2
            - welcome
            - tosspay_v2
          x-portone-per-pg:
            welcome:
              description: >
                <p><code>부가세업체정함</code> 설정 고객사에 한해 사용 가능하며 전체금액의 10% 이하로 설정해야
                합니다. vat_amount가 <span>총 상품가격의 10%를 초과할 경우는 결제가
                거절됩니다.</span></p>
        - name: vat
          in: formData
          description: >-
            Deprecated 되었습니다. tax_free 파라메터를 사용해주세요.<br/>결제금액 중 부가세 금액(파라메터가
            누락되면 10%로 자동 계산됨)
          required: false
          type: number
          deprecated: true
        - name: name
          in: formData
          description: 제품명
          required: true
          type: string
          maxLength: 40
          x-portone-name: 제품명
          x-portone-description: 결제 요청할 결제건의 제품명
          x-portone-per-pg:
            html5_inicis:
              required: true
            danal_tpay:
              required: true
        - name: buyer_name
          in: formData
          description: >-
            주문자명 <br>(필수 KSNET, 스마트로 - 신모듈, 웰컴페이먼츠) <br> 페이먼트월 PG사인 경우 first
            name, last name 한칸 띄어쓰기로 구분되어 유입되어야 합니다.
          required: false
          type: string
          maxLength: 16
          x-portone-name: 주문자명
          x-portone-description: 결제건의 주문자명
          x-portone-per-pg:
            smartro_v2:
              required: true
            ksnet:
              required: true
            welcome:
              required: true
            paymentwall:
              description: >
                <p>first name, last name 한칸 띄어쓰기로 구분되어 유입되어야 합니다. 예시) Michael
                Jackson</p>
        - name: buyer_email
          in: formData
          description: '주문자 E-mail주소 (필수 : 페이먼트월, 스마트로 - 신모듈)'
          required: false
          type: string
          maxLength: 64
          x-portone-name: 주문자 E-mail 주소
          x-portone-description: 결제건의 주문자 E-mail주소
          x-portone-per-pg:
            smartro_v2:
              required: true
            paymentwall:
              required: true
              description: |
                <p>빌링키 발급시 기재한 이메일주소와 발급된 빌링키로 결제시 기입한 이메일주소가 일치해야 합니다.</p>
        - name: buyer_tel
          in: formData
          description: '주문자 전화번호 (필수 :스마트로 - 신모듈)'
          required: false
          type: string
          maxLength: 16
          x-portone-name: 주문자 전화번호
          x-portone-description: 결제건의 주문자 전화번호
          x-portone-per-pg:
            smartro_v2:
              required: true
        - name: buyer_addr
          in: formData
          description: 주문자 주소
          required: false
          type: string
          maxLength: 128
          x-portone-name: 주문자 주소
          x-portone-description: 결제건의 주문자 주소
        - name: buyer_postcode
          in: formData
          description: 주문자 우편번호
          required: false
          type: string
          maxLength: 8
          x-portone-name: 주문자 우편번호
          x-portone-description: 결제건의 주문자 우편번호
        - name: card_quota
          in: formData
          description: >-
            카드할부개월수. 2 이상의 integer 할부개월수 적용<br>(결제금액 50,000원 이상 한정, default =
            0(일시불))
          required: false
          type: integer
          x-portone-name: 카드 할부 개월수
          x-portone-description: 결제건의 카드 할부 개월 수로 기본값은 **0(일시불)**입니다.
        - name: interest_free_by_merchant
          in: formData
          description: >-
            카드할부처리할 때, 할부이자가 발생하는 경우(카드사 무이자 프로모션 제외) 부과되는 할부이자를 고객대신 고객사가 지불하고자
            PG사와 계약된 경우<br>(현재, 나이스페이먼츠, (신) 나이스페이만 지원됨)
          required: false
          type: boolean
          default: false
          x-portone-name: 상점분담 무이자 할부여부
          x-portone-description: >-
            카드할부처리할 때, 할부이자가 발생하는 경우(카드사 무이자 프로모션 제외) 부과되는 할부이자를 고객대신 고객사가
            지불하는지에 대한 여부 (**PG사와 사전 계약이 필요**)
          x-portone-supported-pgs:
            - nice
            - ksnet
            - nice_v2
        - name: use_card_point
          in: formData
          description: >-
            승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag. PG사 영업담당자와 계약 당시 사전 협의 필요<br>(현재,
            나이스페이먼츠, 스마트로 - 신모듈, (신) 나이스페이만 지원됨)
          required: false
          type: boolean
          default: false
          x-portone-name: 카드포인트 사용여부
          x-portone-description: 승인요청시 카드사 포인트 차감하며 결제승인처리할지 여부 flag. **PG사 영업담당자와 계약 당시 사전 협의 필요**
          x-portone-supported-pgs:
            - nice
            - smartro_v2
            - nice_v2
        - name: custom_data
          in: formData
          description: 거래정보와 함께 저장할 추가 정보
          required: false
          type: string
          x-portone-name: 빌링키 발급 시 같이 저장할 고객사 custom 데이터
          x-portone-description: 거래정보와 함께 저장할 추가 정보
        - name: notice_url
          in: formData
          description: 결제성공 시 통지될 Notification URL(Webhook URL)
          required: false
          type: string
          x-portone-name: Notification URL(Webhook URL)
          x-portone-description: 결제성공 시 통지될 Notification URL(Webhook URL)
        - name: browser_ip
          in: formData
          description: 구매자 브라우저(PC)의 IP <br> (입력하지 않은 경우 API를 호출한 클라이언트 IP로 설정됩니다.)
          required: false
          type: string
          x-portone-name: 브라우저의 IP
          x-portone-description: 구매자 브라우저(PC)의 IP (입력하지 않은 경우 API를 호출한 클라이언트 IP로 설정됩니다.)
          x-portone-per-pg:
            paymentwall:
              required: true
        - name: product_type
          in: formData
          description: '판매 상품에 대한 구분 값 (real : 실물상품, digital : 디지털 컨텐츠)<br>(필수:KSNET)'
          required: false
          type: string
          enum:
            - real
            - digital
          x-portone-name: 주문 상품구분
          x-portone-description: 결제 요청할 판매 상품에 대한 구분 값
          x-portone-supported-pgs:
            - ksnet
            - paypal_v2
          x-portone-per-pg:
            ksnet:
              required: true
        - name: product_count
          in: formData
          description: '결제 상품의 개수 (Default : 1)'
          required: false
          type: integer
          x-portone-name: 결제 상품의 개수
          x-portone-description: 결제 상품의 개수로 기본값은 1입니다.
        - name: cash_receipt_type
          in: formData
          description: >-
            현금영수증 발행할 대상 <br><br><h5>지원되는 PG사</h5><ul><li>(신) 토스페이</li></ul>(신)
            토스페이 경우 anonymous 전달 시 현금영수증 미발행 그 외의 값을 전달한 경우 현금영수증 자동 발행으로 동작합니다.
          required: false
          type: string
          enum:
            - person
            - company
            - anonymous
          x-portone-name: 현금영수증 발행대상 타입
          x-portone-description: 현금영수증 발행대상의 구분 값
          x-portone-supported-pgs:
            - tosspay_v2
          x-portone-per-pg:
            tosspay_v2:
              description: >
                <p>(신) 토스페이 경우 anonymous 전달 시 현금영수증 미발행 그 외의 값을 전달한 경우 현금영수증 자동
                발행으로 동작합니다.</p>
        - name: bypass
          in: formData
          description: >-
            JSON string 형식의 PG사별로 특화된 파라미터. <br>전달 한 값은 가공 없이 그대로 PG사로 전달 됩니다.
            <br>각 PG사별 스펙은 PG사별 연동 문서 참고해주세요
          required: false
          type: string
          x-portone-name: bypass 데이터
          x-portone-summary: |
            <p>JSON string 형식의 PG사별로 특화된 파라미터</p>
          x-portone-description: 전달 한 값은 가공 없이 그대로 PG사로 전달 됩니다. 각 PG사별 스펙은 PG사별 연동 문서 참고해주세요
        - name: extra
          in: formData
          description: 추가 파라미터
          required: false
          schema:
            $ref: '#/definitions/SubscribePaymentExtra'
          x-portone-name: 추가 파라미터
          x-portone-description: 비인증 결제 요청 시 추가 파라미터
        - name: promotion_id
          in: formData
          description: >-
            `promotion-id-`로 시작하며, 프로모션 아이디에 설정된 할인 내용을 적용하여 결제합니다. 비인증 결제 경우
            빌링키 발급시 저장된 마스킹된 카드번호를 통해 프로모션 적용 여부가 결정됩니다.
          required: false
          type: string
          x-portone-name: 프로모션 아이디
          x-portone-description: >-
            `promotion-id-`로 시작하며, 프로모션 아이디에 설정된 할인 내용을 적용하여 결제합니다. 비인증 결제 경우
            빌링키 발급시 저장된 마스킹된 카드번호를 통해 프로모션 적용 여부가 결정됩니다.
        - name: channelKey
          in: formData
          description: >-
            <ul><li>관리자 콘솔의 [연동관리] -> [연동 정보] 메뉴에서 확인할 수 있습니다.</li><li>슈퍼 빌링키
            결제시, 결제 채널을 특정하고 싶을 때 명시할 수 있습니다.</li></ul>
          required: false
          type: string
          maxLength: 55
          x-portone-name: 채널 키
          x-portone-description: '다수 채널에 대해 발급된 빌링키에 대해, 결제 채널을 특정하고 싶을 때 명시'
      responses:
        '200':
          description: 정상 결제
          schema:
            $ref: '#/definitions/PaymentResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - nice_v2
        - payco
        - paymentwall
        - settle
        - settle_acc
        - smartro_v2
        - tosspayments
        - paypal_v2
        - welcome
        - tosspay_v2
      x-portone-category: nonAuthPayment
      x-portone-per-pg:
        paypal_v2:
          description: >-
            <h3 id="manges--fraudnet-이상-거래-대응-필요"><a class="anchor"
            aria-hidden="true" tabindex="-1"
            href="#manges--fraudnet-이상-거래-대응-필요"><svg class="octicon
            octicon-link" viewBox="0 0 16 16" width="16" height="16"
            aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75
            0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0
            .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0
            00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0
            012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0
            004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83
            0z"></path></svg></a>Manges &amp; Fraudnet 이상 거래 대응 필요</h3>

            <p>페이팔은 이상 거래를 줄이기 위해 Risk Data Acquisition 정책을 시행하고 있습니다. 일반 결제나
            빌링키 발급은 페이팔 버튼을 통해 진행되기 때문에 페이팔이 이상 거래 판단을 위한 구매자 접속 정보를 얻을 수 있지만,
            발급 된 빌링키로 결제 (again API 호출) 할때는 고객사 서버에서 포트원 API를 통해 페이팔 API가 호출되는
            구조이기 때문에 이상 거래 판단을 위한 구매자 접속 정보를 얻을 수 없습니다.

            따라서 발급 된 빌링키로 결제를 할때는 구매자의 브라우저/디바이스 접속 정보를 페이팔에 전달할 수 있도록 again
            API가 호출되는 <strong>고객사 클라이언트 페이지에 반드시 페이팔 Fraudnet 스크립트/Manges SDK를
            아래와 같이 추가</strong>해야 합니다.</p>

            <p><strong>페이팔 RT를 통한 again API 호출시에는 Manges &amp; Fraudnet 조치가
            필수적으로 요구됩니다.</strong>

            브라우저/앱에 페이팔 Fraudnet Script/Manges SDK를 추가한 후 again API를 호출할때 진행되는
            플로우는 아래와 같습니다.</p>

            <p><img
            src="https://raw.githubusercontent.com/portone-io/developers.portone.io/e206047c43ed15bc364b58e0647dda4584964c9c/public/gitbook-assets/ko/paypal-rt/manges-fraudnet-flow.png"
            alt="플로우" /></p>

            <h4 id="브라우저"><a class="anchor" aria-hidden="true" tabindex="-1"
            href="#브라우저"><svg class="octicon octicon-link" viewBox="0 0 16 16"
            width="16" height="16" aria-hidden="true"><path fill-rule="evenodd"
            d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83
            2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95
            0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0
            010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0
            00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0
            00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>브라우저</h4>

            <div class="highlight highlight-source-html notranslate"><pre><span
            class="token comment">&lt;!-- again API가 호출되는 고객사 클라이언트
            --&gt;</span>

            <span class="token tag"><span class="token tag"><span class="token
            punctuation">&lt;</span>script</span>
                <span class="token attr-name">type</span><span class="token"><span class="token punctuation">=</span><span class="token punctuation">"</span>application/json<span class="token punctuation">"</span></span>
                <span class="token attr-name">fncls</span><span class="token"><span class="token punctuation">=</span><span class="token punctuation">"</span>fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99<span class="token punctuation">"</span></span>
            <span class="token punctuation">&gt;</span></span><span class="token
            script"><span class="token">

            <span class="token punctuation">{</span>
                <span class="token property">"f"</span><span class="token operator">:</span> <span class="token string">"RISK_SESSION_CORRELATION_ID"</span><span class="token punctuation">,</span>
                <span class="token property">"s"</span><span class="token operator">:</span> <span class="token string">"SOURCE_IDENTIFIER"</span><span class="token punctuation">,</span>
                <span class="token property">"sandbox"</span><span class="token operator">:</span> <span class="token boolean">true</span>
            <span class="token punctuation">}</span>

            </span></span><span class="token tag"><span class="token tag"><span
            class="token punctuation">&lt;/</span>script</span><span
            class="token punctuation">&gt;</span></span>

            <span class="token tag"><span class="token tag"><span class="token
            punctuation">&lt;</span>script</span> <span class="token
            attr-name">type</span><span class="token"><span class="token
            punctuation">=</span><span class="token
            punctuation">"</span>text/javascript<span class="token
            punctuation">"</span></span> <span class="token
            attr-name">src</span><span class="token"><span class="token
            punctuation">=</span><span class="token
            punctuation">"</span>https://c.paypal.com/da/r/fb.js<span
            class="token punctuation">"</span></span><span class="token
            punctuation">&gt;</span></span><span class="token
            script"></span><span class="token tag"><span class="token tag"><span
            class="token punctuation">&lt;/</span>script</span><span
            class="token punctuation">&gt;</span></span>

            <span class="token tag"><span class="token tag"><span class="token
            punctuation">&lt;</span>noscript</span><span class="token
            punctuation">&gt;</span></span>

            <span class="token tag"><span class="token tag"><span class="token
            punctuation">&lt;</span>img</span>
                <span class="token attr-name">src</span><span class="token"><span class="token punctuation">=</span><span class="token punctuation">"</span>https://c.paypal.com/v1/r/d/b/ns?f=RISK_SESSION_CORRELATION_ID&amp;s=SOURCE_IDENTIFIER&amp;js=0&amp;r=1<span class="token punctuation">"</span></span>
            <span class="token punctuation">/&gt;</span></span>

            <span class="token tag"><span class="token tag"><span class="token
            punctuation">&lt;/</span>noscript</span><span class="token
            punctuation">&gt;</span></span></pre></div><table>

            <thead>

            <tr>

            <th>파라미터</th>

            <th>의미</th>

            <th>예시</th>

            </tr>

            </thead>

            <tbody><tr>

            <td>fncls</td>

            <td>fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99로 항상 고정</td>

            <td>fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99</td>

            </tr>

            <tr>

            <td>f</td>

            <td>주문번호(merchant_uid) 전달</td>

            <td>mid_1683690731602</td>

            </tr>

            <tr>

            <td>s</td>

            <td>string</td>

            <td>7WBB3CKT63FRG_checkout-page</td>

            </tr>

            <tr>

            <td>sandbox</td>

            <td>페이팔 Account ID가 테스트 용인지 운영 용인지 여부</td>

            <td>true</td>

            </tr>

            </tbody></table>

            <h4 id="앱"><a class="anchor" aria-hidden="true" tabindex="-1"
            href="#앱"><svg class="octicon octicon-link" viewBox="0 0 16 16"
            width="16" height="16" aria-hidden="true"><path fill-rule="evenodd"
            d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83
            2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95
            0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0
            010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0
            00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0
            00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>앱</h4>

            <h5 id="안드로이드"><a class="anchor" aria-hidden="true" tabindex="-1"
            href="#안드로이드"><svg class="octicon octicon-link" viewBox="0 0 16 16"
            width="16" height="16" aria-hidden="true"><path fill-rule="evenodd"
            d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83
            2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95
            0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0
            010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0
            00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0
            00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83
            0z"></path></svg></a>안드로이드</h5>

            <p><a
            href="https://developer.paypal.com/limited-release/magnes/integrate/android/"
            rel="noopener noreferrer"><strong>Android Integration of
            Magnes</strong></a> 가이드 문서에 따라 아래와 같이 collectAndSubmit 메소드 호출을 통해
            페이팔로 디바이스 정보를 보내야합니다. 이때 두번째
            파라미터(<code>paypalClientMetaDataId</code>)로는
            주문번호(<code>merchant_uid</code>)를 전달해주시면 됩니다.</p>

            <pre><code>MagnesResult magnesResult = MagnesSDK.getInstance()

            .collectAndSubmit(Context context, String paypalClientMetaDataId,

            HashMap&lt;String, String&gt;

            additionalData)</code></pre><h5 id="ios-swift"><a class="anchor"
            aria-hidden="true" tabindex="-1" href="#ios-swift"><svg
            class="octicon octicon-link" viewBox="0 0 16 16" width="16"
            height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775
            3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2
            0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5
            0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0
            012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0
            004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83
            0z"></path></svg></a>IOS Swift</h5>

            <p><a
            href="https://developer.paypal.com/limited-release/magnes/integrate/ios-swift/"
            rel="noopener noreferrer"><strong>iOS Swift SDK
            Integration</strong></a> 가이드 문서에 따라 아래와 같이 collectAndSubmit 메소드 호출을
            통해 페이팔로 디바이스 정보를 보내야합니다. 이때 첫번째
            파라미터(<code>withPayPalClientMetadataId</code>)로는
            주문번호(<code>merchant_uid</code>)를 전달해주시면 됩니다.</p>

            <pre><code>let magnesResult:MagnesResult =

            MagnesSDK.shared().collectAndSubmit(withPayPalClientMetadataId:

            "YOUR-PAYPAL-CLIENT-METADATA-ID", withAdditionalData: [String:
            String])</code></pre><h5 id="ios-objective-c"><a class="anchor"
            aria-hidden="true" tabindex="-1" href="#ios-objective-c"><svg
            class="octicon octicon-link" viewBox="0 0 16 16" width="16"
            height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775
            3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2
            0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5
            0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0
            012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0
            004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83
            0z"></path></svg></a>IOS Objective-C</h5>

            <p><a
            href="https://developer.paypal.com/limited-release/magnes/integrate/ios-objective-c/"
            rel="noopener noreferrer"><strong>iOS Objective-C SDK Integration of
            Magnes</strong></a> 가이드 문서에 따라 아래와 같이
            collectAndSubmitWithPayPalClientMetadataId 메소드 호출을 통해 페이팔로 디바이스 정보를
            보내야합니다. 이때 첫번째 파라미터(<code>YOUR-PAYPAL-CLIENT-METADATA-ID</code>)로는
            주문번호(<code>merchant_uid</code>)를 전달해주시면 됩니다.</p>

            <pre><code>//PPRMOCMagnesSDK *magnesSDK = [PPRMOCMagnesSDK shared];

            PPRMOCMagnesSDKResult *magnesResult =

            [magnesSDK

            collectAndSubmitWithPayPalClientMetadataId:@"YOUR-PAYPAL-CLIENT-METADATA-ID"

            withAdditionalData:@{}];</code></pre><h3 id="고위험-결제-처리"><a
            class="anchor" aria-hidden="true" tabindex="-1"
            href="#고위험-결제-처리"><svg class="octicon octicon-link" viewBox="0 0 16
            16" width="16" height="16" aria-hidden="true"><path
            fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2
            2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5
            3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69
            9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5
            3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0
            00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>고위험 결제
            처리</h3>

            <p>페이팔은 판매자 보호 정책을 통해 고객사 거래에서 이상 거래나 사기 등이 발생 시, 판매자 보호 정책을 통해 고객사가
            손해 입을 수 있는 부분을 보존하는 판매자 보호 프로그램을 가지고 있습니다. 이 판매자 보호 정책을 적용하기 위해서는
            페이팔 측에서 제공하는 <strong>STC 기능</strong>을 사용해야 합니다.</p>

            <p>STC 기능을 사용하시기 위해 다음 정보를 확인하셔야 합니다.</p>

            <ol>

            <li>페이팔 Business 계정 가입시 산업 종류(Industry)를 결정하는데, 계정의 산업 종류를 확인해야
            합니다.</li>

            <li>계정의 산업 종류를 확인하신 뒤, loadUI 호출 해 빌링키를 발급 받을때 그리고 발급 된 빌링키로
            결제(again API 호출)할때 모두 bypass.paypal_v2 객체에 아래와 같은 형식으로 전달해주셔야
            합니다.</li>

            </ol>

            <h4 id="발급-된-빌링키로-단건-결제again-api-호출시-stc-적용하기"><a class="anchor"
            aria-hidden="true" tabindex="-1"
            href="#발급-된-빌링키로-단건-결제again-api-호출시-stc-적용하기"><svg class="octicon
            octicon-link" viewBox="0 0 16 16" width="16" height="16"
            aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75
            0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0
            .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0
            00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0
            012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0
            004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83
            0z"></path></svg></a>발급 된 빌링키로 단건 결제(again API 호출)시 STC 적용하기</h4>

            <div class="highlight highlight-source-javascript
            notranslate"><pre><span class="token keyword">await</span> <span
            class="token function">fetch</span><span class="token
            punctuation">(</span>
               <span class="token string">"https://api.iamport.kr/subscribe/payments/again"</span><span class="token punctuation">,</span>
               <span class="token punctuation">{</span>
                   <span class="token property">method</span><span class="token operator">:</span> <span class="token string">"POST"</span><span class="token punctuation">,</span>
                   <span class="token property">headers</span><span class="token operator">:</span> <span class="token punctuation">{</span>
                       <span class="token property">Authorization</span><span class="token operator">:</span> <span class="token"><span class="token string">`</span><span class="token string">Basic </span><span class="token"><span class="token punctuation">${</span><span class="token">ACCESS_TOKEN</span><span class="token punctuation">}</span></span><span class="token string">`</span></span><span class="token punctuation">,</span>
                       <span class="token property">"Content-Type"</span><span class="token operator">:</span> <span class="token string">"application/json"</span><span class="token punctuation">,</span>
                   <span class="token punctuation">}</span><span class="token punctuation">,</span>
                   <span class="token property">body</span><span class="token operator">:</span> <span class="token">JSON</span><span class="token punctuation">.</span><span class="token function">stringify</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
                       customer_uid<span class="token punctuation">,</span> <span class="token comment">// [필수 입력] 빌링키 발급시 전달 한 빌링키와 1:1 매핑되는 UUID</span>
                       merchant_uid<span class="token punctuation">,</span> <span class="token comment">// [필수 입력] 주문 번호</span>
                       currency<span class="token punctuation">,</span> <span class="token comment">// [필수 입력] 결제 통화 (페이팔은 KRW 불가능)</span>
                       amount<span class="token punctuation">,</span> <span class="token comment">// [필수 입력] 결제 금액</span>
                       name<span class="token punctuation">,</span> <span class="token comment">// 주문명</span>
                       <span class="token property">bypass</span><span class="token operator">:</span> <span class="token">JSON</span><span class="token punctuation">.</span><span class="token function">stringify</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
                           <span class="token property">paypal_v2</span><span class="token operator">:</span> <span class="token punctuation">{</span>
                               <span class="token property">additional_data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
                                   <span class="token property">key</span><span class="token operator">:</span> <span class="token string">"sender_account_id"</span><span class="token punctuation">,</span> <span class="token comment">// 고객사 account ID(merchant-id)</span>
                                   <span class="token property">value</span><span class="token operator">:</span> <span class="token string">"A12345N343"</span>
                               <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
                                   <span class="token property">key</span><span class="token operator">:</span> <span class="token string">"sender_first_name"</span><span class="token punctuation">,</span> <span class="token comment">// 고객사의 account에 등록 된 구매자의 이름</span>
                                   <span class="token property">value</span><span class="token operator">:</span> <span class="token string">"John"</span>
                               <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
                                   <span class="token property">key</span><span class="token operator">:</span> <span class="token string">"sender_last_name"</span><span class="token punctuation">,</span> <span class="token comment">// 고객사의 account에 등록 된 구매자의 이름</span>
                                   <span class="token property">value</span><span class="token operator">:</span> <span class="token string">"Doe"</span>
                               <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
                                   <span class="token property">key</span><span class="token operator">:</span> <span class="token string">"sender_email"</span><span class="token punctuation">,</span> <span class="token comment">// 고객사의 account에 등록 된 구매자의 이메일 주소</span>
                                   <span class="token property">value</span><span class="token operator">:</span> <span class="token string">"example@example.com"</span>
                               <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
                                   <span class="token property">key</span><span class="token operator">:</span> <span class="token string">"sender_phone"</span><span class="token punctuation">,</span> <span class="token comment">// 고객사의 account에 등록 된 구매자의 연락처</span>
                                   <span class="token property">value</span><span class="token operator">:</span> <span class="token string">"(02)16705176"</span>
                               <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
                                   <span class="token property">key</span><span class="token operator">:</span> <span class="token string">"sender_country_code"</span><span class="token punctuation">,</span> <span class="token comment">// 고객사의 account에 등록 된 국가 코드</span>
                                   <span class="token property">value</span><span class="token operator">:</span> <span class="token string">"KR"</span> <span class="token comment">// ISO Alpha-2 형식 국가 코드</span>
                               <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
                                   <span class="token property">key</span><span class="token operator">:</span> <span class="token string">"sender_create_date"</span><span class="token punctuation">,</span> <span class="token comment">// 고객사의 account에 등록 된 국가 코드</span>
                                   <span class="token property">value</span><span class="token operator">:</span> <span class="token string">"2023-10-10T23:59:59+09:00"</span> <span class="token comment">// IOS8601 형식</span>
                               <span class="token punctuation">}</span><span class="token punctuation">]</span>
                           <span class="token punctuation">}</span>
                       <span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token comment">// end of bypass string</span>
                   <span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token comment">// end of body</span>
               <span class="token punctuation">}</span>
            <span class="token punctuation">)</span></pre></div>
  /subscribe/payments/schedule:
    get:
      tags:
        - subscribe
      summary: 결제예약 복수조회 API
      description: >-
        기간범위를 지정하여 결제예약목록을 조회할 수 있습니다. 결제예약정보가 (페이징된)목록으로 전달되며, 최대 3개월 단위로 조회가
        가능합니다.
      operationId: findSchedulesByRange
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: schedule_from
          in: query
          description: 조회 시작시각 unix timestamp(결제예약건의 '예약시각'기준으로 조회합니다. from <= '예약시각')
          required: true
          type: integer
          x-portone-name: 조회 시작시각
          x-portone-description: 조회 시작시각 unix timestamp(결제예약건의 '예약시각'기준으로 조회합니다. from <= '예약시각')
        - name: schedule_to
          in: query
          description: 조회 종료시각 unix timestamp(결제예약건의 '예약시각'기준으로 조회합니다. '예약시각' < to)
          required: true
          type: integer
          x-portone-name: 조회 종료시각
          x-portone-description: 조회 종료시각 unix timestamp(결제예약건의 '예약시각'기준으로 조회합니다. '예약시각' < to)
        - name: schedule_status
          in: query
          description: |-
            예약상태. 누락되면 모든 상태의 예약내역 조회
                 <ul><li>scheduled: 예약됨(실행되기 전)</li>
                 <li>executed: 예약된 결제실행완료</li>
                 <li>revoked: 예약철회</li></ul>
          required: false
          type: string
          enum:
            - scheduled
            - executed
            - revoked
          x-portone-name: 예약상태
          x-portone-description: 조회할 결제건의 예약상태
        - name: page
          in: query
          description: '조회목록 페이징. 1부터 시작하며, 기본값은 1입니다.'
          required: false
          type: integer
          x-portone-name: 조회목록 페이징
          x-portone-description: 조회목록 페이징으로 기본값은 1입니다.
        - name: limit
          in: query
          description: '한 번에 조회할 결제예약건수.(최대 1000건, 기본값 20건)'
          required: false
          type: integer
          default: '20'
          maximum: '1000'
          minimum: '1'
          x-portone-name: 페이지당 조회건수
          x-portone-description: '한 번에 조회할 결제예약건수.(최대 1000건, 기본값 20건)'
        - name: sorting
          in: query
          description: '정렬방식 <br> scheduled : 예약일자 과거순 <br> (Default : 예약일자 최신순)'
          required: false
          type: string
          x-portone-name: 정렬방식
          x-portone-description: 조회된 결제건의 정렬방식
      responses:
        '200':
          description: 결제예약목록 조회완료
          schema:
            $ref: '#/definitions/ScheduleResponse'
        '400':
          description: 검색 파라메터가 유효하지 않은 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - nice_v2
        - payco
        - paymentwall
        - settle
        - settle_acc
        - smartro_v2
        - tosspayments
        - paypal_v2
        - welcome
        - tosspay_v2
      x-portone-category: nonAuthPayment.subscribe
    post:
      tags:
        - subscribe
      summary: 결제 예약 API
      description: >-
        customer__uid를 이용하여 비인증 결제 요청을 예약할 수 있는 API입니다.<br>비 인증 결제(빌링키) API를
        포트원이 대신 수행하는 개념)<br>
             결제 요청에 대한 결과는 notice_url에 설정한 EndPoint URL로 웹훅을 통해 수신(POST request)받을 수 있습니다.<br><br>
             <ul> <li>기존에 빌링키가 등록된 customer_uid가 존재하는 경우 해당 customer_uid와 해당되는 빌링키로 schedule정보가 예약됩니다.(카드정보 선택사항)</li>
             <li>등록된 customer_uid가 없는 경우 빌링키 신규 발급을 먼저 진행한 후 schedule정보를 예약합니다.(카드정보 필수사항)</li>
             <li>예약건 별로 고유의 merchant_uid를 전달해주셔야 합니다.</li>
             <li>schedules의 상세정보(선택정보) <b> buyer_name, buyer_email, buyer_tel, buyer_addr, buyer_postcode</b> 누락시,<br>
             <b>customer_uid</b>에 해당되는 <b>customer_name, customer_email, customer_tel, customer_addr, customer_postcode</b> 정보로 대체됩니다.(둘 다 입력시 buyer_* 정보를 우선합니다)</li>
             <li>슈퍼빌링키의 customer_uid로 요청하는 경우, 결제 시점 해당 스마트 라우팅 그룹 내 채널 비율 설정에 따라 결제를 요청합니다.
             특정 빌링키로 결제를 요청하려면 channelKey에 결제를 희망하는 빌링키의 채널 키를 입력해 주세요.</li></ul>
      operationId: schedule
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: customer_uid
          in: formData
          description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
          required: true
          type: string
          maxLength: 80
          x-portone-name: 구매자의 결제 수단 식별 고유번호
          x-portone-description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
        - name: customer_id
          in: formData
          description: 'string 타입의 구매자 식별 고유번호 (필수 : 토스페이먼츠)'
          required: false
          type: string
          x-portone-description: string 타입의 구매자 식별 고유번호
          x-portone-name: 구매자 ID
          x-portone-per-pg:
            tosspayments:
              required: true
              description: |
                <p>customer_id는 optional이기 때문에 보내지 않아도 동작은 하지만 보내지 않으면
                     (포트원이 빌링키 발급 요청시마다 customer_id에 uuid값을 채번하기 때문에)
                     구매자와 결제수단은 매칭되지 않으니 유념하시기 바랍니다.</p>
        - name: checking_amount
          in: formData
          description: 카드정상결제여부 체크용 금액. 결제 직후 자동으로 취소됩니다. (0원으로 설정할 경우 테스트하지 않음)
          required: false
          type: integer
          x-portone-name: 유효카드 체크 승인금액
          x-portone-summary: |
            <p>결제 예약을 위해 카드정상결제여부를 체크하는 승인 금액</p>
          x-portone-description: 결제 직후 자동으로 취소됩니다. (0원으로 설정할 경우 테스트하지 않음)
        - name: card_number
          in: formData
          description: 카드번호(dddd-dddd-dddd-dddd)
          required: false
          type: string
          x-portone-name: 카드번호
          x-portone-description: 결제 예약 요청할 카드번호(`dddd-dddd-dddd-dddd`)
          x-portone-unsupported-pgs:
            - chai
            - danal
            - danal_tpay
            - kakaopay
            - kicc
            - mobilians
            - naverpay
            - payco
            - settle_acc
            - settle_firm
            - smartro
            - uplus
            - smartro_v2
        - name: expiry
          in: formData
          description: 카드 유효기간(YYYY-MM)
          required: false
          type: string
          x-portone-name: 카드 유효기간
          x-portone-description: 결제 예약 요청할 카드 유효기간(`YYYY-MM`)
          x-portone-unsupported-pgs:
            - chai
            - danal
            - danal_tpay
            - kakaopay
            - kicc
            - mobilians
            - naverpay
            - payco
            - settle_acc
            - settle_firm
            - smartro
            - uplus
            - smartro_v2
        - name: birth
          in: formData
          description: 생년월일6자리(법인카드의 경우 사업자등록번호10자리)
          required: false
          type: string
          x-portone-name: 생년월일 6자리
          x-portone-description: 결제 예약 요청할 카드 소유자의 생년월일6자리(법인카드의 경우 사업자등록번호10자리)
          x-portone-unsupported-pgs:
            - chai
            - danal
            - danal_tpay
            - kakaopay
            - kicc
            - mobilians
            - naverpay
            - payco
            - settle_acc
            - settle_firm
            - smartro
            - uplus
            - smartro_v2
        - name: pwd_2digit
          in: formData
          description: 카드비밀번호 앞 2자리
          required: false
          type: string
          x-portone-name: 카드비밀번호 앞 2자리
          x-portone-description: 결제 예약 요청할 카드비밀번호 앞 2자리
        - name: cvc
          in: formData
          description: '카드 인증번호 (카드 뒷면 3자리, AMEX의 경우 4자리). Paymentwall에서만 사용'
          required: false
          type: string
          x-portone-name: 카드 인증번호
          x-portone-description: '결제 예약 요청할 카드 인증번호 (카드 뒷면 3자리, AMEX의 경우 4자리)'
          x-portone-supported-pgs:
            - paymentwall
          x-portone-per-pg:
            paymentwall:
              required: true
        - name: pg
          in: formData
          description: >-
            신규 customer_uid를 등록하는 경우에만 유효합니다.(기존에 등록된 customer_uid로만 schedule 하는
            경우에는 pg파라메터 적용되지 않습니다.)<br><br>API 방식 비인증 PG설정이 2개 이상인 경우, 결제가 진행되길
            원하는 PG사를 지정하실 수 있습니다. pg 파라메터는 <b>{PG사}</b> 혹은
            <b>{PG사}.{PG상점아이디}</b> 형태의 문자열입니다. <br>지정하지 않거나 유효하지 않은 값이 전달되면
            기본PG설정된 값을 이용해 결제하게 됩니다. <br><ul><li>나이스페이먼츠, KCP 2가지 PG설정이 되어있다면,
            pg 파라메터로 <b>nice</b> 또는 <b>kcp</b>로 구분 가능</li><li>나이스페이먼츠로부터 2개 이상의
            상점아이디를 발급받았다면, <b>nice.MID1</b> 또는 <b>nice.MID2</b>로 구분 가능</li></ul>
          required: false
          type: string
          maxLength: 80
          x-portone-name: pg 구분코드
          x-portone-summary: |
            <p>결제 예약을 요청할 PG사 구분코드</p>
          x-portone-description: >-
            신규 customer_uid를 등록하는 경우에만 유효합니다.(기존에 등록된 customer_uid로만 schedule 하는
            경우에는 pg파라메터 적용되지 않습니다.)


            API 방식 비인증 PG설정이 2개 이상인 경우, 결제가 진행되길 원하는 PG사를 지정하실 수 있습니다. pg 파라메터는
            **{PG사}** 혹은 **{PG사}.{PG상점아이디}** 형태의 문자열입니다.


            지정하지 않거나 유효하지 않은 값이 전달되면 기본PG설정된 값을 이용해 결제하게 됩니다.

            - 나이스페이먼츠, KCP 2가지 PG설정이 되어있다면, pg 파라메터로 **nice** 또는 **kcp**로 구분 가능

            - 나이스페이먼츠로부터 2개 이상의 상점아이디를 발급받았다면, **nice.MID1** 또는 **nice.MID2**로
            구분 가능
        - name: channelKey
          in: formData
          description: >-
            <ul><li>관리자 콘솔의 [연동관리] -> [연동 정보] 메뉴에서 확인할 수 있습니다.</li><li>슈퍼 빌링키
            결제시, 결제 채널을 특정하고 싶을 때 명시할 수 있습니다.</li></ul>
          required: false
          type: string
          maxLength: 55
          x-portone-name: 채널 키
          x-portone-description: '다수 채널에 대해 발급된 빌링키에 대해, 결제 채널을 특정하고 싶을 때 명시'
        - name: schedules
          in: formData
          description: >-
            결제예약 스케쥴<br>[ 필수항목 ]<br>merchant_uid : 고객사 주문번호(동일한 주문번호로 중복결제 불가)
            (스마트로 - 신모듈의 경우, 특수문자 포함이 불가능합니다.)<br>schedule_at : 결제요청 예약시각(초)
            (UNIX timestamp in seconds)<br>currency : 통화 e.g.) KRW, USD 등(단, (신)
            페이팔의 경우 KRW 결제가 불가능하므로 반드시 유효한 값을 필수로 입력해야합니다.)<br>amount :
            결제금액<br>name : 주문명<br>[ 선택항목 ]<br>tax_free : amount 중 면세공급가액(기본값 :
            0)<br>vat_amount : amount 중 부가세 금액(기본값 : null, 현재 나이스페이먼츠, 이니시스, (신)
            나이스페이, 웰컴페이먼츠, (신) 토스페이 지원)<br>buyer_name : 주문자명(필수 : KSENT,
            스마트로-신모듈)<br>buyer_email : 주문자Email (필수 : 스마트로-신모듈)<br>buyer_tel :
            주문자 전화번호 (필수 : 스마트로-신모듈)<br>buyer_addr : 주문자 주소<br>buyer_postcode :
            주문자 우편번호<br>custom_data : 결제수행 시 사용될 custom_data 값<br>notice_url :
            예약결제수행 후 통지될 Notification URL(지정되지 않으면 관리자페이지의 Notification URL로
            발송)<br>product_type :
                            판매 상품에 대한 구분 값 (real : 실물상품, digital : 디지털 컨텐츠) (필수 : KSNET)<br>cash_receipt_type : 현금영수증 발행대상 (person, company, anonymous) ((신) 토스페이의 경우 anonymous 전달 시 미발행 그 외 경우 현금영수증 자동발행으로 동작합니다.)<br>card_quota : 카드할부개월수. 2 이상의 integer 할부개월수 적용(결제금액 50,000원 이상 한정, default = 0(일시불))<br>interest_free_by_merchant : 카드할부처리시, 할부이자가 발생하는 경우(카드사 무이자 프로모션 제외) 부과되는 할부이자를 고객사가 지불하고자 PG사와 계약된 경우(default : false) (현재, 나이스페이먼츠, KSNET만 지원됨)<br>use_card_point : 승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag. PG사 영업담당자와 계약 당시 사전 협의 필요(default : false) (현재, 나이스페이먼츠만 지원됨) <br>product_count : 결제 상품의 개수 (Default : 1)<br>browser_ip : 결제고객의 IP <br><br>bypass : 포트원이 정규화하기 어려운 JSON string 형식의 PG사별 specific 파라미터.전달 한 값은 가공 없이 그대로 PG사로 전달 됩니다. <br><br>promotion_id: `promotion-id-`로 시작하며, 프로모션 아이디에 설정된 할인 내용을 적용하여 결제합니다. 비인증 결제 경우 빌링키 발급시 저장된 마스킹된 카드번호를 통해 프로모션 적용 여부가 결정됩니다.<br><br>extra.naverUseCfm : 이용완료일 YYYYMMDD (네이버페이 반복결제 계약 시 이용완료일 필수로 설정된 고객사에 한함)
          required: true
          type: array
          items:
            $ref: '#/definitions/ScheduleAnnotation'
          default: >-
            [&#13;&#09;{&#13;&#09;&#09;&quot;merchant_uid&quot;:
            &quot;your_merchant_uid1&quot;,&#13;&#09;&#09;&quot;schedule_at&quot;:
            1478150985,&#13;&#09;&#09;&quot;currency&quot;:
            &quot;KRW&quot;,&#13;&#09;&#09;&quot;amount&quot;:
            1004,&#13;&#09;&#09;&quot;name&quot;:
            &quot;주문명&quot;,&#13;&#09;&#09;&quot;buyer_name&quot;:
            &quot;주문자명&quot;,&#13;&#09;&#09;&quot;buyer_email&quot;: &quot;주문자
            Email주소&quot;,&#13;&#09;&#09;&quot;buyer_tel&quot;: &quot;주문자
            전화번호&quot;,&#13;&#09;&#09;&quot;buyer_addr&quot;: &quot;주문자
            주소&quot;,&#13;&#09;&#09;&quot;buyer_postcode&quot;: &quot;주문자
            우편번호&quot;,&#13;&#09;&#09;&quot;promotion_id&quot;: &quot;프로모션
            아이디&quot;&#13;&#09;},&#13;&#09;{&#13;&#09;&#09;&quot;merchant_uid&quot;:
            &quot;your_merchant_uid2&quot;,&#13;&#09;&#09;&quot;schedule_at&quot;:
            1478150985,&#13;&#09;&#09;&quot;currency&quot;:
            &quot;KRW&quot;,&#13;&#09;&#09;&quot;amount&quot;:
            1004,&#13;&#09;&#09;&quot;name&quot;:
            &quot;주문명&quot;,&#13;&#09;&#09;&quot;buyer_name&quot;:
            &quot;주문자명&quot;,&#13;&#09;&#09;&quot;buyer_email&quot;: &quot;주문자
            Email주소&quot;,&#13;&#09;&#09;&quot;buyer_tel&quot;: &quot;주문자
            전화번호&quot;,&#13;&#09;&#09;&quot;buyer_addr&quot;: &quot;주문자
            주소&quot;,&#13;&#09;&#09;&quot;buyer_postcode&quot;: &quot;주문자
            우편번호&quot;,&#13;&#09;&#09;&quot;promotion_id&quot;: &quot;프로모션
            아이디&quot;&#13;&#09;}&#13;]
          x-portone-name: 결제예약 스케쥴
          x-portone-description: 결제예약 스케쥴에 대한 배열
      responses:
        '200':
          description: 정상적으로 예약 등록이 완료되었습니다
          schema:
            $ref: '#/definitions/ScheduleResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - nice_v2
        - payco
        - paymentwall
        - settle
        - settle_acc
        - smartro_v2
        - tosspayments
        - paypal_v2
        - welcome
        - tosspay_v2
      x-portone-category: nonAuthPayment.subscribe
      x-portone-per-pg:
        chai:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
        danal:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
        danal_tpay:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
        kakaopay:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
        kicc:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
        mobilians:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
        naverpay:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
        payco:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
        settle_acc:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
        settle_firm:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
        smartro:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
        uplus:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
        smartro_v2:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
        tosspay_v2:
          description: |
            <p>API 방식으로 빌링키 발급을 지원하지 않기 때문에, 예약결제시 새로운 빌링키 발급은 지원하지 않습니다.</p>
  /subscribe/payments/unschedule:
    post:
      tags:
        - subscribe
      summary: 결제 예약취소 API
      description: 예약된 결제가 실행되기전에 해당 예약을 취소할 수 있는 API입니다.
      operationId: unschedule
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: customer_uid
          in: formData
          description: >-
            빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호<br><b>(누락될 경우 merchant_uid들에
            해당하는 결제예약정보를 일괄취소)</b>
          type: string
          x-portone-name: 구매자의 결제 수단 식별 고유번호
          x-portone-description: >-
            빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호, 누락될 경우 merchant_uid들에 해당하는
            결제예약정보를 일괄취소합니다.
        - name: merchant_uid
          in: formData
          description: 고객사 거래 고유번호<br><b>(누락되면 customer_uid에 대한 결제예약정보 일괄취소)</b>
          required: false
          schema:
            type: string
          type: array
          x-portone-name: 고객사 주문번호
          x-portone-summary: |
            <p>결제 예약 취소할 결제건의 고객사 거래 고유번호</p>
          x-portone-description: 누락되면 customer_uid에 대한 결제예약정보를 일괄취소합니다.
      responses:
        '200':
          description: 정상적으로 예약 취소가 완료되었습니다
          schema:
            $ref: '#/definitions/ScheduleResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - nice_v2
        - payco
        - paymentwall
        - settle
        - settle_acc
        - smartro_v2
        - tosspayments
        - paypal_v2
        - welcome
        - tosspay_v2
      x-portone-category: nonAuthPayment.subscribe
  '/subscribe/payments/schedule/{merchant_uid}':
    get:
      tags:
        - subscribe
      summary: 결제예약 단건조회 API
      description: >-
        예약 거래주문번호(merchant_uid)로 결제예약정보를 조회할 수 있습니다. 결제예약 등록시 사용된 merchant_uid로
        예약 상태 등 정보를 조회할 수 있습니다.
      operationId: getScheduleByMid
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: path
          description: 결제예약에 사용된 고객사 거래 고유번호
          required: true
          type: string
          x-portone-name: 고객사 주문번호
          x-portone-description: 결제예약에 사용된 고객사 거래 고유번호
      responses:
        '200':
          description: 정상적으로 예약 취소가 완료되었습니다
          schema:
            $ref: '#/definitions/SingleScheduleResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: merchant_uid로 조회되는 예약결제건이 존재하지 않는 경우
      x-portone-supported-pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - nice_v2
        - payco
        - paymentwall
        - settle
        - settle_acc
        - smartro_v2
        - tosspayments
        - paypal_v2
        - welcome
        - tosspay_v2
      x-portone-category: nonAuthPayment.subscribe
    put:
      tags:
        - subscribe
      summary: 결제요청 예약시각 수정 API
      description: 결제예약 시 사용한 거래주문번호(merchant_uid)를 이용하여 해당하는 예약 건의 결제요청 예약시각을 수정할 수 있습니다.
      operationId: updateScheduleByMid
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: path
          description: 결제예약에 사용된 고객사 거래 고유번호
          required: true
          type: string
          x-portone-name: 고객사 주문번호
          x-portone-description: 결제예약에 사용된 고객사 거래 고유번호
        - name: schedule_at
          in: formData
          description: 수정할 결제요청 예약시각 UNIX timestamp in seconds
          required: true
          type: integer
          x-portone-name: 수정할 예약시각
          x-portone-description: 수정할 결제요청 예약시각 UNIX timestamp
      responses:
        '200':
          description: 정상적으로 예약 변경이 완료되었습니다.
          schema:
            $ref: '#/definitions/SingleScheduleResponse'
        '400':
          description: '필수 파라미터 누락, 이미 실행 혹은 취소된 결제예약, 예약시각이 현재 시각보다 과거인 경우'
        '404':
          description: 존재하지 않는 결제예약
        '500':
          description: 포트원 내부 이슈로 인한 API 호출 실패
      x-portone-supported-pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - nice_v2
        - payco
        - paymentwall
        - settle
        - settle_acc
        - smartro_v2
        - tosspayments
        - paypal_v2
        - welcome
      x-portone-category: nonAuthPayment.subscribe
  '/subscribe/payments/schedule/{merchant_uid}/reschedule':
    post:
      tags:
        - subscribe
      summary: 결제 실패 재예약 API
      description: '결제 예약 실행 시 실패했던 건, 혹은 예약 취소했던 건에 대해 다른 시각으로 다시 결제 예약을 할 수 있습니다.'
      operationId: rescheduleByMid
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: path
          description: 결제예약에 사용된 고객사 거래 고유번호
          required: true
          type: string
          x-portone-name: 고객사 주문번호
          x-portone-description: 결제예약에 사용된 고객사 거래 고유번호
        - name: schedule_at
          in: formData
          description: 실패한 예약건을 다시 처리할 시각 UNIX timestamp in seconds
          required: true
          type: integer
          x-portone-name: 예약 시각
          x-portone-description: 실패한 예약건을 다시 처리할 시각 UNIX timestamp
      responses:
        '200':
          description: 정상적으로 재예약이 완료되었습니다.
          schema:
            $ref: '#/definitions/SingleScheduleResponse'
        '400':
          description: '필수 파라미터 누락, 아직 실행되지 않거나 이미 실행 중 혹은 승인된 결제예약, 예약시각이 현재 시각보다 과거인 경우'
        '404':
          description: 존재하지 않는 결제예약
        '500':
          description: 포트원 내부 이슈로 인한 API 호출 실패
      x-portone-supported_pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - nice_v2
        - payco
        - paymentwall
        - settle
        - settle_acc
        - smartro_v2
        - tosspayments
        - paypal_v2
        - welcome
      x-portone-category: nonAuthPayment.subscribe
  '/subscribe/payments/schedule/{merchant_uid}/retry':
    post:
      tags:
        - subscribe
      summary: 결제 실패 재시도 API
      description: '결제 예약 실행 시 실패했던 건, 혹은 예약 취소했던 건을 즉시 결제 재시도 할 수 있습니다.'
      operationId: retryScheduleByMid
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: path
          description: 결제예약에 사용된 고객사 거래 고유번호
          required: true
          type: string
          x-portone-name: 고객사 주문번호
          x-portone-description: 결제예약에 사용된 고객사 거래 고유번호
      responses:
        '200':
          description: 정상적으로 재시도가 완료되었습니다. (결제 성공/실패 여부는 결제 상태(status)로 확인 필요)
          schema:
            $ref: '#/definitions/PaymentResponse'
        '400':
          description: '필수 파라미터 누락, 아직 실행되지 않거나 이미 실행중 혹은 승인된 결제예약'
        '404':
          description: 존재하지 않는 결제예약 혹은 빌링키
        '500':
          description: '미지원 PG사, 포트원 내부 이슈 등으로 인한 API 호출 실패'
      x-portone-supported_pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - nice_v2
        - payco
        - paymentwall
        - settle
        - settle_acc
        - smartro_v2
        - tosspayments
        - paypal_v2
        - welcome
      x-portone-category: nonAuthPayment.subscribe
  '/subscribe/payments/schedule/customers/{customer_uid}':
    get:
      tags:
        - subscribe
      summary: 결제예약 복수조회(빌링키) API
      description: >-
        빌링키 결제예약 조회 API 와 동일한 동작을 하는 API입니다.<br><br>customer_uid별 결제예약목록을 조회할 수
        있습니다. 결제예약정보가 (페이징된)목록으로 전달되며, 최대 3개월 단위로 조회가 가능합니다.<br><br>결제예약정보가 예약된
        시각 기준으로 최신순으로 정렬되어 전달됩니다.
      operationId: findSchedulesByCustomer
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: customer_uid
          in: path
          description: 결제예약에 사용된 고객사 거래 고유번호
          required: true
          type: string
          x-portone-name: 빌링키
          x-portone-description: string 타입의 고객의 결제 수단 식별 고유번호
        - name: page
          in: query
          description: '조회목록 페이징. 1부터 시작하며, 기본값은 1입니다.'
          required: false
          type: integer
          x-portone-name: 조회목록 페이징
          x-portone-description: 조회목록 페이징으로 기본값은 1입니다.
        - name: from
          in: query
          description: 조회 시작시각 unix timestamp(결제예약건의 '예약시각'기준으로 조회합니다. from <= '예약시각')
          required: true
          type: integer
          x-portone-name: 조회 시작시각
          x-portone-description: 조회 시작시각 unix timestamp(결제예약건의 '예약시각'기준으로 조회합니다. from <= '예약시각')
        - name: to
          in: query
          description: 조회 종료시각 unix timestamp(결제예약건의 '예약시각'기준으로 조회합니다. '예약시각' < to)
          required: true
          type: integer
          x-portone-name: 조회 종료시각
          x-portone-description: 조회 종료시각 unix timestamp(결제예약건의 '예약시각'기준으로 조회합니다. '예약시각' < to)
        - name: schedule-status
          in: query
          description: |-
            예약상태. 누락되면 모든 상태의 예약내역 조회
                 <ul><li>scheduled: 예약됨(실행되기 전)</li>
                 <li>executed: 예약된 결제실행완료</li>
                 <li>revoked: 예약철회</li></ul>
          required: false
          type: string
          enum:
            - scheduled
            - executed
            - revoked
          x-portone-name: 예약상태
          x-portone-description: 조회할 결제건의 예약상태
      responses:
        '200':
          description: 결제예약목록 조회완료
          schema:
            $ref: '#/definitions/ScheduleResponse'
        '400':
          description: 검색 파라메터가 유효하지 않은 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - chai
        - danal
        - danal_tpay
        - daou
        - html5_inicis
        - inicis
        - kakaopay
        - kcp
        - kcp_billing
        - kicc
        - ksnet
        - mobilians
        - naverpay
        - nice
        - nice_v2
        - payco
        - paymentwall
        - settle
        - settle_acc
        - smartro_v2
        - tosspayments
        - paypal_v2
        - welcome
        - tosspay_v2
      x-portone-category: nonAuthPayment.subscribe
  '/tiers/{tier_code}':
    get:
      tags:
        - tiers
      summary: 하위 상점 정보 조회 API
      description: 하위 상점(Tier)정보 조회. 등록된 하위 상점(Tier) 정보를 반환합니다.
      operationId: GetTier
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: tier_code
          in: path
          description: 하위 상점(Tier) 고유코드. 알파벳 대문자 또는 숫자만 사용(반드시 3자리)
          required: true
          type: string
          default: XYZ
          x-portone-name: Tier 코드
          x-portone-description: 하위 상점의 고유 코드로 알파벳 대문자 또는 숫자만 사용 가능합니다.(**반드시 3자리**)
      responses:
        '200':
          description: 정상 등록
          schema:
            $ref: '#/definitions/TierResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 등록되지 않았거나 이미 삭제된 tier_code를 사용한 경우
      x-portone-category: user.tier
  /users/pg:
    get:
      tags:
        - users
      summary: PG MID복수조회 API
      description: 포트원 관리자 콘솔에 등록되어있는 PG MID 정보를 복수조회 할 수 있습니다.
      operationId: getPgSettingList
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      responses:
        '200':
          description: 포트원 관리자 콘솔에 등록되어있는 PG 설정 정보 응답 완료
          schema:
            $ref: '#/definitions/MultiplePgSettingResponse'
      x-portone-category: user
  /vbanks:
    post:
      tags:
        - vbanks
      summary: 가상계좌 발급 API
      description: |-
        가상계좌번호를 발급하여 고객이 입금할 수 있도록 합니다. <br>
             희망하시는 은행, 예금주명으로 입금이 가능한 가상계좌를 생성할 수 있습니다.(별도로 PG계약 필요)<br>
             은행구분코드는 페이지 가장 하단에 있는 은행코드표를 참조하시기 바랍니다.
             <h4>지원되는 PG사</h4>
             <ul> <li>헥토파이낸셜(구 세틀뱅크)
             </li> <li>나이스페이먼츠
             </li> <li>KG이니시스
             </li> <li>토스페이먼츠 - 신모듈
             </li> <li>KSNET
             </li> <li>스마트로 - 신모듈
             </li><li>(신) 나이스페이
             </li><li> 웰컴페이먼츠 </li></ul>
      operationId: createVbank
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: merchant_uid
          in: formData
          description: >-
            고객사 거래 고유번호. 이미 결제가 이뤄진 적이 있는 merchant_uid로는 추가적인 가상계좌 생성이
            불가능합니다.<br>
                 (스마트로 - 신모듈의 경우, 특수문자 포함이 불가능합니다.)
          required: true
          type: string
          maxLength: 40
          x-portone-name: 고객사 주문번호
          x-portone-description: >-
            가상계좌를 발급할 결제건의 고객사 거래 고유번호으로 이미 결제가 이뤄진 적이 있는 merchant_uid로는 추가적인
            가상계좌 생성이 불가능합니다.
          x-portone-per-pg:
            smartro_v2:
              descripton: 특수문자 포함이 불가능합니다.
        - name: amount
          in: formData
          description: 입금 예정 금액
          required: true
          type: number
          x-portone-name: 입금 예정 금액
          x-portone-description: 발급 된 가상계좌에 입금 될 금액
        - name: product_type
          in: formData
          description: |-
            상품구분 <br> (KSNET 전용 필수파라미터입니다.)
                 <ul><li> real: 실물상품
                 </li><li> digital: 디지털컨텐츠</li></ul>
          required: false
          type: string
          enum:
            - real
            - digital
          x-portone-name: 상품구분
          x-portone-description: 가상계좌 발급을 위한 결제건의 상품구분 코드
          x-portone-supported-pgs:
            - ksnet
          x-portone-per-pg:
            ksnet:
              required: true
        - name: vbank_num
          in: formData
          description: >-
            고정식 가상계좌 발급 시, pg사로부터 전달받은 가상계좌 번호 <br> (필수 : 스마트로 - 신모듈, 헥토파이낸셜)
            (**사용을 위해 PG사와 협의 필요**) 
          required: false
          type: string
          x-portone-name: 고정 가상 계좌 번호
          x-portone-description: '고정식 가상계좌 발급 시, pg사로부터 전달받은 가상계좌 번호 (**사용을 위해 PG사와 협의 필요**) '
          x-portone-supported-pgs:
            - smartro_v2
            - settle
          x-portone-per-pg:
            smartro_v2:
              description: |
                <p>고정식 가상계좌를 발급 하시는 경우, <strong>필수</strong>로 입력해야합니다.</p>
            settle:
              description: |
                <p>고정식 가상계좌를 발급 하시는 경우, <strong>필수</strong>로 입력해야합니다.</p>
        - name: vbank_code
          in: formData
          description: |-
            은행구분코드 <br>
                 <a href="https://developers.portone.io/docs/ko/tip/pg-1">링크보기</a>
          required: true
          type: string
          x-portone-name: 은행구분코드
          x-portone-summary: |
            <p>가상계좌 발급을 위한 은행구분코드</p>
          x-portone-description: '[은행구분코드 리스트 확인하기](https://developers.portone.io/docs/ko/tip/pg-1)'
        - name: vbank_due
          in: formData
          description: 가상계좌 입금기한 UNIX TIMESTAMP
          required: true
          type: integer
          x-portone-name: 가상계좌 입금기한
          x-portone-description: 가상계좌 발급시 입금기한 UNIX TIMESTAMP
        - name: vbank_holder
          in: formData
          description: |-
            가상계좌 예금주명 <br>
                 (필수 : 이니시스, 나이스, 헥토파이낸셜(구 세틀뱅크), 스마트로 - 신모듈) <br>
                 **토스페이먼츠 - 신모듈, KSNET, 웰컴페이먼츠의 경우 적용되지 않고 고객사명이 사용됨**
          required: false
          type: string
          maxLength: 16
          x-portone-name: 가상계좌 예금주명
          x-portone-description: 가상계좌 발급을 위한 예금주명
          x-portone-per-pg:
            html5_inicis:
              required: true
            nice:
              required: true
            settle:
              required: true
            smartro_v2:
              required: true
            tosspayments:
              description: >
                <p>해당 파라미터를 입력하셔도 적용되지 않고, <strong>고객사명이 예금주명으로
                사용</strong>됩니다.</p>
            ksnet:
              description: >
                <p>해당 파라미터를 입력하셔도 적용되지 않고, <strong>고객사명이 예금주명으로
                사용</strong>됩니다.</p>
            welcome:
              description: >
                <p>해당 파라미터를 입력하셔도 적용되지 않고, <strong>고객사명이 예금주명으로
                사용</strong>됩니다.</p>
          x-portone-unsupported-pgs:
            - tosspayments
            - ksnet
            - welcome
        - name: vbank_key
          in: formData
          description: >-
            고정식 가상계좌를 발급받기 위한 고객과 매칭시킨 계좌 고유 키 <br>(필수 : 토스페이먼츠 - 신모듈) (**사용을 위해
            PG사와 협의 필요**)
          required: false
          type: string
          maxLength: 13
          x-portone-name: 계좌 고유 키
          x-portone-description: 고정식 가상계좌를 발급받기 위한 고객과 매칭시킨 계좌 고유 키(**사용을 위해 PG사와 협의 필요**)
          x-portone-supported-pgs:
            - tosspayments
          x-portone-per-pg:
            tosspayments:
              description: |
                <p>고정식 가상계좌를 발급 하시는 경우, <strong>필수</strong>로 입력해야합니다.</p>
        - name: name
          in: formData
          description: 주문명
          required: false
          type: string
          maxLength: 40
          x-portone-name: 주문명
          x-portone-description: 가상계좌 발급을 위한 결제건의 주문명
        - name: buyer_name
          in: formData
          description: '주문자명 <br>(필수 : 이니시스, 토스페이먼츠 - 신모듈, KSNET, 스마트로 - 신모듈, 웰컴페이먼츠)'
          required: false
          type: string
          maxLength: 16
          x-portone-name: 주문자명
          x-portone-description: 가상계좌 발급을 위한 결제건의 주문자명
          x-portone-per-pg:
            html5_inicis:
              required: true
            tosspayments:
              required: true
            ksnet:
              required: true
            smartro_v2:
              required: true
            welcome:
              required: true
        - name: buyer_email
          in: formData
          description: '주문자 Email주소 <br>(필수 : 이니시스,스마트로 - 신모듈, 헥토파이낸셜 (고정식 가상계좌 에스크로 결제시)'
          required: false
          type: string
          maxLength: 64
          x-portone-name: 주문자 Email 주소
          x-portone-description: 가상계좌 발급을 위한 결제건의 주문자 Email주소
          x-portone-per-pg:
            html5_inicis:
              required: true
            smartro_v2:
              required: true
        - name: buyer_tel
          in: formData
          description: >-
            주문자 전화번호 <br>(필수 : 스마트로 - 신모듈) (신) 나이스페이의 경우 가상계좌 발급 건 에스크로 등록시 가상계좌
            발급시 전달 한 주문자의 전화번호나 사업자 등록 번호가 사용 됨)
          required: false
          type: string
          maxLength: 16
          x-portone-name: 주문자 전화번호
          x-portone-description: 가상계좌 발급을 위한 결제건의 주문자 전화번호
          x-portone-per-pg:
            smartro_v2:
              required: true
            nice_v2:
              description: >
                <p>가상계좌 발급 건 에스크로 등록시 가상계좌 발급시 전달 한 주문자의 전화번호나 사업자 등록 번호가
                사용됩니다.</p>
        - name: business_registration_number
          in: formData
          description: >-
            주문자 사업자 등록번호<br>((신) 나이스페이 전용. (신) 나이스페이의 경우 가상계좌 발급 건 에스크로 등록시 가상계좌
            발급시 전달 한 주문자의 전화번호나 사업자 등록 번호가 사용 됨)
          required: false
          type: string
          maxLength: 10
          x-portone-name: 사업자 등록번호
          x-portone-description: 주문자의 사업자 등록번호
          x-portone-supported-pgs:
            - nice_v2
          x-portone-per-pg:
            nice_v2:
              description: >
                <p>API를 통한 가상 계좌 발급 시, 향후 해당 거래 건을 에스크로 배송 정보로 등록할 때 사용될 구매자의
                사업자 번호를 <code>business_registration_number</code> 파라미터로 입력받고
                있습니다.</p>
        - name: buyer_addr
          in: formData
          description: 주문자 주소
          required: false
          type: string
          maxLength: 128
          x-portone-name: 주문자 주소
          x-portone-description: 가상계좌 발급을 위한 결제건의 주문자 주소
        - name: buyer_postcode
          in: formData
          description: 주문자 우편번호
          required: false
          type: string
          maxLength: 8
          x-portone-name: 주문자 우편번호
          x-portone-description: 가상계좌 발급을 위한 결제건의 주문자 우편번호
        - name: pg
          in: formData
          description: |-
            PG사 구분자.<br>
                 관리자콘솔 API 방식 비인증 PG설정이 2개 이상인 경우 필수적으로 기재해야 하는 항목입니다.
                 동일 PG사에 두개의 MID 를 설정한 경우 아래 양식으로 기재 합니다.
                 <b>{PG사}.{PG상점아이디}</b>
                 <ul><li>나이스페이먼츠, KCP 2가지 PG설정이 되어있다면, pg 파라미터로 nice 또는 kcp로 구분 가능
                 </li><li>나이스페이먼츠로부터 2개 이상의 상점아이디를 발급받았다면, nice.MID1 또는 nice.MID2로 구분 가능</li></ul>
                 (단, **이니시스 경우 필수값임** `inicis.{상점아이디}` 형태로 지정)
          required: false
          type: string
          x-portone-name: PG사 구분코드
          x-portone-description: 가상계좌 발급 할 PG사 구분코드
          x-portone-per-pg:
            html5_inicis:
              required: true
              description: |
                <p><strong>inicis.{상점아이디}</strong> 형태로 지정 바랍니다.</p>
        - name: notice_url
          in: formData
          description: |-
            가상계좌 입금시 입금통지받을 URL<br>
                 선언되지 않으면 포트원 관리자 페이지에 정의된 Notification URL값을 사용
          required: false
          type: array
          x-portone-name: Notification URL(Webhook URL)
          x-portone-description: 가상계좌 입금시 입금통지받을 URL
        - name: custom_data
          in: formData
          description: 결제정보와 함께 저장할 custom_data <br>객체로 전달되는 경우 JSON 문자열로 저장
          required: false
          type: string
          x-portone-name: 추가 정보
          x-portone-description: 결제정보와 함께 저장할 추가정보로 객체로 전달되는 경우 JSON 문자열로 저장
        - name: tax_free
          in: formData
          description: |-
            면세금액 <br>
                 <h5>지원되는 PG사</h5><ul><li>나이스페이먼츠</li><li>(신) 나이스페이</li><li>웰컴페이먼츠</li></ul>
                 **웰컴페이먼츠**의 경우, `현금영수증 부가세업체정함` 설정 고객사에 한해 사용이 가능합니다.<br>
                 **나이스페이먼츠, (신) 나이스페이 **의 경우, 상점아이디의 과세설정이 **지정금액방식**(복합과세)으로 설정되어 있는 경우 **필수값** 입니다.
                 과세 혹은 면세로 설정된 상점아이디에서 파라미터 전달 시 가상계좌 생성이 불가능합니다.
          required: false
          type: integer
          x-portone-name: 면세금액
          x-portone-description: 가상계좌 발급을 위한 결제건의 면세금액
          x-portone-supported-pgs:
            - nice
            - nice_v2
            - welcome
          x-portone-per-pg:
            nice:
              description: >
                <p>상점아이디의 과세설정이 <strong>지정금액방식</strong>(복합과세)으로 설정되어 있는 경우
                <strong>필수값</strong> 입니다.</p>

                <ul>

                <li>과세 혹은 면세로 설정된 상점아이디에서 파라미터 전달 시 가상계좌 생성이 불가능합니다.</li>

                </ul>
            nice_v2:
              description: >
                <p>상점아이디의 과세설정이 <strong>지정금액방식</strong>(복합과세)으로 설정되어 있는 경우
                <strong>필수값</strong> 입니다.</p>

                <ul>

                <li>과세 혹은 면세로 설정된 상점아이디에서 파라미터 전달 시 가상계좌 생성이 불가능합니다.</li>

                </ul>
            welcome:
              description: |
                <p><code>현금영수증 부가세업체정함</code> 설정 고객사에 한해 사용이 가능합니다</p>
        - name: vat_amount
          in: formData
          description: |-
            amount 중 부가세 금액.<br/>
                 부가세를 지정할 수 있으며, tax_free=0, vat_amount=0으로 영세율로 결제 가능합니다.(기본값: null)<br>
                 <h5>지원되는 PG사</h5><ul><li>나이스페이먼츠</li><li>(신) 나이스페이</li><li>웰컴페이먼츠</li></ul>
          required: false
          type: number
          x-portone-name: 부가세
          x-portone-description: 가상계좌 발급을 위한 결제건의 부가세 금액
          x-portone-supported-pgs:
            - nice
            - nice_v2
            - welcome
          x-portone-per-pg:
            welcome:
              description: >
                <p><code>부가세업체정함</code> 설정 고객사에 한해 사용 가능하며 전체금액의 10% 이하로 설정해야
                합니다. vat_amount가 <span>총 상품가격의 10%를 초과할 경우는 결제가
                거절됩니다.</span></p>
        - name: pg_api_key
          in: query
          description: >-
            이니시스의 가맹점 관리자 페이지에서 확인하셔야 하는 API Key 값으로 가상계좌 발급 및 말소 신청에 사용됩니다.
            누락하거나 잘못된 키 입력 시 hashData 불일치 오류가 발생합니다. <br>
                 (**이니시스 전용 필수 파라미터로 Query parameter입니다.**)
          required: false
          type: string
          x-portone-name: Api Key
          x-portone-summary: |
            <p>이니시스의 가맹점 관리자 페이지에서 확인하셔야 하는 API Key 값</p>
          x-portone-description: >-
            가상계좌 발급 및 말소 신청에 사용됩니다. 누락하거나 잘못된 키 입력 시 hashData 불일치 오류가 발생합니다.
            (**이니시스 전용 필수 파라미터로 Query parameter입니다.**)
          x-portone-supported-pgs:
            - html5_inicis
          x-portone-per-pg:
            html5_inicis:
              required: true
              description: |
                <p>Query parameter로 입력 바랍니다.</p>
        - name: product_count
          in: formData
          description: '결제 상품의 개수 (Default : 1)'
          required: false
          type: integer
          x-portone-name: 결제 상품의 개수
          x-portone-description: 가상계좌 발급을 위한 결제 상품의 개수로 기본값은 1입니다
        - name: escrow_password
          in: formData
          description: 헥토파이낸셜 고정식 가상계좌 에스크로 결제 시 필수로 입력해야합니다.
          required: false
          type: string
          x-portone-name: 에스크로 비밀번호
          x-portone-description: 헥토파이낸셜 고정식 가상계좌 에스크로 결제 시 필수로 입력해야합니다.
        - name: fixed_unlimited_vbank
          in: formData
          description: 헥토파이낸셜 고정식 무제한 가상계좌 발급 시 필수로 입력해야합니다.
          required: false
          type: boolean
          default: false
          x-portone-name: 고정식 무제한 가상계좌 여부
          x-portone-description: 헥토파이낸셜 고정식 무제한 가상계좌 발급시 필수로 입력해야합니다.
      responses:
        '200':
          description: 가상계좌 생성 완료
          schema:
            $ref: '#/definitions/PaymentResponse'
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
      x-portone-supported-pgs:
        - settle
        - nice
        - nice_v2
        - html5_inicis
        - ksnet
        - smartro_v2
        - tosspayments
        - welcome
      x-portone-category: vbank
  '/vbanks/{imp_uid}':
    put:
      tags:
        - vbanks
      summary: 가상계좌 발급정보 수정 API
      description: |-
        API요청으로 발급된 가상계좌(입금이 되기 전)의 정보를 수정합니다<br>
              아직 입금이 되지 않은 가상계좌의 입금기한 또는 입금금액을 수정할 수 있습니다. (헥토파이낸셜(구 세틀뱅크)만 사용 가능)<br>
              imp_uid가 지정되어야 합니다.(포트원 기획 의도상 동일한 merchant_uid의 입금대기 중인 가상계좌가 N개 존재할 수 있으므로 imp_uid로만 가상계좌 수정이 가능합니다)
      operationId: modifyVbank
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 거래고유번호
          required: true
          type: string
          default: imp_448280090638
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 가상계봐 발급 정보를 수정할 결제건의 포트원 거래고유번호
        - name: amount
          in: formData
          description: 수정할 결제금액
          required: false
          type: integer
          x-portone-name: 발급금액
          x-portone-description: 수정할 결제금액
        - name: vbank_due
          in: formData
          description: 수정할 가상계좌 입금기한 UNIX TIMESTAMP
          required: false
          type: integer
          x-portone-name: 입금기한
          x-portone-description: 수정할 가상계좌 입금기한 UNIX TIMESTAMP
      responses:
        '200':
          description: 가상계좌 수정 완료
          schema:
            $ref: '#/definitions/PaymentResponse'
        '400':
          description: imp_uid가 누락된 경우/ 가상계좌 결제 건이 아닌 경우/ 가상계좌가 입금대기 상태(ready)가 아닌 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 유효하지 않은 imp_uid
      x-portone-supported-pgs:
        - settle
      x-portone-category: vbank
    delete:
      tags:
        - vbanks
      summary: 가상계좌 발급취소 API
      description: |-
        발급된 가상계좌(입금이 되기 전)를 말소합니다. <br>
              아직 입금이 되지 않은 가상계좌를 말소시킴으로써 구매자가 실수로 입금하는 경우를 방지하도록 합니다.<br>
              imp_uid가 지정되어야 합니다.(포트원 기획 의도상 동일한 merchant_uid의 입금대기 중인 가상계좌가 N개 존재할 수 있으므로 imp_uid로만 가상계좌 말소가 가능합니다)
              <h4>지원되는 PG사</h4>
              <ul> <li>KG이니시스
              </li> <li>NHN KCP
              </li> <li>토스페이먼츠 - 구모듈
              </li> <li>다날
              </li> <li>나이스페이먼츠
              </li> <li>KICC
              </li> <li>헥토파이낸셜(구 세틀뱅크)
              </li> <li>스마트로 - 구모듈
              </li> <li>토스페이먼츠 - 신모듈
              </li> <li>KSNET
              </li> <li> 스마트로 - 신모듈
              </li> <li>(신) 나이스페이
              </li> <li>웰컴페이먼츠</li></ul>
      operationId: revokeVbank
      consumes:
        - application/json
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        - name: imp_uid
          in: path
          description: 포트원 거래고유번호
          required: true
          type: string
          default: imp_448280090638
          x-portone-name: 포트원 거래고유번호
          x-portone-description: 가상계좌 발급 취소할 결제건의 포트원 거래고유번호
        - name: pg_api_key
          in: query
          description: >-
            이니시스의 가맹점 관리자 페이지에서 확인하셔야 하는 API Key 값으로 가상계좌 발급 및 말소 신청에 사용됩니다.
            누락하거나 잘못된 키 입력 시 hashData 불일치 오류가 발생합니다. <br>
                  POST 가상계좌 발급 API요청의 `pg_api_key`와 동일한 값입니다. <br>
                  (**이니시스 전용 필수 파라미터로 Query parameter입니다.**)
          required: false
          type: string
          x-portone-name: API Key
          x-portone-summary: |
            <p>이니시스의 가맹점 관리자 페이지에서 확인하셔야 하는 API Key 값</p>
          x-portone-description: >-
            가상계좌 발급 및 말소 신청에 사용됩니다. 누락하거나 잘못된 키 입력 시 hashData 불일치 오류가 발생합니다.
            (**이니시스 전용 필수 파라미터로 Query parameter입니다.**)
          x-portone-supported-pgs:
            - html5_inicis
          x-portone-per-pg:
            html5_inicis:
              required: true
              description: |
                <p>Query parameter로 입력 바랍니다.</p>
      responses:
        '200':
          description: 가상계좌 말소 완료
          schema:
            $ref: '#/definitions/PaymentResponse'
        '400':
          description: imp_uid가 누락된 경우/ 가상계좌 결제 건이 아닌 경우 / 가상계좌가 입금대기 상태(ready)가 아닌 경우
        '401':
          description: 인증 Token이 전달되지 않았거나 유효하지 않은 경우
        '404':
          description: 유효하지 않은 imp_uid
      x-portone-supported-pgs:
        - html5_inicis
        - uplus
        - danal
        - nice
        - kicc
        - settle
        - smartro
        - tosspayments
        - ksnet
        - smartro_v2
        - nice_v2
        - welcome
      x-portone-category: vbank
definitions:
  AuthAnnotation:
    required:
      - access_token
      - expired_at
      - now
    properties:
      access_token:
        description: 인증이 필요한 REST API요청에 사용할 access_token
        type: string
        x-portone-name: access_token
        x-portone-description: 인증이 필요한 REST API요청에 사용할 access_token
      expired_at:
        description: token만료시각. UNIX timestamp
        type: integer
        x-portone-name: token 만료시각
        x-portone-description: access_token의 만료시각. UNIX timestamp
      now:
        description: 현재시각 UNIX timestamp. token만료시각을 정확히 계산하기 위해 사용
        type: integer
        x-portone-name: 현재시각
        x-portone-description: token 만료시각을 정확히 계산하기 위해 사용되는 현재시각. UNIX timestamp
  AuthResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - properties:
          response:
            $ref: '#/definitions/AuthAnnotation'
  BenepiaPointAnnotation:
    required:
      - bank_holder
    properties:
      point:
        description: 베네피아 보유 포인트
        type: integer
        x-portone-name: 포인트
        x-portone-description: 베네피아 보유 포인트
  BenepiaPointResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 베네피아 포인트 조회 정보. 바로 아래 BenepiaPoint structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/BenepiaPointAnnotation'
  CertificationAnnotation:
    required:
      - imp_uid
      - pg_provider
      - foreigner
    properties:
      imp_uid:
        description: 포트원 인증 고유번호
        type: string
        x-portone-name: 포트원 인증 고유번호
        x-portone-description: 본인인증 결과건의 포트원 인증 고유번호
      merchant_uid:
        description: 고객사 주문번호
        type: string
        x-portone-name: 고객사 주문번호
        x-portone-description: 본인인증 결과건의 포트원 고객사 주문번호
      pg_tid:
        description: PG사 본인인증결과 고유번호
        type: string
        x-portone-name: PG사 본인인증결과 고유번호
        x-portone-description: 본인인증 결과건의 PG사 본인인증결과 고유번호
      pg_provider:
        description: '본인인증 제공 PG사 명칭. danal(다날), kcp_v2'
        type: string
        x-portone-name: pg사 구분코드
        x-portone-description: 본인인증 제공 PG사의 명칭
      name:
        description: 인증결과-실명
        type: string
        x-portone-name: 성명
        x-portone-description: 인증된 사용자의 성명
      gender:
        description: '인증결과-성별 <ul><li>male:남성</li> <li>female:여성</li></ul>'
        type: string
        x-portone-name: 성별
        x-portone-description: |-
          - male : 남성
          - female : 여성
      birthday:
        description: 인증결과-생년월일 <br> ISO8601 형식의 문자열. YYYY-MM-DD 10자리 문자열
        type: string
        x-portone-name: 생년월일
        x-portone-description: ISO8601 형식의 문자열. YYYY-MM-DD 10자리 문자열
      foreigner:
        description: >-
          인증결과-외국인 여부.<br><b>다날 본인인증서비스 계약시</b>외국인 구분기능을 추가 요청하지 않은 경우 항상
          <b>false</b>를 응답합니다.
               <ul><li>true:외국인</li> <li>false:내국인</li></ul>
        type: boolean
        x-portone-name: 외국인 여부
        x-portone-summary: |
          <p>인증된 사용자의 외국인 여부</p>
        x-portone-description: |-
          **다날 본인인증서비스 계약시** 외국인 구분기능을 추가 요청하지 않은 경우 항상 **false**를 응답합니다.
          - true : 외국인
          - false : 내국인
      phone:
        description: >-
          인증결과-사용된 휴대폰번호(신용카드 본인인증의 경우 해당사항없음). 특수기호없이 숫자로만 구성된 휴대폰번호가 전달됨. 통신사
          사전승인이 이뤄지지 않으면 phone 속성은 존재하지 않습니다. 통신사 사전승인이 필요하므로 cs@portone.io 로 다날
          CPID 와 함께 사용승인 요청주시면 안내도와드리겠습니다.
        type: string
        x-portone-name: 휴대폰번호
        x-portone-summary: |
          <p>인증에 사용된 휴대폰 번호 (신용카드 본인인증의 경우 해당사항 없음)</p>
        x-portone-description: |-
          특수 기호없이 숫자로만 구성된 휴대폰번호가 전달되며 통신사 사전승인이 이뤄지지 않으면 phone 속성은 존재하지 않습니다.

          통신사 사전승인이 필요하므로 cs@portone.io 로 다날 CPID 와 함께 사용승인 요청주시면 안내도와드리겠습니다.
      carrier:
        description: >-
          인증결과-사용된 휴대폰번호의 통신사(신용카드 본인인증의 경우 해당사항없음). 통신사 사전승인이 이뤄지지 않으면 carrier
          속성은 존재하지 않습니다. 통신사 사전승인이 필요하므로 cs@portone.io 로 다날 CPID 와 함께 사용승인 요청주시면
          안내도와드리겠습니다.
              <ul><li>SKT</li>
              <li>KT</li>
              <li>LGT</li>
              <li>SKT_MVNO</li>
              <li>KT_MVNO</li>
              <li>LGT_MVNO</li></ul>
        type: string
        x-portone-name: 통신사
        x-portone-summary: |
          <p>인증에 사용된 휴대폰번호의 통신사 (신용카드 본인인증의 경우 해당사항없음)</p>
        x-portone-description: >-
          사용된 휴대폰번호의 통신사(신용카드 본인인증의 경우 해당사항없음). 통신사 사전승인이 이뤄지지 않으면 carrier 속성은
          존재하지 않습니다. 통신사 사전승인이 필요하므로 cs@portone.io 로 다날 CPID 와 함께 사용승인 요청주시면
          안내도와드리겠습니다.

          - SKT

          - KT

          - LGT

          - SKT_MVNO

          - KT_MVNO

          - LGT_MVNO
      certified:
        description: 인증성공여부
        type: boolean
        x-portone-name: 인증성공여부
        x-portone-description: 본인인증 성공여부
      certified_at:
        description: 인증처리시각 UNIX timestamp
        type: integer
        x-portone-name: 인증처리시각
        x-portone-description: 본인인증 처리시각 UNIX timestamp
      unique_key:
        description: 개인 고유구분 식별키(CI)
        type: string
        maxLength: '88'
        x-portone-name: 개인 고유구분 식별키
        x-portone-description: 개인별로 고유하게 부여하는 개인 식별키(CI)
      unique_in_site:
        description: 고객사 내 개인 고유구분 식별키(DI). 본인인증 PG MID별로 할당되는 개인 식별키
        type: string
        maxLength: '64'
        x-portone-name: 고객사 내 개인 고유구분 식별키
        x-portone-summary: |
          <p>고객사 내 개인별로 고유하게 부여하는 개인 식별키(DI)</p>
        x-portone-description: 본인인증 PG MID별로 할당되는 개인 식별키
      origin:
        description: 본인인증 프로세스가 진행된 웹 페이지의 URL
        type: string
        x-portone-name: 웹 페이지 URL
        x-portone-description: 본인인증 프로세스가 진행된 웹 페이지의 URL
      foreigner_v2:
        description: |-
          인증결과-외국인 여부(nullable)
                <ul><li>true:외국인</li>
                <li>false:내국인</li></ul>
                <b>다날 본인인증서비스 계약시</b>외국인 구분기능 추가 요청을 해주셔야 사용이 가능합니다. 요청을 하지 않은 경우 <b>null</b>을 응답합니다.
        type: boolean
        x-portone-name: 외국인 여부(nullable)
        x-portone-summary: |
          <p>본인인증 결과 외국인 여부(nullable)</p>
        x-portone-description: >-
          - true : 외국인

          - false : 내국인


          **다날 본인인증서비스 계약시** 외국인 구분기능 추가 요청을 해주셔야 사용이 가능합니다. 요청을 하지 않은 경우
          **null**을 응답합니다.
  CertificationResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 본인인증 결과 객체. 바로 아래 Certification structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/CertificationAnnotation'
  CertificationOTPAnnotation:
    required:
      - imp_uid
    properties:
      imp_uid:
        description: 포트원 인증 고유번호
        type: string
        x-portone-name: 포트원 인증 고유번호
        x-portone-description: 본인인증 결과건의 포트원 인증 고유번호
  CertificationOTPResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 본인인증 결과 객체. 바로 아래 Certification structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/CertificationOTPAnnotation'
  CustomerAnnotation:
    required:
      - customer_uid
      - pg_provider
      - pg_id
      - card_name
      - inserted
      - updated
      - sandbox
    properties:
      customer_uid:
        description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
        type: string
        maxLength: '80'
        x-portone-name: 구매자의 결제 수단 식별 고유번호
        x-portone-description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
      pg_provider:
        description: 빌링키가 등록된 PG사 구분코드
        type: string
        maxLength: '16'
        x-portone-name: PG사 구분코드
        x-portone-description: 빌링키가 등록된 PG사 구분코드
      pg_id:
        description: 빌링키가 등록된 PG사 상점아이디(MID)
        type: string
        maxLength: '80'
        x-portone-name: 상점아이디(MID)
        x-portone-description: 빌링키가 등록된 PG사 상점아이디(MID)
      sandbox:
        description: 빌링키 발급 시 이용한 포트원 채널의 테스트 채널 여부
        type: boolean
        x-portone-name: 테스트 빌링키 여부
        x-portone-description: |-
          빌링키 발급 시 이용한 포트원 채널의 테스트 채널 여부

          (본 필드는 `2026년 1월 26일`부터 추가 예정입니다.)
      customer_id:
        description: 구매자 ID
        type: string
        x-portone-name: 구매자 ID
        x-portone-description: 구매자 식별 고유 번호
      card_name:
        description: 카드사명
        type: string
        x-portone-name: 카드명
        x-portone-description: 빌링키 발급 한 카드명
      card_code:
        description: |-
          카드사 코드(금융결제원 표준코드번호)
               <a href='https://developers.portone.io/opi/ko/support/code-info/card-code?v=v1'>링크보기</a>
        type: string
        x-portone-name: 카드사 코드
        x-portone-description: >-
          카드사 코드(금융결제원 표준코드번호)


          [링크보기](https://developers.portone.io/opi/ko/support/code-info/card-code?v=v1)
      card_issuer_code:
        description: |-
          카드 발급사 코드(금융결제원 표준코드번호) <br>
              발급사 코드 지원 pg사
              <ul><li>(신) 토스페이먼츠
              </li><li>KSNET
              </li><li>페이팔 RT
              </li><li>(신) 스마트로
              </li><li>(신) 나이스페이먼츠
              </li><li>웰컴페이먼츠
              </li><li>(신) 토스페이
        type: string
        x-portone-name: 카드 발급사 코드
        x-portone-description: |-
          카드 발급사 코드(금융결제원 표준코드번호)

          발급사 코드 지원 pg사
          - (신) 토스페이먼츠
          - KSNET
          - 페이팔 RT
          - (신) 스마트로
          - (신) 나이스페이먼츠
          - 웰컴페이먼츠
          - (신) 토스페이
        x-portone-supported-pgs:
          - tosspayments
          - ksnet
          - paypal_v2
          - smartro_v2
          - nice_v2
          - welcome
          - tosspay_v2
      card_issuer_name:
        description: 카드 발급사명으로 발급사 코드를 지원하는 pg사에 한해 제공됩니다.
        type: string
        x-portone-name: 카드 발급사명
        x-portone-description: |-
          빌링키 발급 한 카드의 발급사명

              발급사 코드를 지원하는 pg사에 한해 제공됩니다.
      card_publisher_code:
        description: |-
          카드 발행사 코드(금융결제원 표준코드번호) <br>
              발행사 코드 지원 pg사
              <ul><li>(신) 토스페이먼츠
              </li><li>KSNET
              </li><li>페이팔 RT
              </li><li>(신) 스마트로
              </li><li>(신) 나이스페이먼츠
              </li><li>웰컴페이먼츠
              </li><li>(신) 토스페이
        type: string
        x-portone-name: 카드 발행사 코드
        x-portone-description: |-
          카드 발행사 코드(금융결제원 표준코드번호)

          발행사 코드 지원 pg사
          - (신) 토스페이먼츠
          - KSNET
          - 페이팔 RT
          - (신) 스마트로
          - (신) 나이스페이먼츠
          - 웰컴페이먼츠
          - (신) 토스페이
        x-portone-supported-pgs:
          - tosspayments
          - ksnet
          - paypal_v2
          - smartro_v2
          - nice_v2
          - welcome
          - tosspay_v2
      card_publisher_name:
        description: 카드 발행사명으로 발행사 코드를 지원하는 pg사에 한해 제공됩니다.
        type: string
        x-portone-name: 카드 발행사명
        x-portone-description: |-
          빌링키 발급 한 카드의 발행사명

              발행사 코드를 지원하는 pg사에 한해 제공됩니다.
      card_number:
        description: 마스킹 카드번호
        type: string
        x-portone-name: 마스킹 카드번호
        x-portone-description: 빌링키 발급 한 카드의 마스킹된 카드번호
      card_type:
        description: |-
          카드유형 <br>
               (주의)해당 정보를 제공하지 않는 일부 PG사의 경우 null 로 응답됨(ex. 이니시스-빌링)
               <ul><li> 0 : 신용카드
               </li><li> 1 : 체크카드 </li></ul>
        type: integer
        x-portone-name: 카드유형
        x-portone-summary: |
          <p>빌링키 발급 한 카드의 유형</p>
        x-portone-description: |-
          (주의)해당 정보를 제공하지 않는 일부 PG사의 경우 null 로 응답됨(ex. 이니시스-빌링)
          - 0 : 신용카드
          - 1 : 체크카드
      customer_name:
        description: 고객(카드소지자) 성함
        type: string
        maxLength: '20'
        x-portone-name: 고객 성함
        x-portone-description: 빌링키 발급 한 고객(카드소지자)의 성함
      customer_tel:
        description: 고객(카드소지자) 전화번호
        type: string
        maxLength: '20'
        x-portone-name: 전화번호
        x-portone-description: 빌링키 발급 한 고객(카드소지자)의 전화번호
      customer_email:
        description: 고객(카드소지자) Email 주소
        type: string
        maxLength: '200'
        x-portone-name: Email 주소
        x-portone-description: 빌링키 발급 한 고객(카드소지자)의 Email 주소
      customer_addr:
        description: 고객(카드소지자) 주소
        type: string
        maxLength: '200'
        x-portone-name: 주소
        x-portone-description: 빌링키 발급 한 고객(카드소지자)의 주소
      customer_postcode:
        description: 고객(카드소지자) 우편번호
        type: string
        maxLength: '8'
        x-portone-name: 우편번호
        x-portone-description: 빌링키 발급 한 고객(카드소지자)의 우편번호
      inserted:
        description: 빌링키가 등록된 시각 UNIX timestamp
        type: integer
        x-portone-name: 발급 시각
        x-portone-description: 빌링키가 발급된 시각 UNIX timestamp
      updated:
        description: 빌링키가 업데이트된 시각 UNIX timestamp
        type: integer
        x-portone-name: 업데이트 시각
        x-portone-description: 빌링키가 업데이트된 시각 UNIX timestamp
  CustomerResponse:
    description: 일반 빌링키 응답
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - properties:
          response:
            $ref: '#/definitions/CustomerAnnotation'
  MultipleCustomersResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 구매자고객의 빌링키 상세정보. 바로 아래 Customer structure를 확인하세요
        properties:
          response:
            type: array
            items:
              $ref: '#/definitions/CustomerAnnotation'
  EscrowLogisAnnotation:
    required:
      - company
      - invoice
      - sent_at
      - applied_at
    properties:
      company:
        description: 택배사코드
        type: string
        x-portone-name: 택배사코드
        x-portone-description: 에스크로 결제건의 택배사 코드
      invoice:
        description: 송장번호
        type: string
        x-portone-name: 송장번호
        x-portone-description: 에스크로 결제건의 송장번호
      sent_at:
        description: 발송일시 UNIX TIMESTAMP
        type: integer
        x-portone-name: 발송 시각
        x-portone-description: 에스크로 결제건의 배송 발송 시각 UNIX timestamp
      applied_at:
        description: 배송정보 등록일시 UNIX TIMESTAMP
        type: integer
        x-portone-name: 등록 시각
        x-portone-description: 에스크로 결제건의 배송 정보 등록 시각 UNIX timestamp
  EscrowLogisResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 등록된 에스크로 배송 정보. 바로 아래 EscrowLogis structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/EscrowLogisAnnotation'
  EscrowLogisSenderAnnotation:
    properties:
      name:
        description: '보내는 분 성함(필수 : KG이니시스, 스마트로 - 신모듈)'
        type: string
        x-portone-name: 성함
        x-portone-description: 배송을 보내는 발신자의 성함
        x-portone-per-pg:
          html5_inicis:
            required: true
          smartro_v2:
            required: true
      tel:
        description: '보내는 분 전화번호(필수 : KG이니시스, 스마트로 - 신모듈)'
        type: string
        x-portone-name: 전화번호
        x-portone-description: 배송을 보내는 발신자의 전화번호
        x-portone-per-pg:
          html5_inicis:
            required: true
          smartro_v2:
            required: true
      addr:
        description: '보내는 분 주소(필수 : KG이니시스)'
        type: string
        x-portone-name: 주소
        x-portone-description: 배송을 보내는 발신자의 주소
        x-portone-per-pg:
          html5_inicis:
            required: true
      postcode:
        description: '보내는 분 우편번호(필수 : KG이니시스, 스마트로 - 신모듈)'
        type: string
        x-portone-name: 우편번호
        x-portone-description: 배송을 보내는 발신자의 우편번호
        x-portone-per-pg:
          html5_inicis:
            required: true
          smartro_v2:
            required: true
      relationship:
        description: '보내는 분과의 관계(필수 : 키움페이(구 다우, 페이조아), 예: 본인)'
        type: string
        x-portone-name: 발신자와의 관계
        x-portone-description: '배송을 보내는 발신자와의 관계 (예 : 본인)'
        x-portone-per-pg:
          daou:
            required: true
      formed_address:
        description: >-
          (필수 : 스마트로 - 신모듈) <br> 스마트로 - 신모듈의 경우 기존 파라미터인 addr가 아닌 해당 파라미터를 이용한
          주소 설정이 필요합니다.
        properties:
          address_line_1:
            description: 보내는 분의 지번주소 또는 도로명 주소
            type: string
            x-portone-name: 주소 1
            x-portone-description: 배송을 보내는 발신자의 지번주소 또는 도로명 주소
            x-portone-per-pg:
              smartro_v2:
                required: true
          address_line_2:
            description: '보내는 분의 상세주소 (ex) 동-호수, 아파트 or 건물명)'
            type: string
            x-portone-name: 주소 2
            x-portone-description: '배송을 보내는 발신자의 상세주소 (ex. 동-호수, 아파트 or 건물명)'
            x-portone-per-pg:
              smartro_v2:
                required: true
        type: object
        x-portone-name: 주소 구성
        x-portone-description: |-
          (필수 : 스마트로 - 신모듈)

          스마트로 - 신모듈의 경우 기존 파라미터인 addr가 아닌 해당 파라미터를 이용한 주소 설정이 필요합니다.
        x-portone-per-pg:
          smartro_v2:
            required: true
            description: |
              <p>기존 파라미터인 <code>addr</code>가 아닌 해당 파라미터를 이용한 주소 설정이 필요합니다.</p>
  EscrowLogisReceiverAnnotation:
    properties:
      name:
        description: '받는 분 성함(필수 : KG이니시스, 스마트로 - 신모듈)'
        type: string
        x-portone-name: 성함
        x-portone-description: 배송을 받는 수신자의 성함
        x-portone-per-pg:
          html5_inicis:
            required: true
          smartro_v2:
            required: true
      tel:
        description: '받는 분 전화번호(필수 : KG이니시스, 스마트로 - 신모듈)'
        type: string
        x-portone-name: 전화번호
        x-portone-description: 배송을 받는 수신자의 전화번호
        x-portone-per-pg:
          html5_inicis:
            required: true
          smartro_v2:
            required: true
      addr:
        description: '받는 분 주소(필수 : KG이니시스)'
        type: string
        x-portone-name: 주소
        x-portone-description: 배송을 받는 수신자의 주소
        x-portone-per-pg:
          html5_inicis:
            required: true
      postcode:
        description: '받는 분 우편번호(필수 : KG이니시스, 스마트로 - 신모듈)'
        type: string
        x-portone-name: 우편번호
        x-portone-description: 배송을 받는 수신자의 우편번호
        x-portone-per-pg:
          html5_inicis:
            required: true
          smartro_v2:
            required: true
      formed_address:
        description: >-
          (필수 : 스마트로 - 신모듈) <br> 스마트로 - 신모듈의 경우 기존 파라미터인 addr가 아닌 해당 파라미터를 이용한
          주소 설정이 필요합니다.
        properties:
          address_line_1:
            description: 보내는 분의 지번주소 또는 도로명 주소
            type: string
            x-portone-name: 주소 1
            x-portone-description: 배송을 받는 수신자의 지번주소 또는 도로명 주소
            x-portone-per-pg:
              smartro_v2:
                required: true
          address_line_2:
            description: '보내는 분의 상세주소 (ex) 동-호수, 아파트 or 건물명)'
            type: string
            x-portone-name: 주소 2
            x-portone-description: '배송을 받는 수신자의 상세주소 (ex. 동-호수, 아파트 or 건물명)'
            x-portone-per-pg:
              smartro_v2:
                required: true
        type: object
        x-portone-name: 주소 구성
        x-portone-description: |-
          (필수 : 스마트로 - 신모듈)

          스마트로 - 신모듈의 경우 기존 파라미터인 addr가 아닌 해당 파라미터를 이용한 주소 설정이 필요합니다.
        x-portone-per-pg:
          smartro_v2:
            required: true
            description: |
              <p>기존 파라미터인 <code>addr</code>가 아닌 해당 파라미터를 이용한 주소 설정이 필요합니다.</p>
  EscrowLogisInfoAnnotation:
    required:
      - company
      - invoice
      - sent_at
    properties:
      company:
        description: 택배사코드
        type: string
        x-portone-name: 택배사코드
        x-portone-description: 에스크로 결제건의 택배사 코드
      invoice:
        description: 송장번호
        type: string
        x-portone-name: 송장번호
        x-portone-description: 에스크로 결제건의 송장번호
      sent_at:
        description: 발송일시 UNIX TIMESTAMP
        type: integer
        x-portone-name: 발송 시각
        x-portone-description: 에스크로 결제건의 배송 발송 시각 UNIX timestamp
      receiving_at:
        description: '수령일시(필수: 키움페이(구 다우, 페이조아) / 예: YYYYMMDD)'
        type: string
        x-portone-name: 수령 시각
        x-portone-description: 에스크로 결제건의 배송 수령 시각 UNIX timestamp
        x-portone-per-pg:
          daou:
            required: true
      address:
        description: '발송주소(필수: 키움페이(구 다우, 페이조아))'
        type: string
        x-portone-name: 발송 주소
        x-portone-description: 에스크로 결제건의 배송 발송 주소
        x-portone-per-pg:
          daou:
            required: true
  EscrowLogisProductsAnnotation:
    required:
      - id
      - name
      - amount
    properties:
      id:
        description: '상품 고유 아이디 (필수 : 웰컴페이먼츠)'
        type: string
        x-portone-name: 상품 고유 아이디
        x-portone-description: ''
        x-portone-per-pg:
          welcome:
            required: true
      name:
        description: '상품 이름 (필수 : 웰컴페이먼츠)'
        type: string
        x-portone-name: 상품 이름
        x-portone-description: ''
        x-portone-per-pg:
          welcome:
            required: true
      code:
        description: 상품 코드
        type: string
        x-portone-name: 상품 코드
        x-portone-description: 고객사에서 사용하는 상품 관리 코드
      amount:
        description: '상품 단위 가격 (필수 : 웰컴페이먼츠)'
        type: number
        x-portone-name: 상품 단위 가격
        x-portone-description: ''
        x-portone-per-pg:
          welcome:
            required: true
      currency:
        description: 상품의 결제통화 구분코드으로 기본값은 KRW입니다.
        type: string
        default: KRW
        x-portone-name: 상품의 결제통화 구분코드
        x-portone-description: '통화 e.g.) KRW, USD, VND, ... Default: KRW'
      quantity:
        description: 상품의 수량
        type: integer
        default: 1
        x-portone-name: 상품의 수량
        x-portone-description: 상품의 수량으로 기본값은 1입니다.
      tag:
        description: '상품의 카테고리 e.g) 도서, 가전기기, 인테리어 용품 등'
        type: string
        x-portone-name: 상품의 카테고리
        x-portone-description: '상품의 카테고리 e.g) 도서, 가전기기, 인테리어 용품 등'
  KakaoOrderAnnotation: {}
  KakaoOrderResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - properties:
          response:
            description: >-
              응답데이터는 <a
              href='https://developers.kakao.com/docs/restapi/kakaopay-api#주문내역조회'>카카오페이
              주문내조회 API</a> 참조
            $ref: '#/definitions/KakaoOrderAnnotation'
  KcpQuickMemberAnnotation:
    required:
      - member_id
      - pg_provider
      - inserted
      - updated
    properties:
      member_id:
        description: 고객 고유번호
        type: string
        maxLength: '80'
        x-portone-name: 구매자 고유 아이디
        x-portone-description: 구매자의 고유 아이디(memberID)
      pg_provider:
        description: PG사 코드. kcp_quick(KCP 퀵페이)
        type: string
        maxLength: '16'
        x-portone-name: PG사 구분코드
        x-portone-description: 유저 정보가 등록된 PG사 구분코드. **kcp_quick**(KCP 퀵페이)
      pg_id:
        description: PG사 상점아이디
        type: string
        maxLength: '80'
        x-portone-name: PG사 상점아이디
        x-portone-description: 유저 정보가 등록된 PG사 상점아이디(MID)
      inserted:
        description: 유저 정보가 등록된 시각 UNIX timestamp
        type: integer
        x-portone-name: 등록 시각
        x-portone-description: 유저 정보가 등록된 시각 UNIX timestamp
      updated:
        description: 유저 정보가 업데이트된 시각 UNIX timestamp
        type: integer
        x-portone-name: 업데이트 시각
        x-portone-description: 유저 정보가 업데이트된 시각 UNIX timestamp
  KcpQuickMemberResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 등록된 구매자고객의 퀵페이 등록 정보. 바로 아래 Member structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/KcpQuickMemberAnnotation'
  NaverAddress:
    required:
      - base
      - postcode
      - tel1
      - name
    properties:
      base:
        description: 기본 주소
        type: string
        x-portone-name: 기본주소
        x-portone-description: ''
      detail:
        description: 상세 주소
        type: string
        x-portone-name: 상세주소
        x-portone-description: 네이버페이 상품 배송 상세주소
      postcode:
        description: 우편번호
        type: string
        x-portone-name: 우편번호
        x-portone-description: 네이버페이 상품 배송 우편번호
      tel1:
        description: 연락처1
        type: string
        x-portone-name: 연락처 1
        x-portone-description: 네이버페이 상품 배송 연락처 1
      tel2:
        description: 연락처2
        type: string
        x-portone-name: 연락처 2
        x-portone-description: 네이버페이 상품 배송 연락처 2
      name:
        description: 대상 이름
        type: string
        x-portone-name: 성함
        x-portone-description: 네이버페이 상품 배송 수취인 성함
  NaverCashAmountAnnotation:
    required:
      - amount_total
      - amount_by_npoint
      - amount_by_primary
      - amount_supply
      - amount_vat
    properties:
      amount_total:
        description: 현금영수증 발급가능 총액
        type: integer
        x-portone-name: 총액
        x-portone-description: 현금영수증 발급 가능한 총액
      amount_by_npoint:
        description: 현금영수증 발급가능 총액 중 Npoint 에 의한 금액
        type: integer
        x-portone-name: 포인트 금액
        x-portone-description: 현금영수증 발급가능한 총액 중 Npoint에 의한 금액
      amount_by_primary:
        description: '현금영수증 발급가능 총액 중 메인 결제수단(신용카드, 계좌이체 등)에 의한 금액'
        type: integer
        x-portone-name: 메인 결제수단 금액
        x-portone-description: '현금영수증 발급 가능한 총액 중 주 결제수단(신용카드, 계좌이체 등)에 의한 금액'
      amount_supply:
        description: 현금영수증 발급가능 총액 중 공급가액
        type: integer
        x-portone-name: 공급가액
        x-portone-description: 현금영수증 발급 가능한 총액 중 공급가액
      amount_vat:
        description: 현금영수증 발급가능 총액 중 부가세
        type: integer
        x-portone-name: 부가세
        x-portone-description: 현금영수증 발급 가능한 총액 중 부가세
  NaverCashAmountResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 네이버페이 현금영수증 발급가능금액 상세정보. 바로 아래 NaverCashAmount structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/NaverCashAmountAnnotation'
  NaverOrderer:
    required:
      - name
      - id
      - tel
    properties:
      name:
        description: 주문자 이름
        type: string
        x-portone-name: 성함
        x-portone-description: 네이버페이 주문자 성함
      id:
        description: 주문자 마스킹된 네이버 아이디
        type: string
        x-portone-name: 네이버 아이디
        x-portone-description: 네이버페이 주문자의 마스킹된 네이버 아이디
      tel:
        description: 주문자 연락처
        type: string
        x-portone-name: 연락처
        x-portone-description: 네이버페이 주문자의 연락처
  NaverProductOrderAnnotation:
    required:
      - product_order_id
      - product_order_status
      - product_id
      - product_name
      - product_option_id
      - product_option_name
      - quantity
    properties:
      product_order_id:
        description: 네이버페이 상품주문번호
        type: string
        x-portone-name: 상품주문번호
        x-portone-description: 결제건의 네이버페이 상품주문번호
      product_order_status:
        description: 네이버페이 상품주문상태
        type: string
        x-portone-name: 상품주문상태
        x-portone-description: 네이버페이 상품주문상테
      claim_type:
        description: 네이버페이 상품주문관련 클레임 타입(취소/교환/환불 등 클레임에 대한 유형)
        type: string
        x-portone-name: 클레임 타입
        x-portone-description: 네이버페이 상품주문관련 클레임 타입(취소/교환/환불 등 클레임에 대한 유형)
      claim_status:
        description: 네이버페이 상품주문관련 클레임에 대한 처리 상태(취소/교환/환불 등 클레임에 대해 처리 진행 상태)
        type: string
        x-portone-name: 클레임 처리 상태
        x-portone-description: 네이버페이 상품주문관련 클레임에 대한 처리 상태(취소/교환/환불 등 클레임에 대해 처리 진행 상태)
      product_id:
        description: 네이버페이 상품주문의 상품 고유번호
        type: string
        x-portone-name: 상품 고유 번호
        x-portone-description: 네이버페이 상품의 고유 번호
      product_name:
        description: 네이버페이 상품주문의 상품명
        type: string
        x-portone-name: 상품명
        x-portone-description: 네이버페이 상품명
      product_option_id:
        description: 네이버페이 상품주문의 상품옵션 고유번호
        type: string
        x-portone-name: 상품 옵션 번호
        x-portone-description: 네이버페이 상품 옵션 고유 번호
      product_option_name:
        description: 네이버페이 상품주문의 상품옵션명
        type: string
        x-portone-name: 상품옵션명
        x-portone-description: 네이버페이 상품옵션명
      product_amount:
        description: 네이버페이 개별상품 주문금액
        type: integer
        x-portone-name: 상품금액
        x-portone-description: 네이버페이 상품의 금액
      delivery_amount:
        description: 네이버페이 개별상품 배송비
        type: integer
        x-portone-name: 상품 배송비
        x-portone-description: 네이버페이 상품의 배송비
      quantity:
        description: 네이버페이 상품주문의 상품 수량
        type: integer
        x-portone-name: 상품 수량
        x-portone-description: 네이버페이 상품의 수량
      orderer:
        description: 네이버페이 상품주문의 주문자 정보
        x-portone-name: 주문자 정보
        x-portone-description: 네이버페이 상품주문의 주문자 정보
        $ref: '#/definitions/NaverOrderer'
      shipping_address:
        description: 네이버페이 상품주문별 배송주소 정보
        x-portone-name: 배송주소 정보
        x-portone-description: 네이버페이 상품주문별 배송주소 정보
        $ref: '#/definitions/NaverAddress'
      shipping_memo:
        description: 네이버페이 상품주문별 배송메모
        type: string
        x-portone-name: 배송메모
        x-portone-description: 네이버페이 상품주문별 배송메모
      shipping_due:
        description: 네이버페이 상품주문별 배송기한 Unix Timestamp
        type: integer
        x-portone-name: 배송기한
        x-portone-description: 네이버페이 상품주문별 배송기한 UNIX timestamp
      individual_code:
        description: 네이버페이 주문자의 개인통고유부호
        type: string
        x-portone-name: 개인통관고유부호
        x-portone-description: 네이버페이 주문자의 개인통관고유부호
  NaverProductOrderResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 네이버페이 상품주문 상세정보. 바로 아래 NaverProductOrder structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/NaverProductOrderAnnotation'
  NaverProductOrderArrayResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 네이버페이 상품주문 상세정보. 바로 아래 NaverProductOrder structure를 확인하세요
        properties:
          response:
            type: array
            items:
              $ref: '#/definitions/NaverProductOrderAnnotation'
  NaverReviewAnnotation:
    required:
      - review_id
      - score
      - title
      - product_order_id
      - product_id
      - product_name
      - writer
      - created_at
    properties:
      review_id:
        description: 네이버페이 구매평 고유 ID
        type: string
        x-portone-name: 구매평 고유 ID
        x-portone-description: 네이버페이 구매평 고유 ID
      score:
        description: '네이버페이 구매만족도. 1, 2, 3, 4, 5 (점)'
        type: string
        x-portone-name: 구매 만족도
        x-portone-summary: |
          <p>네이버페이 구매만족도</p>
        x-portone-description: |-
          - 일반 구매평 : 불만족 (0), 보통 (1), 만족 (2)
          - 프리미엄 구매평 : 추천 안 함(10), 보통(11), 추천(12), 적극추천(13)
      title:
        description: 네이버페이 일반 구매평 내용 또는 프리미엄 구매평 제목
        type: string
        x-portone-name: 구매평 내용 or 제목
        x-portone-description: 네이버페이 일반 구매평 내용 또는 프리미엄 구매평 제목
      content:
        description: 네이버페이 프리미엄 구매평 내용(일반 구매평인 경우 없음)
        type: string
        x-portone-name: 구매평 내용
        x-portone-description: 네이버페이 프리미엄 구매평 내용으로 일반 구매평인 경우 없습니다.
      product_order_id:
        description: 네이버페이 상품주문번호
        type: string
        x-portone-name: 상품 주문 번호
        x-portone-description: 네이버페이 상품 주문 번호
      product_id:
        description: 네이버페이 상품주문의 상품 고유번호
        type: string
        x-portone-name: 상품 고유 번호
        x-portone-description: 네이버페이 상품의 고유 번호
      product_name:
        description: 네이버페이 상품주문의 상품명
        type: string
        x-portone-name: 상품명
        x-portone-description: 네이버페이 상품명
      product_option_name:
        description: 네이버페이 상품주문의 상품옵션명
        type: string
        x-portone-name: 상품 옵션
        x-portone-description: 네이버페이 상품 옵션(옵션명)
      writer:
        description: 네이버페이 구매평 작성자 아이디
        type: string
        x-portone-name: 구매평 작성자 아이디
        x-portone-description: 암호화된 네이버페이 구매평 작성자 아이디
      created_at:
        description: 네이버페이 구매평 작성시각 unix timestamp
        type: integer
        x-portone-name: 작성시각
        x-portone-description: 네이버페이 구매평 작성시각 UNIX timestamp
      modified_at:
        description: 네이버페이 구매평 수정시각 unix timestamp
        type: integer
        x-portone-name: 수정시각
        x-portone-description: 네이버페이 구매평 수정시각 UNIX timestamp
  NaverReviewsResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 네이버페이 구매평 상세정보. 바로 아래 NaverReview structure를 확인하세요
        properties:
          response:
            type: array
            items:
              $ref: '#/definitions/NaverReviewAnnotation'
  PartnerReceiptsAnnotation:
    required:
      - business_registration_number
      - company_name
      - amount
    properties:
      business_registration_number:
        description: 하위 상점 사업자번호 (&quot;-&quot; 포함)
        type: string
        x-portone-name: 하위 상점 사업자 등록 번호
        x-portone-description: 거래를 구성하는 하위 상점의 사업자 등록 점번호 (&quot;-&quot; 포함)
        x-portone-per-pg:
          html5_inicis:
            required: true
      company_name:
        description: 하위 상점 명
        type: string
        x-portone-name: 하위 상점 명
        x-portone-description: 거래를 구성하는 하위 상점의 상점 명
        x-portone-per-pg:
          html5_inicis:
            required: true
      amount:
        description: 하위 상점 거래 금액
        type: number
        x-portone-name: 하위 상점 거래 금액
        x-portone-description: 거래를 구성하는 하위 상점의 해당 결제건 내 거래 금액
        x-portone-per-pg:
          html5_inicis:
            required: true
      tax_free:
        description: 하위 상점 거래 금액 중 면세 금액 (default = 0)
        type: number
        x-portone-name: 하위 상점 거래 금액 중 면세 금액
        x-portone-description: 거래를 구성하는 하위 상점의 해당 결제건 내 면세 금액
        x-portone-per-pg:
          html5_inicis:
            required: false
      vat_amount:
        description: 하위 상점 거래 금액 중 부가세 금액 (default = 거래 금액 / 11)
        type: number
        x-portone-name: 하위 상점 거래 금액 중 부가세 금액
        x-portone-description: 거래를 구성하는 하위 상점의 해당 결제건 내 부가세 금액
        x-portone-per-pg:
          html5_inicis:
            required: false
  PartnerReceiptResultAnnotation:
    properties:
      receipt_url:
        description: 매출전표 확인 URL
        type: string
        x-portone-name: 매출전표 확인 URL
        x-portone-description: 거래건에 대한 매출전표를 확인할 수 있는 URL
  PartnerReceiptResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 등록 성공한 매출전표 관련 정보.
        properties:
          response:
            $ref: '#/definitions/PartnerReceiptResultAnnotation'
  PaycoStatusAnnotation:
    required:
      - status
    properties:
      status:
        description: >-
          PAYCO주문변경된 상태 <ul><li>DELIVERY_START</li> <li>PURCHASE_DECISION</li>
          <li>CANCELED</li></ul>
        type: string
        x-portone-name: 주문상태코드
        x-portone-summary: |
          <p>변경된 주문 상태</p>
        x-portone-description: |-
          - DELIVERY_START
          - PURCHASE_DECISION
          - CANCELED
  PaycoStatusResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 결제 상세정보. 바로 아래 PaycoStatus structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/PaycoStatusAnnotation'
  PaymentAnnotation:
    required:
      - imp_uid
      - merchant_uid
      - amount
      - cancel_amount
      - currency
      - status
      - sandbox
    properties:
      imp_uid:
        description: 포트원 거래고유번호
        type: string
        maxLength: '32'
        x-portone-name: 포트원 거래고유번호
        x-portone-description: 결제건의 포트원 거래고유번호
      merchant_uid:
        description: 고객사 주문번호
        type: string
        maxLength: '40'
        x-portone-name: 고객사 주문번호
        x-portone-description: 결제건의 고객사 주문번호
      pay_method:
        description: |-
          결제수단 구분코드
               <ul><li>samsung : 삼성페이
               </li><li> card : 신용카드
               </li><li>trans : 계좌이체
               </li><li> vbank : 가상계좌
               </li><li> phone : 휴대폰
               </li><li> cultureland : 문화상품권
               </li><li> smartculture : 스마트문상
               </li><li> booknlife : 도서문화상품권
               </li><li> point : 포인트
               </li><li> ssgpay : SSGPAY
               </li><li> lpay : LPAY
               </li><li> payco : 페이코
               </li><li> kakaopay : 카카오페이
               </li><li> tosspay : 토스
               </li><li> naverpay : 네이버페이
               </li><li> applepay : 애플페이
               </li><li> paypal : 페이팔</li></ul>
        type: string
        maxLength: '20'
        x-portone-name: 결제수단 구분코드
        x-portone-description: |-

          - samsung : 삼성페이
          - card : 신용카드
          - trans : 계좌이체
          - vbank : 가상계좌
          - phone : 휴대폰
          - cultureland : 컬쳐랜드 문화상품권
          - culturegift : 문화상품권
          - smartculture : 스마트문상
          - booknlife : 도서문화상품권
          - point : 포인트
          - ssgpay : SSGPAY
          - lpay : LPAY
          - payco : 페이코
          - kakaopay : 카카오페이
          - tosspay : 토스
          - naverpay : 네이버페이
          - applepay : 애플페이
          - paypal : 페이팔
        x-portone-per-pg:
          paypal_v2:
            description: >
              <p>페이팔을 통해 카드 결제 외 BanContact, BLIK, eps, giropay 등 다양한 결제 수단으로
              결제가 가능하지만,

              <strong>페이팔이 승인 된 결제 수단을 알려주지 않기 때문에</strong> 페이팔의 모든 결제 건의 결제 수단은
              paypal로 일괄 저장됩니다.</p>
      channel:
        description: |-
          결제환경 구분코드
               <ul><li> pc:(인증방식)PC결제
               </li><li> mobile:(인증방식)모바일결제
               </li><li> api:정기결제 또는 비인증방식결제</li></ul>
        type: string
        x-portone-name: 결제환경 구분코드
        x-portone-description: |-

          - pc : (인증방식)PC결제
          - mobile : (인증방식)모바일결제
          - api : 정기결제 또는 비인증방식결제
      pg_provider:
        description: PG사 구분코드
        type: string
        maxLength: '16'
        x-portone-name: PG사 구분코드
        x-portone-description: 결제건의 PG사 구분코드
      emb_pg_provider:
        description: 허브형결제 PG사 구분코드
        type: string
        maxLength: '16'
        x-portone-name: 허브형결제 PG사 구분코드
        x-portone-description: 허브형 결제인 경우 결제건의 허브형 결제 PG사를 구분하는 코드
      pg_tid:
        description: PG사 거래번호
        type: string
        maxLength: '64'
        x-portone-name: PG사 거래번호
        x-portone-description: 결제건의 PG사 거래번호
      pg_id:
        description: PG사 MID
        type: string
        maxLength: '80'
        x-portone-name: PG사 상점아이디
        x-portone-description: 결제건의 PG사 상점아이디
      sandbox:
        description: 결제가 발생한 포트원 채널의 테스트 채널 여부
        type: boolean
        x-portone-name: 테스트 결제 여부
        x-portone-description: |-
          결제가 발생한 포트원 채널의 테스트 채널 여부

          (본 필드는 `2026년 1월 26일`부터 추가 예정입니다.)
      escrow:
        description: 에스크로결제 여부
        type: boolean
        x-portone-name: 에스크로결제 여부
        x-portone-description: 에스크로 결제건인지 구분하는 코드
      apply_num:
        description: 신용카드 승인번호
        type: string
        maxLength: '20'
        x-portone-name: 승인번호
        x-portone-description: 결제건의 신용카드 승인번호
      bank_code:
        description: 은행 표준코드 - (금융결제원기준)
        type: string
        x-portone-name: 은행 표준코드
        x-portone-description: 결제건의 은행 표준코드 (금융결제원기준) - 실시간계좌이체 결제건의 경우
      bank_name:
        description: 은행 명칭 - (실시간계좌이체 결제 건의 경우)
        type: string
        x-portone-name: 은행명
        x-portone-description: 결제건의 은행명 - 실시간계좌이체 결제 건의 경우
      card_code:
        description: |-
          카드사 코드번호(금융결제원 표준코드번호)
               <a href='https://developers.portone.io/opi/ko/support/code-info/card-code?v=v1'>링크보기</a>
        type: string
        x-portone-name: 카드사 코드번호
        x-portone-description: >-
          카드사 코드번호(금융결제원 표준코드번호)


          [링크보기](https://developers.portone.io/opi/ko/support/code-info/card-code?v=v1)
      card_name:
        description: 카드사명 - (신용카드 결제 건의 경우)
        type: string
        x-portone-name: 카드사명
        x-portone-description: 결제건의 카드사명 - 카드 결제 건의 경우
      card_issuer_code:
        description: |-
          결제건의 카드 발급사 코드번호(금융결제원 표준코드번호) - (카드 결제 건의 경우) <br>
              발급사 코드 지원 pg사
              <ul><li>(신) 토스페이먼츠
              </li><li>KSNET
              </li><li>페이팔 RT
              </li><li>(신) 스마트로
              </li><li>(신) 나이스페이먼츠
              </li><li>웰컴페이먼츠
              </li><li>토스페이먼츠 브랜드페이
              </li><li>(신) 토스페이
        type: string
        x-portone-name: 카드 발급사 코드
        x-portone-description: |-
          결제건의 카드 발급사 코드번호(금융결제원 표준코드번호) - 카드 결제 건의 경우

          발급사 코드 지원 pg사
          - (신) 토스페이먼츠
          - KSNET
          - 페이팔 RT
          - (신) 스마트로
          - (신) 나이스페이먼츠
          - 웰컴페이먼츠
          - 토스페이먼츠 브랜드페이
          - (신) 토스페이
        x-portone-supported-pgs:
          - tosspayments
          - ksnet
          - paypal_v2
          - smartro_v2
          - nice_v2
          - toss_brandpay
          - welcome
          - tosspay_v2
      card_issuer_name:
        description: 결제한 카드의 발급사명으로 발급사 코드를 지원하는 pg사에 한해 제공됩니다. - (카드 결제 건의 경우)
        type: string
        x-portone-name: 카드 발급사명
        x-portone-description: |-
          결제한 카드의 발급사명 - 카드 결제 건의 경우

              발급사 코드를 지원하는 pg사에 한해 제공됩니다.
      card_publisher_code:
        description: |-
          결제건의 카드 발행사 코드번호(금융결제원 표준코드번호) - (카드 결제 건의 경우) <br>
              발행사 코드 지원 pg사
              <ul><li>(신) 토스페이먼츠
              </li><li>KSNET
              </li><li>페이팔 RT
              </li><li>(신) 스마트로
              </li><li>(신) 나이스페이먼츠
              </li><li>웰컴페이먼츠
              </li><li>토스페이먼츠 브랜드페이
              </li><li>(신) 토스페이
        type: string
        x-portone-name: 카드 발행사 코드
        x-portone-description: |-
          결제건의 카드 발행사 코드번호(금융결제원 표준코드번호) - 카드 결제 건의 경우

          발행사 코드 지원 pg사
          - (신) 토스페이먼츠
          - KSNET
          - 페이팔 RT
          - (신) 스마트로
          - (신) 나이스페이먼츠
          - 웰컴페이먼츠
          - 토스페이먼츠 브랜드페이
          - (신) 토스페이
        x-portone-supported-pgs:
          - tosspayments
          - ksnet
          - paypal_v2
          - smartro_v2
          - nice_v2
          - welcome
          - toss_brandpay
          - tosspay_v2
      card_publisher_name:
        description: 카드 발행사명으로 발행사 코드를 지원하는 pg사에 한해 제공됩니다. - (카드 결제 건의 경우)
        type: string
        x-portone-name: 카드 발행사명
        x-portone-description: |-
          결제 한 카드의 발행사명 - 카드 결제 건의 경우

              발행사 코드를 지원하는 pg사에 한해 제공됩니다.
      card_quota:
        description: 할부개월 수(0이면 일시불)
        type: integer
        x-portone-name: 할부개월 수
        x-portone-description: 결제건의 할부개월 수(일시불은 0으로 표기) - 신용카드 결제 건의 경우
        x-portone-per-pg:
          paypal_v2: |-
            Pay Later를 이용하면 할부 결제가 가능합니다. 하지만 **페이팔이 승인 된 할부 정보를 알려주지 않기 때문에**
            실제로 할부로 결제가 됐는지, 됐다면 몇 개월 할부로 결제 됐는지 알 수 없습니다.
      card_number:
        description: >-
          결제에 사용된 마스킹된 카드번호. 7~12번째 자리를 마스킹하는 것이 일반적이지만, PG사의 정책/설정에 따라 다소 차이가
          있을 수 있습니다.
        type: string
        x-portone-name: 카드번호
        x-portone-summary: |
          <p>결제에 사용된 마스킹된 카드번호</p>
        x-portone-description: >-
          결제에 사용된 마스킹된 카드번호. 7~12번째 자리를 마스킹하는 것이 일반적이지만, PG사의 정책/설정에 따라 다소 차이가
          있을 수 있습니다.
      card_type:
        description: |-
          카드 구분코드 (주의)해당 정보를 제공하지 않는 일부 PG사의 경우 null 로 응답됨(ex. 이니시스-빌링)
               <ul><li> 0 : 신용카드
               </li><li> 1 : 체크카드</li></ul>
        type: integer
        x-portone-name: 카드 구분코드
        x-portone-summary: |
          <p>결제건에 사용된 카드 구분코드</p>
        x-portone-description: |-
          (주의)해당 정보를 제공하지 않는 일부 PG사의 경우 null 로 응답됨(ex. 이니시스-빌링)
          - 0 : 신용카드
          - 1 : 체크카드
      vbank_code:
        description: 가상계좌 은행 표준코드 - (금융결제원기준)
        type: string
        x-portone-name: 가상계좌 은행 표준코드
        x-portone-description: 결제건의 가상계좌 은행 표준코드(금융결제원기준)- 가상계좌 결제 건의 경우
      vbank_name:
        description: 입금받을 가상계좌 은행명
        type: string
        x-portone-name: 가상계좌 은행명
        x-portone-description: 결제건의 입금받을 가상계좌 은행명 - 가상계좌 결제 건의 경우
      vbank_num:
        description: 입금받을 가상계좌 계좌번호
        type: string
        maxLength: '32'
        x-portone-name: 가상계좌 계좌번호
        x-portone-description: 결제건의 입금받을 가상계좌 계좌번호 - 가상계좌 결제 건의 경우
      vbank_holder:
        description: 입금받을 가상계좌 예금주
        type: string
        x-portone-name: 가상계좌 예금주
        x-portone-description: 결제건의 입금받을 가상계좌 예금주 - 가상계좌 결제 건의 경우
        x-portone-per-pg:
          tosspayments:
            description: >
              <p>토스페이먼츠는 가상계좌 발급 완료시 발급 된 가상계좌의 예금주 명을 전달해주지 않습니다.

              따라서 <code>vbank_holder</code>가 null로 리턴 되지만, <strong>실제 가상계좌 예금주
              명은 토스페이먼츠와 계약된 고객사 이름과 동일</strong>하다고 하니, 참고 부탁드립니다.</p>
      vbank_date:
        description: 입금받을 가상계좌 마감기한 UNIX timestamp
        type: integer
        x-portone-name: 가상계좌 입금기한
        x-portone-description: 결제건의 가상계좌 입금기한 - 가상계좌 결제 건의 경우
      vbank_issued_at:
        description: 가상계좌 생성 시각 UNIX timestamp
        type: integer
        x-portone-name: 가상계좌 생성시각
        x-portone-description: 결제건의 가상계좌 생성시각 UNIX timestamp - 가상계좌 결제 건의 경우
      name:
        description: 제품명
        type: string
        maxLength: '40'
        x-portone-name: 제품명
        x-portone-description: 결제건의 제품명
      amount:
        description: 주문(결제)금액
        type: number
        x-portone-name: 결제금액
        x-portone-description: 결제건의 결제금액
      cancel_amount:
        description: 결제취소금액
        type: number
        x-portone-name: 취소금액
        x-portone-description: 결제건의 누적 취소금액
      currency:
        description: 통화구분코드
        type: string
        x-portone-name: 결제통화 구분코드
        x-portone-description: '외환분호 e.g) KRW, USD, VND, ... Default: KRW'
      buyer_name:
        description: 주문자명
        type: string
        maxLength: 16
        x-portone-name: 주문자명
        x-portone-description: 결제건의 주문자명
      buyer_email:
        description: 주문자 Email주소
        type: string
        maxLength: '64'
        x-portone-name: 주문자 Email주소
        x-portone-description: 결제건의 주문자의 Email주소
      buyer_tel:
        description: 주문자 전화번호
        type: string
        maxLength: '16'
        x-portone-name: 주문자 전화번호
        x-portone-description: 결제건의 주문자 전화번호
      buyer_addr:
        description: 주문자 주소
        type: string
        maxLength: '128'
        x-portone-name: 주문자 주소
        x-portone-description: 결제건의 주문자 주소
      buyer_postcode:
        description: 주문자 우편번호
        type: string
        maxLength: '8'
        x-portone-name: 주문자 우편번호
        x-portone-description: 결제건의 주문자 우편번호
      custom_data:
        description: 고객사에서 전달한 custom data <br> JSON string으로 전달
        type: string
        x-portone-name: 추가정보
        x-portone-description: 결제 요청시 고객사에서 전달한 추가정보 (JSON string으로 전달)
      user_agent:
        description: 구매자가 결제를 시작한 단말기의 UserAgent 문자열
        type: string
        x-portone-name: 단말기의 UserAgent 문자열
        x-portone-description: 구매자가 결제시 사용한 단말기의 UserAgent 문자열
      status:
        description: |-
          결제상태
               <ul><li>ready:미결제
               </li><li>paid:결제완료
               </li><li> cancelled:결제취소
               </li><li> failed:결제실패</li></ul>
        type: string
        x-portone-name: 결제상태
        x-portone-description: |-

          - ready : 미결제
          - paid : 결제완료
          - cancelled : 결제취소
          - failed : 결제실패
      started_at:
        description: 결제시작시점 UNIX timestamp
        type: integer
        x-portone-name: 요청 시각
        x-portone-description: 결제건의 결제요청 시각 UNIX timestamp
      paid_at:
        description: 결제완료시점 UNIX timestamp <br> 결제완료가 아닐 경우 0
        type: integer
        x-portone-name: 결제 시각
        x-portone-summary: |
          <p>결제건의 결제완료 시각 UNIX timestamp</p>
        x-portone-description: |-
          결제완료시점 UNIX timestamp

          결제완료가 아닐 경우 0
      failed_at:
        description: 결제실패시점 UNIX timestamp <br> 결제실패가 아닐 경우 0
        type: integer
        x-portone-name: 실패시각
        x-portone-summary: |
          <p>결제건의 결제실패시각 UNIX timestamp</p>
        x-portone-description: |-
          결제실패시점 UNIX timestamp

          결제실패가 아닐 경우 0
      cancelled_at:
        description: 결제취소시점 UNIX timestamp <br> 결제취소가 아닐 경우 0
        type: integer
        x-portone-name: 취소시각
        x-portone-summary: |
          <p>결제건의 결제취소시각 UNIX timestamp</p>
        x-portone-description: |-
          결제취소시점 UNIX timestamp

          결제취소가 아닐 경우 0
      fail_reason:
        description: 결제실패 사유
        type: string
        x-portone-name: 결제실패 사유
        x-portone-summary: |
          <p>결제건의 결제실패 사유</p>
        x-portone-description: 결제상태가 결제실패(failed)가 아닐 경우 null로 표시됩니다.
      cancel_reason:
        description: 결제취소 사유
        type: string
        x-portone-name: 결제취소 사유
        x-portone-summary: |
          <p>결제건의 결제취소 사유</p>
        x-portone-description: 결제상태가 결제취소(cancelled)가 아닐 경우 null로 표시됩니다.
      receipt_url:
        description: 매출전표 확인 URL <br> PG사 또는 결제 수단에 따라 매출전표가 없을 수 있습니다.
        type: string
        x-portone-name: 매출전표 URL
        x-portone-description: PG사 또는 결제 수단에 따라 매출전표가 없을 수 있습니다.
        x-portone-per-pg:
          tosspayments:
            description: |
              <p>테스트 결제건, 간편결제 중 카드 외 결제건은 매출 전표 확인이 불가능합니다.</p>
          ksnet:
            description: |
              <p>매출 전표 확인 시 자동으로 인쇄 기능이 호출됩니다. 오동작이 아닌 KSNET의 의도된 기능입니다.</p>
              <p>카드, 간편결제를 외 결제 수단 에서는 매출전표를 제공하지 않습니다.</p>
          settle_acc:
            description: |
              <p>내통장 결제는 매출전표를 제공하지 않습니다.</p>
      cancel_history:
        description: 취소/부분취소 내역
        type: array
        items:
          $ref: '#/definitions/PaymentCancelAnnotation'
        x-portone-name: 취소 내역
        x-portone-description: 결제건의 취소/부분취소 내역
      deposit_history:
        description: 고정식 무제한 가상계좌 입금 내역
        type: array
        items:
          $ref: '#/definitions/VbankDepositAnnotation'
        x-portone-name: 고정식 무제한 가상계좌 입금 내역
        x-portone-description: 고정식 무제한 가상계좌 입금 내역
      cancel_receipt_urls:
        description: >-
          (Deprecated : cancel_history 사용 권장) 취소/부분취소 시 생성되는 취소 매출전표 확인 URL.
          부분취소 횟수만큼 매출전표가 별도로 생성됨
        type: array
        items:
          type: string
      cash_receipt_issued:
        description: 현금영수증 자동발급 여부
        type: boolean
        x-portone-name: 현금영수증 발급 여부
        x-portone-description: 결제건의 현금영수증 발급 여부
      customer_uid:
        description: 해당 결제처리에 사용된 customer_uid
        type: string
        x-portone-name: 구매자의 결제 수단 식별 고유번호
        x-portone-description: 결제건에 사용된 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
      customer_uid_usage:
        description: |-
          customer_uid가 결제처리에 사용된 상세 용도
               <ul><li>null:일반결제
               </li><li> issue:빌링키 발급
               </li><li> payment:결제
               </li><li> payment.scheduled:예약결제</li></ul>
        type: string
        x-portone-name: 구매자의 결제 수단 식별 고유번호 사용 구분코드
        x-portone-description: |-
          customer_uid가 결제처리에 사용된 상세 용도
          - null : 일반결제
          - issue : 빌링키 발급
          - payment : 결제
          - payment.scheduled : 예약결제
      promotion:
        description: 프로모션 아이디와 할인된 프로모션 비용을 나타냅니다.
        properties:
          id:
            description: >-
              `promotion-id-`로 시작하며, 프로모션 아이디에 설정된 할인 내용을 적용하여 결제합니다. 비인증 결제 경우
              빌링키 발급시 저장된 마스킹된 카드번호를 통해 프로모션 적용 여부가 결정됩니다.
            type: string
            example: promotion-id-66025395-5b2c-4dcc-bc11-c883398a28fb
          discount:
            description: 주문(결제)금액에서 차감된 할인 금액을 나타냅니다.
            type: number
            example: 1000
        type: object
        x-portone-name: 프로모션 정보
        x-portone-description: 프로모션 아이디와 할인된 프로모션 비용을 나타냅니다.
  PaymentBalanceAnnotation:
    required:
      - tax_free
      - supply
      - vat
      - service
    properties:
      tax_free:
        description: 면세 공급가액 (환불시 마이너스 차감된 최종 금액 반환)
        type: number
        x-portone-name: 면세 공급가액
        x-portone-description: 면세 공급가액으로 환불시 마이너스 차감된 최종 금액을 반환합니다.
      supply:
        description: 과세 공급가액 (환불시 마이너스 차감된 최종 금액 반환)
        type: number
        x-portone-name: 과세 공급가액
        x-portone-description: 과세 공급가액으로 환불시 마이너스 차감된 최종 금액을 반환합니다.
      vat:
        description: 부가세액 (환불시 마이너스 차감된 최종 금액 반환)
        type: number
        x-portone-name: 부가세액
        x-portone-description: 부가세액으로 환불시 마이너스 차감된 최종 금액을 반환합니다.
      service:
        description: 봉사료 (환불시 마이너스 차감된 최종 금액 반환)
        type: number
        x-portone-name: 봉사료
        x-portone-description: 봉사료로 환불시 마이너스 차감된 최종 금액을 반환합니다.
  PaymentBalanceHistoriesAnnotation:
    required:
      - cash_receipt
      - primary
      - secondary
      - discount
    properties:
      cash_receipt:
        description: 현금영수증 발급된 금액 상세
        x-portone-name: 현금영수증 발급된 상세 금액
        x-portone-description: 결제건의 현금영수증이 발급된 경우 상세 금액을 반환합니다.
        $ref: '#/definitions/PaymentBalanceAnnotation'
      primary:
        description: '1차 결제수단(신용카드, 계좌이체, 가상계좌, 휴대폰소액결제) 금액 상세'
        x-portone-name: 1차 결제수단
        x-portone-description: '결제건의 1차 결제수단(신용카드, 계좌이체, 가상계좌, 휴대폰소액결제) 상세 금액을 반환합니다.'
        $ref: '#/definitions/PaymentBalanceAnnotation'
      secondary:
        description: '2차 결제수단(PG사포인트, 카드사포인트) 금액 상세'
        x-portone-name: 2차 결제수단
        x-portone-description: '결제건의 2차 결제수단(PG사포인트, 카드사포인트) 상세 금액을 반환합니다.'
        $ref: '#/definitions/PaymentBalanceAnnotation'
      discount:
        description: PG사/카드사 자체 할인 금액 상세
        x-portone-name: 할인 금액 상세
        x-portone-description: 결제건의 PG사/카드사 자체 상세 할인 금액을 반환합니다.
        $ref: '#/definitions/PaymentBalanceAnnotation'
      created:
        description: Balance정보가 등록된 시각 UNIX timestamp
        type: integer
        x-portone-name: 등록시각
        x-portone-description: 결제건의 Balance정보가 등록된 시각 UNIX timestamp
  PaymentBalanceResponseAnnotation:
    required:
      - amount
      - cash_receipt
      - primary
      - secondary
      - discount
    properties:
      amount:
        description: 최초 총 결제금액
        type: number
        x-portone-name: 결제금액
        x-portone-description: 결제건의 총 결제금액
      cash_receipt:
        description: 현금영수증 발급된 금액 상세
        x-portone-name: 현금영수증 발급된 상세 금액
        x-portone-description: 결제건의 현금영수증이 발급된 경우 상세 금액을 반환합니다.
        $ref: '#/definitions/PaymentBalanceAnnotation'
      primary:
        description: '1차 결제수단(신용카드, 계좌이체, 가상계좌, 휴대폰소액결제) 금액 상세'
        x-portone-name: 1차 결제수단
        x-portone-description: '결제건의 1차 결제수단(신용카드, 계좌이체, 가상계좌, 휴대폰소액결제) 상세 금액을 반환합니다.'
        $ref: '#/definitions/PaymentBalanceAnnotation'
      secondary:
        description: '2차 결제수단(PG사포인트, 카드사포인트) 금액 상세'
        x-portone-name: 2차 결제수단
        x-portone-description: '결제건의 2차 결제수단(PG사포인트, 카드사포인트) 상세 금액을 반환합니다.'
        $ref: '#/definitions/PaymentBalanceAnnotation'
      discount:
        description: PG사/카드사 자체 할인 금액 상세
        x-portone-name: 할인 금액 상세
        x-portone-description: 결제건의 PG사/카드사 자체 상세 할인 금액을 반환합니다.
        $ref: '#/definitions/PaymentBalanceAnnotation'
      histories:
        description: PaymentBalance 이력
        type: array
        items:
          $ref: '#/definitions/PaymentBalanceHistoriesAnnotation'
        x-portone-name: PaymentBalance이력
        x-portone-description: 결제건의 Balance 이력을 반환합니다.
  PagedPaymentAnnotation:
    required:
      - total
      - previous
      - next
    properties:
      total:
        description: 검색한 결제 상태에 대한 전체 건수
        type: integer
        x-portone-name: 전체 건수
        x-portone-description: 조회한 결제 상태에 대한 전체 건수
      previous:
        description: 이전 page숫자. 이전 페이지가 없으면 0
        type: integer
        x-portone-name: 이전 page숫자
        x-portone-description: 이전 page숫자로 이전 페이지가 없는 경우 0을 반환합니다.
      next:
        description: 다음 page숫자. 다음 페이지가 없으면 0
        type: integer
        x-portone-name: 다음 page숫자
        x-portone-description: 다음 page숫자로 다음 페이지가 없는 경우 0을 반환합니다.
      list:
        description: 결제 상세정보 배열(최대 20개). 바로 아래 Payment structure를 확인하세요.
        type: array
        items:
          $ref: '#/definitions/PaymentAnnotation'
        x-portone-name: 결제 상세정보 배열
        x-portone-description: 결제 상세정보 배열로 최대 20개를 반환합니다. 바로 아래 Payment structure를 확인해주세요.
  PaymentResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 결제 상세정보. 바로 아래 Payment structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/PaymentAnnotation'
  PaymentBalanceResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 결제 상세정보. 바로 아래 Payment structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/PaymentBalanceResponseAnnotation'
  PaymentListResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 결제 상세정보. 바로 아래 Payment structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/PagedPaymentAnnotation'
  MultiplePaymentsResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 결제 상세정보. 바로 아래 Payment structure를 확인하세요
        properties:
          response:
            type: array
            items:
              $ref: '#/definitions/PaymentAnnotation'
  PaymentCancelAnnotation:
    required:
      - pg_tid
      - amount
      - reason
      - cancelled_at
      - cancellation_id
    properties:
      pg_tid:
        description: PG사 승인취소번호
        type: string
        x-portone-name: PG사 승인취소번호
        x-portone-description: 결제건의 PG사 승인취소번호
      amount:
        description: 취소 금액
        type: number
        x-portone-name: 취소 금액
        x-portone-description: 결제건의 취소 금액
      cancelled_at:
        description: 결제취소된 시각 UNIX timestamp
        type: integer
        x-portone-name: 취소 시각
        x-portone-description: 결제건의 결제취소된 시각 UNIX timestamp
      reason:
        description: 결제취소 사유
        type: string
        x-portone-name: 취소 사유
        x-portone-description: 결제건의 결제취소 사유
      cancellation_id:
        description: 결제건의 취소 아이디
        type: string
        x-portone-name: 결제취소 아이디
        x-portone-description: 결제건의 취소 아이디
      receipt_url:
        description: '취소에 대한 매출전표 확인 URL <br>PG사, 결제 수단에 따라 제공되지 않는 경우도 있음'
        type: string
        x-portone-name: 취소 매출전표 URL
        x-portone-description: PG사 또는 결제 수단에 따라 매출전표가 없을 수 있습니다.
  PaymentPrepareAnnotation:
    required:
      - total
      - previous
      - next
    properties:
      merchant_uid:
        description: 고객사 주문번호
        type: string
        x-portone-name: 고객사 주문번호
        x-portone-description: 사전 등록한 고객사의 주문번호
      amount:
        description: 결제 예정 금액
        type: number
        x-portone-name: 결제 예정 금액
        x-portone-description: 사전 등록한 결제 예정 금액
      currency:
        description: 결제 예정 통화
        type: string
        x-portone-name: 결제 예정 통화
        x-portone-description: 사전 등록한 결제 예정 통화
  PaymentPrepareResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 사전에 등록된 결제 예정 정보. 바로 아래 PaymentPrepare structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/PaymentPrepareAnnotation'
  PaymentwallDeliveryAnnotation:
    properties:
      code:
        description: '0이면 정상적인 조회, 0아닌 값이면 message를 확인해봐야 합니다'
        type: integer
        x-portone-name: 응답코드
        x-portone-description: '0이면 정상적인 조회, 0아닌 값이면 message를 확인해봐야 합니다'
      message:
        description: 'code값이 0이 아닐 때, ''존재하지 않는 결제정보입니다''와 같은 오류 메세지를 포함합니다'
        type: string
        x-portone-name: 응답메세지
        x-portone-description: 'code 값이 0이 아닐 때, ‘존재하지 않는 결제정보입니다’와 같은 오류 메세지를 포함합니다'
      response:
        description: '에러 메시지를 포함하거나, 성공시 success: 1 메시지를 포함합니다'
        x-portone-name: 응답
        x-portone-description: '에러 메시지를 포함하거나, 성공시 **success: 1** 메시지를 포함합니다'
        $ref: '#/definitions/PaymentwallDeliveryDetailAnnotation'
  PaymentwallDeliveryDetailAnnotation:
    properties:
      error_code:
        description: '이 값이 없으면 정상적인 경우, 없으면 notices를 확인해봐야 합니다'
        type: integer
        x-portone-name: 에러코드
        x-portone-description: '이 값이 없으면 정상적인 경우, 없으면 notices를 확인해봐야 합니다'
      error:
        description: 에러 메시지
        type: string
        x-portone-name: 에러메세지
        x-portone-description: 에러코드에 대응하는 오류메세지를 반환합니다.
      notices:
        description: 자세한 에러 메시지
        type: array
        items:
          type: string
        x-portone-name: 자세한 에러메세지
        x-portone-description: '`error_code` 값이 없는 경우 확인이 필요한 상세 에러메세지'
  Discount:
    required:
      - amount
      - percent
      - max_discount
      - min_amount
    properties:
      amount:
        description: 정액 할인 금액
        type: string
      percent:
        description: 정율 할인율
        type: string
      max_discount:
        description: 최대 할인 금액
        type: string
      min_amount:
        description: 최소 결제 금액
        type: string
  CurrentPromotionDetailAnnotation:
    required:
      - issuer
      - amount
      - discount
      - start
      - end
      - promotion_id
    properties:
      issuer:
        description: 카드사 고유번호
        type: string
      amount:
        description: 할인된 금액
        type: string
      discount:
        description: 할인정보
        $ref: '#/definitions/Discount'
      start:
        description: 시작일시
        type: string
      end:
        description: 종료일시
        type: string
      promotion_id:
        description: 프로모션 아이디
        type: string
  PromotionInfoDetailAnnotation:
    required:
      - promotion_id
      - user_code
      - issuer
      - total_discount_amount
      - hard_cap_rate
      - cancel_rate
      - discount
      - limit_discount
      - description
      - start
      - end
      - status
      - exhausted_at
      - min_amount
    properties:
      promotion_id:
        description: 프로모션 아이디
        type: string
      user_code:
        description: 고객사 식별코드
        type: string
      issuer:
        description: 카드사 고유번호
        type: string
      total_discount_amount:
        description: 총 예산(원)
        type: string
      hard_cap_rate:
        description: 초과 허용(%/원)
        type: string
      cancel_rate:
        description: 환불 예상(%/원)
        type: string
      discount:
        description: 할인금액(%/원)
        type: string
      limit_discount:
        description: 최대 할인금액(원)
        type: string
      description:
        description: 설명(메모)
        type: string
      start:
        description: 시작일시
        type: integer
      end:
        description: 종료일시(예정)
        type: integer
      status:
        description: '프로모션 상태(1: 진행예정, 2: 진행중, 3: 진행완료)'
        type: integer
      exhausted_at:
        description: 종료일시(실제)
        type: integer
      min_amount:
        description: 최소 결제금액(원)
        type: string
  CurrentPromotionsAnnotation:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 가용 프로모션 및 할인 정보
        properties:
          response:
            type: array
            items:
              $ref: '#/definitions/CurrentPromotionDetailAnnotation'
  PromotionInfosAnnotation:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 프로모션 정보
        properties:
          response:
            type: array
            items:
              $ref: '#/definitions/PromotionInfoDetailAnnotation'
  ReceiptAnnotation:
    required:
      - imp_uid
      - apply_num
      - type
      - amount
      - vat
      - applied_at
    properties:
      imp_uid:
        description: 포트원 거래고유번호
        type: string
        x-portone-name: 포트원 거래고유번호
        x-portone-description: 결제건의 포트원 거래고유번호
      receipt_tid:
        description: 현금영수증 PG사 발행고유번호
        type: string
        x-portone-name: PG사 현금영수증 발행 고유번호
        x-portone-description: 결제건에 대해 현금영수증 발행시 PG사의 발행고유번호
      apply_num:
        description: 현금영수증 국세청 발행번호
        type: string
        x-portone-name: 국세청 발행번호
        x-portone-description: 결제건에 대해 현금영수증 발행시 국세청 발행번호
      type:
        description: |-
          현금영수증 발행대상 타입
               <ul><li>개인 : `person`
               </li><li>사업자 : `company`</li></ul>
        type: string
        x-portone-name: 타입(대상)
        x-portone-description: |-
          현금영수증 발행대상 타입
          - 개인 : `person`
          - 사업자 : `company`
      amount:
        description: 현금영수증 발행금액
        type: integer
        x-portone-name: 발행 금액
        x-portone-description: 현금영수증 발행 금액
      vat:
        description: 현금영수증 발행금액 중 부가세금액
        type: integer
        x-portone-name: 부가세액
        x-portone-description: 현금영수증 발행금액 중 부가세액
      receipt_url:
        description: 발행된 현금영수증 URL
        type: string
        x-portone-name: 현금영수증 URL
        x-portone-description: 발행된 현금영수증을 확인할 수 있는 URL
      applied_at:
        description: 현금영수증 발행시각 UNIX TIMESTAMP
        type: integer
        x-portone-name: 발행시각
        x-portone-description: 현금영수증 발행시각 UNIX timestamp
      cancelled_at:
        description: 현금영수증 발행취소시각 UNIX TIMESTAMP
        type: integer
        x-portone-name: 발행취소시각
        x-portone-description: 현금영수증 발행취소시각 UNIX timestamp
  ReceiptResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 현금영수증 발행 상세정보. 바로 아래 Receipt structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/ReceiptAnnotation'
  ExternalReceiptAnnotation:
    required:
      - merchant_uid
      - apply_num
      - type
      - amount
      - vat
      - applied_at
    properties:
      merchant_uid:
        description: 현금영수증 고객사 주문번호
        type: string
        x-portone-name: 고객사 주문번호
        x-portone-description: 현금영수증을 발행한 고객사의 주문번호
      receipt_tid:
        description: 현금영수증 PG사 발행고유번호
        type: string
        x-portone-name: PG사 현금영수증 발행 고유번호
        x-portone-description: 결제건에 대해 현금영수증 발행시 PG사의 발행고유번호
      apply_num:
        description: 현금영수증 국세청 발행번호
        type: string
        x-portone-name: 국세청 발행번호
        x-portone-description: 결제건에 대해 현금영수증 발행시 국세청 발행번호
      type:
        description: |-
          현금영수증 발행대상 타입
               <ul><li>개인 : `person`
               </li><li>사업자 : `company`</li></ul>
        type: string
        x-portone-name: 타입(대상)
        x-portone-description: |-
          현금영수증 발행대상 타입
          - 개인 : `person`
          - 사업자 : `company`
      amount:
        description: 현금영수증 발행금액
        type: integer
        x-portone-name: 발행 금액
        x-portone-description: 현금영수증 발행 금액
      vat:
        description: 현금영수증 발행금액 중 부가세금액
        type: integer
        x-portone-name: 부가세액
        x-portone-description: 현금영수증 발행금액 중 부가세액
      receipt_url:
        description: 발행된 현금영수증 URL
        type: string
        x-portone-name: 현금영수증 URL
        x-portone-description: 발행된 현금영수증을 확인할 수 있는 URL
      applied_at:
        description: 현금영수증 발행시각 UNIX TIMESTAMP
        type: integer
        x-portone-name: 발행시각
        x-portone-description: 현금영수증 발행시각 UNIX timestamp
      cancelled_at:
        description: 현금영수증 발행취소시각 UNIX TIMESTAMP
        type: integer
        x-portone-name: 발행취소시각
        x-portone-description: 현금영수증 발행취소시각 UNIX timestamp
  ExternalReceiptResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 현금영수증 발행 상세정보. 바로 아래 Receipt structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/ExternalReceiptAnnotation'
  ResponseAnnotation:
    properties:
      code:
        description: '0이면 정상적인 조회, 0아닌 값이면 message를 확인해봐야 합니다'
        type: integer
        x-portone-name: 응답코드
        x-portone-description: '0이면 정상적인 조회, 0아닌 값이면 message를 확인해봐야 합니다'
      message:
        description: 'code값이 0이 아닐 때, ''존재하지 않는 결제정보입니다''와 같은 오류 메세지를 포함합니다'
        type: string
        x-portone-name: 응답메세지
        x-portone-description: 'code값이 0이 아닐 때, ''존재하지 않는 결제정보입니다''와 같은 오류 메세지를 포함합니다'
  ScheduleAnnotation:
    required:
      - merchant_uid
      - schedule_at
      - amount
      - currency
      - name
    properties:
      merchant_uid:
        description: 고객사 주문번호
        type: string
        x-portone-name: 고객사의 주문번호
        x-portone-description: 결제 예약건의 고객사 주문번호
        x-portone-per-pg:
          smartro_v2:
            description: >
              <p>스마트로는 주문 번호(merchant_uid)에 <strong>특수문자를 허용하고 있지
              않습니다.</strong></p>

              <p>따라서 결제창에서 일반결제를 할때와 발급 된 빌링키로 API를 통해 결제를 하는 경우 숫자, 문자(알파벳 소문자와
              대문자) 또는 그 조합으로 이루어진 주문 번호를 사용해주세요.

              또한, 주문번호(merchant_uid)가 <strong>최대 40자</strong>를 넘을 수 없습니다. 40자가
              넘을 경우 40자까지 잘려서 저장되기 때문에 유의 바랍니다.</p>
      schedule_at:
        description: 결제요청 예약시각 UNIX timestamp in seconds
        type: integer
        default: 0
        x-portone-name: 예약시각
        x-portone-description: 결제요청 예약시각 UNIX timestamp
      currency:
        description: '통화 e.g.) KRW, USD, VND, ... Default: KRW '
        type: string
        default: KRW
        x-portone-name: 결제 통화 코드
        x-portone-description: '통화 e.g.) KRW, USD, VND, ... Default: KRW'
        x-portone-per-pg:
          ksnet:
            description: |
              <p>USD 결제는 순수 해외카드로만 결제 가능합니다.</p>
          paypal_v2:
            required: true
            description: |
              <p>KRW은 불가능합니다.</p>
      amount:
        description: 결제금액
        type: number
        x-portone-name: 결제금액
        x-portone-description: 결제 예약을 요청한 결제금액
      tax_free:
        description: >-
          amount 중 면세공급가액.<br/>기본값은 0이므로(amount 모두 과세대상이므로) amount의 1/11 이 부가세로
          처리됩니다.
        type: number
        x-portone-name: 면세공급가액
        x-portone-description: 결제 예약을 요청한 결제금액 중 면세공급가액
        x-portone-per-pg:
          ksnet:
            description: >
              <p>면세 설정 상점아이디에서 면세처리를 위해 결제 금액과 동일한 면세 금액을 반드시 입력해야 합니다. 그렇지 않은
              경우 매출전표에 전액 면세가 아닌 것으로 표시되고 실제 처리 내역이 다를 수 있습니다.</p>

              <p>과세 설정 상점아이디에서 면세 금액을 전달하지 않아야 합니다. 면세 금액을 전달하는 경우 매출전표에 면세 처리된
              것으로 표시되지만 실제 처리 내역과 다를 수 있습니다.</p>
          welcome:
            description: |
              <p><code>부가세업체정함</code> 설정 고객사에 한해 사용 가능합니다.</p>
      vat_amount:
        description: 'amount 중 부가세 금액(기본값 : null, 현재 나이스페이먼츠, 이니시스, (신) 나이스페이, 웰컴페이먼츠 지원)'
        type: number
        x-portone-name: 부가세
        x-portone-description: |-
          amount 중 부가세 금액
          부가세를 지정할 수 있으며, tax_free=0, vat_amount=0으로 영세율로 결제 가능합니다.(기본값: null)
          ##### 지원되는 PG사
          - 나이스페이먼츠
          - 이니시스
          - (신) 나이스페이
          - 웰컴페이먼츠
        x-portone-supported-pgs:
          - nice
          - html5_inicis
          - nice_v2
          - welcome
        x-portone-per-pg:
          welcome:
            description: >
              <p><code>부가세업체정함</code> 설정 고객사에 한해 사용 가능하며 전체금액의 10% 이하로 설정해야 합니다.
              vat_amount가 <span>총 상품가격의 10%를 초과할 경우는 결제가 거절됩니다.</span></p>
      name:
        description: 주문명칭
        type: string
        maxLength: 40
        x-portone-name: 제품명
        x-portone-description: 결제건의 제품명
      buyer_name:
        description: '[스마트로 - 신모듈, 웰컴페이먼츠 필수 파라미터] 주문자명'
        type: string
        maxLength: 16
        x-portone-name: 주문자명
        x-portone-description: 결제건의 문자명
        x-portone-per-pg:
          smartro_v2:
            required: true
          ksnet:
            required: true
          welcome:
            required: true
          paymentwall:
            description: >
              <p>first name, last name 한칸 띄어쓰기로 구분되어 유입되어야 합니다. 예시) Michael
              Jackson</p>
      buyer_email:
        description: 주문자 Email주소
        type: string
        maxLength: 64
        x-portone-name: 주문자 Email주소
        x-portone-description: 결제건의 주문자 Email주소
        x-portone-per-pg:
          smartro_v2:
            required: true
          paymentwall:
            required: true
            description: |
              <p>빌링키 발급시 기재한 주소와 발급된 빌링키로 결제시 기입한 이메일주소가 일치해야 합니다.</p>
      buyer_tel:
        description: 주문자 전화번호
        type: string
        maxLength: 16
        x-portone-name: 주문자 전화번호
        x-portone-description: 결제건의 주문자 전화번호
        x-portone-per-pg:
          smartro_v2:
            required: true
      buyer_addr:
        description: 주문자 주소
        type: string
        maxLength: 128
        x-portone-name: 주문자 주소
        x-portone-description: 결제건의 주문자 주소
      buyer_postcode:
        description: 주문자 우편번호
        type: string
        maxLength: 8
        x-portone-name: 주문자 우편번호
        x-portone-description: 결제건의 주문자 우편번호
      custom_data:
        description: 예약된 결제가 수행될 때 Payment.custom_data로 사용할 값.
        type: string
        x-portone-name: 추가정보
        x-portone-description: 예약된 결제가 수행될 때 함께 저장할 추가정보
      notice_url:
        description: >-
          예약된 결제가 수행된 후 웹훅(Notification)이 발송될 URL을 직접 지정. (지정되지 않으면 관리자페이지의
          Notification URL로 발송됨)
        type: string
        x-portone-name: Notification URL(Webhook URL)
        x-portone-summary: |
          <p>예약된 결제가 수행된 후 웹훅(Notification)이 발송될 URL을 직접 지정</p>
        x-portone-description: >-
          예약된 결제가 수행된 후 웹훅(Notification)이 발송될 URL을 직접 지정. (지정되지 않으면 관리자페이지의
          Notification URL로 발송됨)
      product_type:
        description: '판매 상품에 대한 구분 값 (real : 실물상품 digital : 디지털 컨텐츠)'
        type: string
        x-portone-name: 주문 상품구분
        x-portone-description: 판매 상품에 대한 구분 값
        x-portone-supported-pgs:
          - ksnet
          - paypal_v2
        x-portone-per-pg:
          ksnet:
            required: true
      cash_receipt_type:
        description: >-
          현금영수증 발행대상 구분 값 (person, company, anonymous) <br><br><h5>지원되는
          PG사</h5><ul><li>(신) 토스페이</li></ul>(신) 토스페이 경우 anonymous 전달 시 현금영수증 미발행
          그 외 경우 현금영수증 자동 발행으로 동작합니다.
        type: string
        x-portone-name: 현금영수증 발행대상
        x-portone-description: >-
          현금영수증 발행대상 구분 값 (person, company, anonymous)


          지원되는 PG사

          - (신) 토스페이 ((신) 토스페이 경우 anonymous 전달 시 현금영수증 미발행 그 외 경우 현금영수증 자동 발행으로
          동작합니다.)
        x-portone-supported-pgs:
          - tosspay_v2
        x-portone-per-pg:
          tosspay_v2:
            description: |
              <p>anonymous를 전달한 경우 현금영수증 미발행, 그 외 경우 현금영수증 자동발행으로 동작합니다.</p>
      card_quota:
        description: '카드할부개월수. 2 이상의 integer 할부개월수 적용(결제금액 50,000원 이상 한정, default = 0(일시불))'
        type: number
        x-portone-name: 카드 할부 개월 수
        x-portone-description: 결제건의 카드 할부 개월 수로 기본값은 **0(일시불)**입니다.
      interest_free_by_merchant:
        description: >-
          카드할부처리시, 할부이자가 발생하는 경우(카드사 무이자 프로모션 제외) 부과되는 할부이자를 고객사가 지불하고자 PG사와 계약된
          경우 (default : false)
        type: boolean
        example: false
        x-portone-name: 상점분담 무이자 할부여부
        x-portone-summary: |
          <p>카드 할부이자를 고객사에서 부담하는 지 여부</p>
        x-portone-description: >-
          카드할부 처리할 때, 할부이자가 발생하는 경우(카드사 무이자 프로모션 제외) 부과되는 할부이자를 고객대신 고객사가 지불하고자
          PG사와 계약한 경우 (Default : false)
        x-portone-supported-pgs:
          - nice
          - ksnet
          - nice_v2
      use_card_point:
        description: >-
          승인요청시 카드사 포인트 차감하며 결제승인처리할지 flag. PG사 영업담당자와 계약 당시 사전 협의 필요(default :
          false)
        type: boolean
        example: false
        x-portone-name: 카드포인트 사용여부
        x-portone-summary: |
          <p>승인요청시 카드사 포인트 차감하며 결제승인처리할지 여부</p>
        x-portone-description: PG사 영업담당자와 계약 당시 사전 협의가 필요하며 기본값은 false입니다.
        x-portone-supported-pgs:
          - nice
          - smartro_v2
          - nice_v2
      product_count:
        description: '결제 상품의 개수 (Default : 1)'
        type: integer
        x-portone-name: 결제 상품의 개수
        x-portone-description: 결제 상품의 개수로 기본값은 1입니다.
      browser_ip:
        description: 구매자 브라우져의 IP
        type: string
        x-portone-name: 구매자 브라우져의 IP
        x-portone-description: 구매자 브라우져의 IP
        x-portone-per-pg:
          paymentwall:
            description: |
              <p>빌링키 결제 요청 시 전달</p>
      extra:
        description: 결제 예약 요청시 필요한 추가 정보
        properties:
          naverUseCfm:
            description: 네이버페이 반복결제 계약 시 이용완료일 필수로 설정된 고객사에 한함
            type: string
            x-portone-name: 이용완료일
            x-portone-description: 이용완료일 `YYYYMMDD`
            x-portone-supported-pgs:
              - naverpay
        type: object
        x-portone-name: 추가 파라미터
        x-portone-description: 결제 예약 요청시 필요한 추가 정보
      bypass:
        description: >-
          JSON string 형식의 PG사별로 특화된 파라미터. <br>전달 한 값은 가공 없이 그대로 PG사로 전달 됩니다.
          <br>각 PG사별 스펙은 PG사별 연동 문서 참고해주세요
        type: string
        x-portone-name: bypass 데이터
        x-portone-summary: |
          <p>JSON string 형식의 PG사별로 특화된 파라미터</p>
        x-portone-description: 전달 한 값은 가공 없이 그대로 PG사로 전달 됩니다. 각 PG사별 스펙은 PG사별 연동 문서 참고해주세요
      promotion_id:
        description: >-
          `promotion-id-`로 시작하며, 프로모션 아이디에 설정된 할인 내용을 적용하여 결제합니다. 비인증 결제 경우 빌링키
          발급시 저장된 마스킹된 카드번호를 통해 프로모션 적용 여부가 결정됩니다.
        type: string
        x-portone-name: 프로모션 아이디
        x-portone-description: >-
          `promotion-id-`로 시작하며, 프로모션 아이디에 설정된 할인 내용을 적용하여 결제합니다. 비인증 결제 경우 빌링키
          발급시 저장된 마스킹된 카드번호를 통해 프로모션 적용 여부가 결정됩니다.
  ScheduleResultAnnotation:
    properties:
      customer_uid:
        description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
        type: string
        x-portone-name: 구매자의 결제 수단 식별 고유번호
        x-portone-description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
      merchant_uid:
        description: 고객사 주문번호
        type: string
        maxLength: 40
        x-portone-name: 고객사 주문번호
        x-portone-description: 예약 결제건의 고객사 주문번호
      imp_uid:
        description: >-
          포트원 거래고유번호<br> 예약된 결제가 실행 전 철회되거나 아직 실행 전 예약 상태에 있으면 imp_uid 는 null
          입니다.
        type: string
        maxLength: 32
        x-portone-name: 포트원 거래고유번호
        x-portone-summary: |
          <p>예약 결제건의 포트원 거래고유번호</p>
        x-portone-description: 예약된 결제가 실행 전 철회되거나 아직 실행 전 예약 상태에 있으면 imp_uid는 null입니다.
      pg_provider:
        description: PG사 구분코드<br> 슈퍼빌링키 예약결제 실행 시 라우팅된 결제를 실행한 PG사의 구분코드입니다.
        type: string
        maxLength: 16
        x-portone-name: PG사 구분코드
        x-portone-summary: |
          <p>결제 실행에 사용된 PG사 구분코드</p>
        x-portone-description: 슈퍼빌링키 예약결제 실행 시 라우팅된 결제를 실행한 PG사의 구분코드입니다.
      pg_id:
        description: PG사 상점아이디<br>슈퍼빌링키 예약결제 실행 시 라우팅된 결제를 실행한 PG사의 상점아이디입니다.
        type: string
        maxLength: 64
        x-portone-name: PG사 상점아이디
        x-portone-summary: |
          <p>결제 실행에 사용된 PG사 상점아이디</p>
        x-portone-description: 슈퍼빌링키 예약결제 실행 시 라우팅된 결제를 실행한 PG사의 상점아이디입니다.
      customer_id:
        description: 구매자 ID
        type: string
        x-portone-name: 구매자 ID
        x-portone-description: string 타입의 구매자 식별 고유번호
      schedule_at:
        description: 예약결제 실행 예정 시각 UNIX timestamp in seconds
        type: integer
        default: 0
        x-portone-name: 결제 예정 시각
        x-portone-description: 결제 예약시 요청한 결제 예정 시각 UNIX timestamp
      executed_at:
        description: 예약결제가 실행된 시각 UNIX timestamp
        type: integer
        default: 0
        x-portone-name: 결제 실행 시각
        x-portone-description: 실제 결제가 실행된 시각 UNIX timestamp
      revoked_at:
        description: 예약결제 실행을 철회한 시각 UNIX timestamp
        type: integer
        default: 0
        x-portone-name: 결제 실행 철회 시각
        x-portone-description: 예약 결제 실행을 철회한 시각 UNIX timestamp
      amount:
        description: 결제금액
        type: number
        x-portone-name: 결제금액
        x-portone-description: 결제 예약시 요청한 결제금액
      currency:
        description: '통화 e.g.) KRW, USD, VND, ... Default: KRW '
        type: string
        default: KRW
        x-portone-name: 결제 통화 코드
        x-portone-description: '통화 e.g.) KRW, USD, VND, ... Default: KRW '
      name:
        description: 제품명
        type: string
        maxLength: 40
        x-portone-name: 제품명
        x-portone-description: 예약 결제건의 제품명
      buyer_name:
        description: 주문자명
        type: string
        maxLength: 16
        x-portone-name: 주문자명
        x-portone-description: 예약 결제건의 주문자명
      buyer_email:
        description: 주문자 Email주소
        type: string
        maxLength: 64
        x-portone-name: 주문자 Email주소
        x-portone-description: 예약 결제건의 주문자 Email주소
      buyer_tel:
        description: 주문자 전화번호
        type: string
        maxLength: 16
        x-portone-name: 주문자 전화번호
        x-portone-description: 예약 결제건의 주문자 전화번호
      buyer_addr:
        description: 주문자 주소
        type: string
        maxLength: 128
        x-portone-name: 주문자 주소
        x-portone-description: 예약 결제건의 주문자 주소
      buyer_postcode:
        description: 주문자 우편번호
        type: string
        maxLength: 8
        x-portone-name: 주문자 우편번호
        x-portone-description: 예약 결제건의 주문자 우편번호
      custom_data:
        description: 예약된 결제가 수행될 때 결제정보와 함께 저장할 추가정보
        type: string
        x-portone-name: 추가정보
        x-portone-description: 예약된 결제가 수행될 때 결제정보와 함께 저장할 추가정보
      schedule_status:
        description: |-
          예약상태
               <ul><li>scheduled:예약됨(실행되기 전)
               </li><li>executed:예약된 결제실행완료
               </li><li>revoked:예약철회</li></ul>
        type: string
        x-portone-name: 예약상태
        x-portone-description: |-

          - scheduled : 예약됨(실행되기 전)
          - executed : 예약된 결제실행완료
          - revoked : 예약철회
      payment_status:
        description: |-
          실행된 결제의 승인 상태
               <ul><li> null:아직 예약결제가 실행되지 않음(null 이라는 값의 문자열이 아닌 실제 null 입니다)
               </li><li> paid:예약결제가 결제승인됨
               </li><li>failed:예약결제가 승인실패됨
               </li><li> cancelled:예약결제가 결제승인 후 환불됨</li></ul>
        type: string
        x-portone-name: 결제상태
        x-portone-description: |-
          실행된 결제의 승인 상태
          - null : 아직 예약결제가 실행되지 않음(null 이라는 값의 문자열이 아닌 실제 null 입니다)
          - paid : 예약결제가 결제승인됨
          - failed : 예약결제가 승인실패됨
          - cancelled : 예약결제가 결제승인 후 환불됨
      fail_reason:
        description: '실행된 결제가 승인 실패인 경우, 실패사유'
        type: string
        x-portone-name: 실패사유
        x-portone-description: '예약 결제건이 결제 승인에 실패한 경우, 실패사유'
      promotion_id:
        description: >-
          `promotion-id-`로 시작하며, 프로모션 아이디에 설정된 할인 내용을 적용하여 결제합니다. 비인증 결제 경우 빌링키
          발급시 저장된 마스킹된 카드번호를 통해 프로모션 적용 여부가 결정됩니다.
        type: string
        x-portone-name: 프로모션 아이디
        x-portone-description: >-
          `promotion-id-`로 시작하며, 프로모션 아이디에 설정된 할인 내용을 적용하여 결제합니다. 비인증 결제 경우 빌링키
          발급시 저장된 마스킹된 카드번호를 통해 프로모션 적용 여부가 결정됩니다.
  ScheduleResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 등록된 결제예약 정보. 바로 아래 ScheduleResult structure를 확인하세요
        properties:
          response:
            type: array
            items:
              $ref: '#/definitions/ScheduleResultAnnotation'
  SingleScheduleResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 등록된 결제예약 정보. 바로 아래 ScheduleResult structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/ScheduleResultAnnotation'
  StandardCodeAnnotation:
    required:
      - code
      - name
    properties:
      code:
        description: 기관코드(금융결제원표준코드)
        type: string
        x-portone-name: 기관코드
        x-portone-description: 금융결제표준코드
      name:
        description: 기관명(금융결제원기재명)
        type: string
        x-portone-name: 기관명
        x-portone-description: 금융결제원기재명
  StandardCodeResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 결제기관 정보
        properties:
          response:
            $ref: '#/definitions/StandardCodeAnnotation'
  StandardCodeListResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 결제기관 정보
        properties:
          response:
            type: array
            items:
              $ref: '#/definitions/StandardCodeAnnotation'
  SubscribePaymentExtra:
    properties:
      naverUseCfm:
        description: 이용 완료일
        type: string
        x-portone-name: '이용 완료일(YYYYMMDD), 네이버페이 전용'
        x-portone-description: '이용 완료일(YYYYMMDD), 네이버페이 정기결졔 계약 시 이용완료일을 필수로 설정한 고객사의 경우 필수로 전달해야합니다.'
        x-portone-per-pg:
          naverpay:
            description: >
              <p>이용 완료일(YYYYMMDD), 네이버페이 정기결졔 계약 시 이용완료일을 필수로 설정한 고객사의 경우 필수로
              전달해야합니다.</p>
  SuperBillingKeyAnnotation:
    required:
      - customer_uid
      - channelGroupId
    properties:
      customer_uid:
        description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
        type: string
        maxLength: '80'
        x-portone-name: 구매자의 결제 수단 식별 고유번호
        x-portone-description: 빌링키와 매핑되며 고객사에서 채번하는 구매자의 결제 수단 식별 고유번호
      channelGroupId:
        description: 스마트 라우팅 그룹 내 활성화 된 모든 채널로 빌링키 발급 요청을 합니다.
        type: string
        maxLength: '80'
        x-portone-name: 스마트 라우팅 그룹 ID
        x-portone-description: 스마트 라우팅 그룹 내 활성화 된 모든 채널로 빌링키 발급 요청을 합니다.
      customer_id:
        description: 구매자 ID
        type: string
        x-portone-name: 구매자 ID
        x-portone-description: 구매자 식별 고유 번호
      customer_name:
        description: 고객(카드소지자) 성함
        type: string
        maxLength: '20'
        x-portone-name: 고객 성함
        x-portone-description: 빌링키 발급 한 고객(카드소지자)의 성함
      customer_tel:
        description: 고객(카드소지자) 전화번호
        type: string
        maxLength: '20'
        x-portone-name: 전화번호
        x-portone-description: 빌링키 발급 한 고객(카드소지자)의 전화번호
      customer_email:
        description: 고객(카드소지자) Email 주소
        type: string
        maxLength: '200'
        x-portone-name: Email 주소
        x-portone-description: 빌링키 발급 한 고객(카드소지자)의 Email 주소
      customer_addr:
        description: 고객(카드소지자) 주소
        type: string
        maxLength: '200'
        x-portone-name: 주소
        x-portone-description: 빌링키 발급 한 고객(카드소지자)의 주소
      customer_postcode:
        description: 고객(카드소지자) 우편번호
        type: string
        maxLength: '8'
        x-portone-name: 우편번호
        x-portone-description: 빌링키 발급 한 고객(카드소지자)의 우편번호
      succeededChannels:
        description: 빌링키가 발급된 각 채널의 PG사별 고유 정보를 담은 배열
        type: array
        items:
          $ref: '#/definitions/SucceededChannelAnnotation'
        x-portone-name: 채널별발급정보
        x-portone-description: 빌링키가 발급된 각 채널의 PG사별 고유 정보를 담은 배열
      failedChannels:
        description: 빌링키 발급에 실패한 채널의 정보와 실패 사유를 포함한 배열
        type: array
        items:
          $ref: '#/definitions/FailedChannelAnnotation'
        x-portone-name: 채널별실패정보
        x-portone-description: 빌링키 발급에 실패한 채널의 정보와 실패 사유를 포함한 배열
  SucceededChannelAnnotation:
    required:
      - pg_provider
      - pg_id
      - inserted
      - update
    properties:
      pg_provider:
        description: 빌링키가 등록된 PG사 구분코드
        type: string
        maxLength: '16'
        x-portone-name: PG사 구분코드
        x-portone-description: 빌링키가 등록된 PG사 구분코드
      pg_id:
        description: 빌링키가 등록된 PG사 상점아이디(MID)
        type: string
        maxLength: '80'
        x-portone-name: 상점아이디(MID)
        x-portone-description: 빌링키가 등록된 PG사 상점아이디(MID)
      card_name:
        description: 카드사명
        type: string
        x-portone-name: 카드명
        x-portone-description: 빌링키 발급 한 카드명
      card_code:
        description: |-
          카드사 코드(금융결제원 표준코드번호)
              <a href='https://developers.portone.io/opi/ko/support/code-info/card-code?v=v1'>링크보기</a>
        type: string
        x-portone-name: 카드사 코드
        x-portone-description: >-
          카드사 코드(금융결제원 표준코드번호)


          [링크보기](https://developers.portone.io/opi/ko/support/code-info/card-code?v=v1)
      card_issuer_code:
        description: |-
          카드 발급사 코드(금융결제원 표준코드번호) <br>
              발급사 코드 지원 pg사
              <ul><li>(신) 토스페이먼츠
              </li><li>KSNET
              </li><li>페이팔 RT
              </li><li>(신) 스마트로
              </li><li>(신) 나이스페이먼츠
              </li><li>웰컴페이먼츠
              </li><li>(신) 토스페이
        type: string
        x-portone-name: 카드 발급사 코드
        x-portone-description: |-
          카드 발급사 코드(금융결제원 표준코드번호)

          발급사 코드 지원 pg사
          - (신) 토스페이먼츠
          - KSNET
          - 페이팔 RT
          - (신) 스마트로
          - (신) 나이스페이먼츠
          - 웰컴페이먼츠
          - (신) 토스페이
        x-portone-supported-pgs:
          - tosspayments
          - ksnet
          - paypal_v2
          - smartro_v2
          - nice_v2
          - welcome
          - tosspay_v2
      card_issuer_name:
        description: 카드 발급사명으로 발급사 코드를 지원하는 pg사에 한해 제공됩니다.
        type: string
        x-portone-name: 카드 발급사명
        x-portone-description: |-
          빌링키 발급 한 카드의 발급사명

              발급사 코드를 지원하는 pg사에 한해 제공됩니다.
      card_publisher_code:
        description: |-
          카드 발행사 코드(금융결제원 표준코드번호) <br>
              발행사 코드 지원 pg사
              <ul><li>(신) 토스페이먼츠
              </li><li>KSNET
              </li><li>페이팔 RT
              </li><li>(신) 스마트로
              </li><li>(신) 나이스페이먼츠
              </li><li>웰컴페이먼츠
              </li><li>(신) 토스페이
        type: string
        x-portone-name: 카드 발행사 코드
        x-portone-description: |-
          카드 발행사 코드(금융결제원 표준코드번호)

          발행사 코드 지원 pg사
          - (신) 토스페이먼츠
          - KSNET
          - 페이팔 RT
          - (신) 스마트로
          - (신) 나이스페이먼츠
          - 웰컴페이먼츠
          - (신) 토스페이
        x-portone-supported-pgs:
          - tosspayments
          - ksnet
          - paypal_v2
          - smartro_v2
          - nice_v2
          - welcome
          - tosspay_v2
      card_publisher_name:
        description: 카드 발행사명으로 발행사 코드를 지원하는 pg사에 한해 제공됩니다.
        type: string
        x-portone-name: 카드 발행사명
        x-portone-description: |-
          빌링키 발급 한 카드의 발행사명

              발행사 코드를 지원하는 pg사에 한해 제공됩니다.
      card_number:
        description: 마스킹 카드번호
        type: string
        x-portone-name: 마스킹 카드번호
        x-portone-description: 빌링키 발급 한 카드의 마스킹된 카드번호
      card_type:
        description: |-
          카드유형 <br>
              (주의)해당 정보를 제공하지 않는 일부 PG사의 경우 null 로 응답됨(ex. 이니시스-빌링)
              <ul><li> 0 : 신용카드
              </li><li> 1 : 체크카드 </li></ul>
        type: integer
        x-portone-name: 카드유형
        x-portone-summary: |
          <p>빌링키 발급 한 카드의 유형</p>
        x-portone-description: |-
          (주의)해당 정보를 제공하지 않는 일부 PG사의 경우 null 로 응답됨(ex. 이니시스-빌링)
          - 0 : 신용카드
          - 1 : 체크카드
      inserted:
        description: 빌링키가 등록된 시각 UNIX timestamp
        type: integer
        x-portone-name: 발급 시각
        x-portone-description: 빌링키가 발급된 시각 UNIX timestamp
      updated:
        description: 빌링키가 업데이트된 시각 UNIX timestamp
        type: integer
        x-portone-name: 업데이트 시각
        x-portone-description: 빌링키가 업데이트된 시각 UNIX timestamp
  FailedChannelAnnotation:
    required:
      - type
      - message
      - pg_provider
      - pg_id
    properties:
      type:
        description: |-
          빌링키 발급 실패 유형
              <ul><li>INVALID_REQUEST (요청된 입력 정보가 유효하지 않은 경우)</li>
              <li>PG_PROVIDER (PG사에서 오류를 전달한 경우)</li>
              <li>DB_FAILED(DB CRUD에 실패한 경우)</li></ul>
        type: string
        x-portone-name: 실패 유형
        x-portone-description: |-
          빌링키 발급 실패 유형
          - INVALID_REQUEST (요청된 입력 정보가 유효하지 않은 경우)
          - PG_PROVIDER (PG사에서 오류를 전달한 경우)
          - DB_FAILED(DB CRUD에 실패한 경우)
        x-portone-enum:
          - INVALID_REQUEST
          - PG_PROVIDER
          - DB_FAILED
      message:
        description: 빌링키 발급 실패에 대한 구체적인 실패 메세지
        type: string
        x-portone-name: 실패 메세지
        x-portone-description: 빌링키 발급 실패에 대한 구체적인 실패 메세지
      pg_provider:
        description: 빌링키 발급에 실패한 PG사 구분코드
        type: string
        maxLength: '16'
        x-portone-name: PG사 구분코드
        x-portone-description: 빌링키 발급에 실패한 PG사 구분코드
      pg_id:
        description: 빌링키 발급에 실패한 PG사 상점아이디(MID)
        type: string
        maxLength: '80'
        x-portone-name: 상점아이디(MID)
        x-portone-description: 빌링키 발급에 실패한 PG사 상점아이디(MID)
  SuperBillingKeyResponse:
    description: 슈퍼 빌링키 응답
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - properties:
          response:
            $ref: '#/definitions/SuperBillingKeyAnnotation'
  TierAnnotation:
    required:
      - tier_code
      - tier_name
    properties:
      tier_code:
        description: 하위 상점(Tier) 고유코드(알파벳 대문자 또는 숫자 3자리)
        type: string
        x-portone-name: 티어코드
        x-portone-summary: |
          <p>하위 상점(Tier)의 고유코드</p>
        x-portone-description: 알파벳 대문자 또는 숫자 3자리로 구성됩니다.
      tier_name:
        description: 하위 상점(Tier) 관리명칭
        type: string
        x-portone-name: 티어명
        x-portone-description: 하위 상점(Tier)의 관리명칭
  TierResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 하위 상점(Tier) 정보
        properties:
          response:
            $ref: '#/definitions/TierAnnotation'
  PgSettingAnnotation:
    required:
      - pg_provider
      - pg_id
      - sandbox
      - type
    properties:
      pg_provider:
        description: |-
          PG사 구분코드<br>
               (ex. html5_inicis : 이니시스) 명칭별 PG사 이름은 https://developers.portone.io/docs/ko/tip/pg-2 의 PG 코드값에서 확인 가능.
        type: string
        maxLength: '16'
        x-portone-name: PG사 구분코드
        x-portone-description: 설정된 PG사의 구분코드
      pg_id:
        description: PG사 상점아이디
        type: string
        maxLength: '80'
        x-portone-name: PG사 상점아이디
        x-portone-description: 설정된 PG사의 상점아이디(MID)
      sandbox:
        description: 테스트모드 여부
        type: boolean
        x-portone-name: 테스트모드 여부
        x-portone-description: 설정된 PG사의 테스트모드 여부
      type:
        description: |-
          PG 설정 타입 구분코드
               <ul><li>payment : 인증방식 결제.(관리자 콘솔에서 PG설정(일반결제 및 정기결제) 탭에 해당)
               </li><li>api_payment : API 방식의 결제. (관리자 콘솔에서 PG설정(일반결제 및 키인결제) 탭에 해당)
              </li><li>certification : 본인 인증. (관리자 콘솔에서 본인 인증 서비스 탭에 해당)</li></ul>
        type: string
        x-portone-name: PG설정 타입 구분코드
        x-portone-description: 설정된 PG사의 타입 구분코드
      channel_name:
        description: 고객사가 포트원 콘솔에 채널 추가시 설정한 결제 채널 이름
        type: string
        x-portone-name: 채널이름
        x-portone-description: 고객사가 포트원 콘솔에 채널 추가시 설정한 결제 채널 이름
      channel_key:
        description: 고객사가 포트원 콘솔에 채널 추가시 포트원이 자동 생성한 채널 고유 키
        type: string
        x-portone-name: 채널 고유 키
        x-portone-description: 고객사가 포트원 콘솔에 채널 추가시 포트원이 자동 생성한 채널 고유 키
  MultiplePgSettingResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: PG 설정 정보.
        properties:
          response:
            type: array
            items:
              $ref: '#/definitions/PgSettingAnnotation'
  VbankHolderAnnotation:
    required:
      - bank_holder
    properties:
      bank_holder:
        description: 예금주명
        type: string
        x-portone-name: 예금주명
        x-portone-description: 가상계좌의 예금주명
  VbankHolderResponse:
    allOf:
      - $ref: '#/definitions/ResponseAnnotation'
      - description: 계좌번호 예금주 정보. 바로 아래 VbankHolder structure를 확인하세요
        properties:
          response:
            $ref: '#/definitions/VbankHolderAnnotation'
  VbankDepositAnnotation:
    required:
      - pg_tid
      - amount
      - reason
      - depositor_name
      - deposited_at
    properties:
      pg_tid:
        description: PG사 승인번호
        type: string
        x-portone-name: PG사 승인번호
        x-portone-description: 입금건의 PG사 승인번호
      amount:
        description: 입금건의 거래 금액
        type: number
        x-portone-name: 입금 금액
        x-portone-description: 입금건의 거래 금액
      depositor_name:
        description: 가상계좌에 실제 입금한 사람의 이름
        type: string
        x-portone-name: 입금자명
        x-portone-description: 가상계좌에 실제 입금한 사람의 이름
      deposited_at:
        description: 입금된 시각 UNIX timestamp
        type: integer
        x-portone-name: 입금 시각
        x-portone-description: 입금된 시각 UNIX timestamp
  KcpQuickControllerAnnotation: {}
  UserControllerAnnotation: {}
tags:
  - name: authenticate
    description: REST API사용을 위한 인증(access_token취득)
  - name: payments
    description: 결제내역 조회 및 결제 취소
  - name: payments.validation
    description: payments확장기능. 결제될 내역에 대한 사전정보 등록&검증
  - name: subscribe
    description: 'ActiveX없는 간편결제, 정기 예약 결제 기능'
  - name: subscribe.customer
    description: subscribe확장기능. 구매자 빌키 관리
  - name: vbanks
    description: PG결제화면없이 API만으로 가상계좌 발급/취소
  - name: receipts
    description: 현금영수증 발급/관리
  - name: certifications
    description: SMS본인인증결과 조회 및 관리
  - name: escrow.logis
    description: 에스크로 결제건에 대한 배송정보 등록
  - name: codes
    description: 결제기관에 대한 표준코드 및 기관정보(금융결제원기준)
  - name: payco
    description: PAYCO전용 API
  - name: naver
    description: 네이버페이 전용 API
  - name: kakao
    description: 카카오페이 전용 API
  - name: benepia
    description: 베네피아 포인트 API
  - name: paymentwall
    description: 페이먼트월 전용 API (배송등록 등)
  - name: cvs
    description: 편의점방문 수납결제 API
  - name: kcpquick
    description: KCP 퀵페이 전용 API
  - name: users
    description: 고객사 설정 정보 전용 API
  - name: tiers
    description: 대표 상점에 대한 하위 상점 관리
  - name: partners
    description: 하위 상점 전용 API
x-portone-categories:
  - id: auth
    title: 인증 관련 API
    description: API 인증에 관련된 기능을 제공합니다.
  - id: payment
    title: 결제 관련 API
    description: 결제 건과 관련된 기능을 제공합니다.
    children:
      - id: payment.validation
        title: 결제 금액 사전 등록 관련 API
        description: 사전 등록하는 결제금액과 관련된 기능을 제공합니다.
  - id: nonAuthPayment
    title: 비인증 결제 관련 API
    description: 별도 결제창 호출없이 결제를 진행할 수 있는 비인증 결제 기능을 제공합니다.
    children:
      - id: nonAuthPayment.subscribe
        title: 정기 결제 관련 API
        description: 비인증 결제 중 정기 결제를 관리하는 기능을 제공합니다.
  - id: billingkey
    title: 빌링키 관련 API
    description: 빌링키 관리와 관련된 기능을 제공합니다.
  - id: vbank
    title: 가상계좌 관련 API
    description: 가상계좌 결제와 관련된 기능을 제공합니다.
  - id: pg
    title: PG사 관련 API
    description: PG사 별 추가로 지원하는 기능을 제공합니다.
    children:
      - id: pg.kakao
        title: 카카오 관련 API
        description: 카카오페이에서 지원하는 기능을 제공합니다.
      - id: pg.kcpquick
        title: KCP 퀵페이 관련 API
        description: KCP 퀵페이에서 지원하는 기능을 제공합니다.
      - id: pg.naverpay
        title: 네이버페이 관련 API
        description: 네이버페이에서 지원하는 기능을 제공합니다.
      - id: pg.payco
        title: 페이코 관련 API
        description: 페이코에서 지원하는 기능을 제공합니다.
      - id: pg.paymentwall
        title: 페이먼트월 관련 API
        description: 페이먼트월에서 지원하는 기능을 제공합니다.
  - id: certification
    title: 본인인증 관련 API
    description: 본인인증 요청 및 결과 조회와 관련된 기능을 제공합니다.
  - id: receipt
    title: 현금영수증 관련 API
    description: 포트원 결제건 및 외부 결제 건의 현금영수증 관리와 관련된 기능을 제공합니다.
  - id: escrow
    title: 에스크로 관련 API
    description: 에스크로 결제 건의 배송 정보와 관련된 기능을 제공합니다.
  - id: user
    title: 고객사 정보 관련 API
    description: 고객사 정보를 관리하는 기능을 제공합니다.
    children:
      - id: user.tier
        title: 고객사의 하위 상점 관련 API
        description: 대표 상점에 대한 하위 상점 관리와 관련된 기능을 제공합니다.
  - id: partner
    title: 하위 상점 관련 API
    description: 하위 상점과 관련된 기능을 제공합니다.
  - id: etc
    title: 기타 API
    description: 부가적인 기능을 제공합니다.
    children:
      - id: etc.benepia
        title: 베네피아 포인트 관련 API
        description: 베네피아 포인트(복지 포인트)와 관련된 기능을 제공합니다.
      - id: etc.code
        title: 결제기관 관련 API
        description: '금융결제원 기준 카드사, 은행의 표준 코드와 기관정보 조회 기능을 제공합니다.'
      - id: etc.cvs
        title: 편의점 결제 관련 API
        description: 편의점 결제를 위한 수납 번호(barcode)와 관련된 기능을 제공합니다.
