Skip to content
This repository was archived by the owner on Mar 5, 2026. It is now read-only.

iamport/iamport-rest-client-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

148 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

I'mport; REST Client Python

⚠️ DEPRECATED: 이 레포지토리는 2026년 3월 4일부로 deprecated 되었으며, 공식 지원이 되지 않습니다. 본 클라이언트는 함께 포함된 openapi.json Swagger spec 기준으로 동작합니다. 추가/수정이 필요한 경우 본 레포지토리를 fork하여 수정하거나, PortOne V1 REST API 문서를 참고하여 REST client를 직접 구현해주세요.

Python Versions PyPI Release (latest by date) GitHub Workflow Status (Build) GitHub LICENSE Lines of Code

소개

Python 개발자를 위한 아임포트 REST API 연동 패키지입니다.

주의 사항

  • 이용 중 발생한 문제에 대해 책임지지 않습니다.
  • lexifdev님의 도움을 받아 작성되었습니다`lexifdev's iamport 모듈
  • 최초 작성은 [핑크퐁 북스토어](https://store.pinkfong.com)에서 쓰기 위해 만들었습니다.

주요 기능

  1. 결제 정보 찾기 (단건/복수건/상태별 조회)
  2. 가격 확인 (사전등록/검증)
  3. 취소 (전액/부분 취소)
  4. 비 인증 결제 (일회성/재결제/해외카드)
  5. 정기 예약 결제 (예약/조회/수정/재시도/취소)
  6. 본인인증결과 조회 및 삭제 (OTP 인증 포함)
  7. 빌링키 관리 (등록/조회/삭제/결제내역/예약내역)
  8. 가상계좌 (발급/수정/취소/예금주 조회)
  9. 에스크로 배송정보 (등록/수정/조회)
  10. 현금영수증 (발급/조회/취소/외부발급)
  11. 카드사/은행 코드 조회
  12. 네이버페이 주문관리 (17개 API)
  13. 베네피아 포인트 (조회/결제)
  14. 편의점 결제 (발급/취소)
  15. KCP Quick 결제 (회원삭제/선불결제)
  16. 파트너 정산
  17. 페이코 주문상태 변경
  18. Paymentwall 배송정보
  19. 티어 정보 조회
  20. PG 설정 조회

설치

# mac, linux
pip install iamport-rest-client

# 아나콘다
conda create --name iamport python=3.6
conda activate iamport
python -m pip install iamport-rest-client --upgrade

# 개발버전
pip install git+https://github.com/iamport/iamport-rest-client-python.git@master --upgrade  # master
pip install git+https://github.com/iamport/iamport-rest-client-python.git@v1.0.0 --upgrade  # 특정 버전

개발 환경

# venv 등 환경 준비 및 활성화
pip install -e .[dev]
pytest  # 테스트 실행

기여하기

iamport-rest-client-python 프로젝트 보드To do 탭을 참고해주세요.

사용법

설정

from iamport import Iamport

# 아임포트 객체를 테스트용 키와 시크릿을 사용하여 생성합니다 (테스트시 지출된 금액은 매일 자정 이전 환불됩니다).
iamport = Iamport(
    imp_key='imp_apikey',
    imp_secret=(
        'ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6b'
        'kA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f'
    )
)

# 아임포트 객체를 각자 발급받으신 실제 키와 시크릿을 사용하여 생성합니다.
iamport = Iamport(imp_key='{발급받은 키}', imp_secret='{발급받은 시크릿}')

예제

결제를 진행한 상품 아이디나, 전달받은 IMP 아이디를 이용해 결제 정보를 찾습니다.

# 상품 아이디로 조회
response = iamport.find(merchant_uid='{상품 아이디}')

# I'mport; 아이디로 조회
response = iamport.find(imp_uid='{IMP UID}')

실제 제품 가격과 결제된 가격이 같은지 확인합니다.

# 상품 아이디로 확인
iamport.is_paid(product_price, merchant_uid='{상품 아이디}')

# I'mport; 아이디로 확인
iamport.is_paid(product_price, imp_uid='{IMP UID}')

# 이미 찾은 response 재활용하여 확인
iamport.is_paid(product_price, response=response)

결제를 취소합니다.

# 상품 아이디로 취소
response = iamport.cancel('취소하는 이유', merchant_uid='{상품 아이디}')

# I'mport; 아이디로 취소
response = iamport.cancel('취소하는 이유', imp_uid='{IMP UID}')

# 취소시 오류 예외처리(이미 취소된 결제는 에러가 발생함)
try:
    response = iamport.cancel('취소하는 이유', imp_uid='{IMP UID}')
except Iamport.ResponseError as e:
    print(e.code)
    print(e.message)  # 에러난 이유를 알 수 있음
except Iamport.HttpError as http_error:
    print(http_error.code)
    print(http_error.reason) # HTTP not 200 에러난 이유를 알 수 있음

1회성 비인증 결제를 진행합니다.

# 테스트용 값
payload = {
    'merchant_uid': '00000000',
    'amount': 5000,
    'card_number': '4092-0230-1234-1234',
    'expiry': '2019-03',
    'birth': '500203',
    'pwd_2digit': '19'
}
try:
    response = iamport.pay_onetime(**payload)
except KeyError:
    # 필수 값이 없을때 에러 처리
    pass
except Iamport.ResponseError as e:
    # 응답 에러 처리
    pass
except Iamport.HttpError as http_error:
    # HTTP not 200 응답 에러 처리
    pass

저장된 빌링키로 재결제합니다.

# 테스트용 값
payload = {
    'customer_uid': '{고객 아이디}',
    'merchant_uid': '00000000',
    'amount': 5000,
    'name' : '제품명',
}
try:
    response = iamport.pay_again(**payload)
except KeyError:
    # 필수 값이 없을때 에러 처리
    pass
except Iamport.ResponseError as e:
    # 응답 에러 처리
    pass
except Iamport.HttpError as http_error:
    # HTTP not 200 응답 에러 처리
    pass

정기 결제를 예약합니다.

# 테스트용 값
payload = {
    'customer_uid': '{고객 아이디}',
    'schedules': [
        {
            'merchant_uid': 'test_merchant_01',
            'schedule_at': 1478150985,  # UNIX timestamp
            'amount': 1004
        },
        {
            'merhcant_uid': 'test_merchant_02',
            'schedule_at': 1478150985,  # UNIX timestamp
            'amount': 5000,
            'name': '{주문명}',
            'buyer_name': '{주문자명}',
            'buyer_email': '{주문자 이메일}',
            'buyer_tel': '{주문자 전화번호}',
            'buyer_addr': '{주문자 주소}',
            'buyer_postcode': '{주문자 우편번호}',
        },
    ]
}
try:
    response = iamport.pay_schedule(**payload)
except KeyError:
    # 필수 값이 없을때 에러 처리
    pass
except Iamport.ResponseError as e:
    # 응답 에러 처리
    pass
except Iamport.HttpError as http_error:
    # HTTP not 200 응답 에러 처리
    pass

정기 결제 예약을 취소합니다.

# 테스트용 값 (merchant_uid 가 누락되면 customer_uid 에 대한 결제예약정보 일괄취소)
payload = {
    'customer_uid': '{고객 아이디}',
    'merchant_uid': 'test_merchant_01',
}
try:
    response = iamport.pay_unschedule(**payload)
except KeyError:
    # 필수 값이 없을때 에러 처리
    pass
except Iamport.ResponseError as e:
    # 응답 에러 처리
    pass
except Iamport.HttpError as http_error:
    # HTTP not 200 응답 에러 처리
    pass

결제될 내역에 대한 사전정보를 등록합니다

# 테스트용 값
amount = 12000
mid = 'merchant_test'
try:
    response = iamport.prepare(amount=amount, merchant_uid=mid)
except Iamport.ResponseError as e:
    # 응답 에러 처리
    pass
except Iamport.HttpError as http_error:
    # HTTP not 200 응답 에러 처리
    pass

등록된 사전정보를 확인합니다.

# 테스트용 값
amount = 12000
mid = 'merchant_test'
try:
    result = iamport.prepare_validate(merchant_uid=mid, amount=amount)
except Iamport.ResponseError as e:
    # 응답 에러 처리
    pass
except Iamport.HttpError as http_error:
    # HTTP not 200 응답 에러 처리
    pass

본인인증결과를 조회합니다.

try:
    response = iamport.find_certification(imp_uid='{IMP UID}')
except Iamport.ResponseError as e:
    # 응답 에러 처리
    pass
except Iamport.HttpError as http_error:
    # HTTP not 200 응답 에러 처리
    pass

본인인증결과를 아임포트에서 삭제합니다.

try:
    response = iamport.cancel_certification(imp_uid='{IMP UID}')
except Iamport.ResponseError as e:
    # 응답 에러 처리
    pass
except Iamport.HttpError as http_error:
    # HTTP not 200 응답 에러 처리
    pass

카드사/은행 코드를 조회합니다.

# 전체 카드사 코드 조회
cards = iamport.find_all_cards()

# 특정 카드사 코드 조회
card = iamport.find_card(card_standard_code='{카드사 코드}')

# 전체 은행 코드 조회
banks = iamport.find_all_banks()

# 특정 은행 코드 조회
bank = iamport.find_bank(bank_standard_code='{은행 코드}')

가상계좌를 발급하고 관리합니다.

# 가상계좌 발급
response = iamport.create_vbank(
    channel_key='{채널키}',
    merchant_uid='{주문번호}',
    amount=10000,
    vbank_code='{은행코드}',
    vbank_due=1640995200,
)

# 가상계좌 수정
response = iamport.modify_vbank('{IMP UID}', amount=20000)

# 가상계좌 취소
response = iamport.revoke_vbank_by_imp_uid('{IMP UID}')

# 예금주 조회
response = iamport.find_vbank_holder(bank_code='{은행코드}', bank_num='{계좌번호}')

에스크로 배송정보를 관리합니다.

sender = {'name': '보내는분', 'tel': '01012345678'}
receiver = {'name': '받는분', 'tel': '01087654321'}
logis = {'company': 'CJ', 'invoice': '1234567890', 'sent_at': 1640995200}

# 배송정보 등록
response = iamport.create_escrow_logis(
    '{IMP UID}', sender=sender, receiver=receiver, logis=logis
)

# 배송정보 수정
response = iamport.update_escrow_logis(
    '{IMP UID}', sender=sender, receiver=receiver, logis=logis
)

# 배송정보 조회
response = iamport.find_escrow_logis('{IMP UID}')

About

Python 사용자를 위한 아임포트 REST API 연동 모듈입니다

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages