Python 사용자를 위한 아임포트 REST API 연동 모듈입니다
Python
Latest commit 6e5eb76 Jan 4, 2017 @perhapsspy perhapsspy codecov 붙임
Permalink
Failed to load latest commit information.
iamport 비인증 재결제 기능과 테스트 추가 Dec 12, 2016
tests find 테스트 커버리지 향상 Jan 3, 2017
.coveragerc 커버리지 저해하는 setup.py 제외 Jan 3, 2017
.gitignore first commit Dec 10, 2015
.travis.yml
LICENSE Update LICENSE Dec 17, 2015
README.rst codecov 붙임 Jan 3, 2017
setup.cfg flake8 검사 예외 항목 업데이트 Dec 12, 2016
setup.py 버전업 Dec 12, 2016
tox.ini codecov 붙임 Jan 3, 2017

README.rst

I'mport; REST Client

https://travis-ci.org/iamport/iamport-rest-client-python.svg?branch=master https://coveralls.io/repos/github/iamport/iamport-rest-client-python/badge.svg?branch=master

  :target: https://codecov.io/gh/iamport/iamport-rest-client-python

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

설치

pip install iamport-rest-client

기능

  1. 결제 정보 찾기
  2. 가격 확인
  3. 취소
  4. 비 인증 결제

사용법

준비

사용하기 위해 객체를 만듭니다.

from iamport import Iamport

# 테스트 용
iamport = Iamport(imp_key='{테스트용 키}', imp_secret='{테스트 시크릿}')
# 테스트용 키와 시크릿은 tests/conftest.py 파일에 DEFAULT_TEST_IMP_KEY, DEFAULT_TEST_IMP_SECRET를 참고하세요.

# 실제 상점 정보
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(u'취소하는 이유', merchant_uid='{상품 아이디}')

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

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

비인증 결제

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

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

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

개발환경 및 테스트 설정

macOS 기준 pyenv 설치 권장

# pyenv 준비
brew install pyenv
pyenv install 2.7.12 3.4.5 3.5.2 pypy-5.6.0
pyenv local 2.7.12 3.4.5 3.5.2 pypy-5.6.0
# tox
pip install tox-pyenv detox
detox

# 커버리지 확인
pip install pytest-cov
python -m pytest tests/ --cov=./

기여

할 일

  • 결제 목록 읽기
  • 비인증 결제 세부 기능 지원
  • 문서화
  • 기타 등등