11I'mport; REST Client
22--------------------
33
4- <div align =" center " >
5-
64[ ![ Python Versions] ( https://img.shields.io/pypi/pyversions/iamport-rest-client )] ( https://pypi.org/project/iamport-rest-client/ )
75[ ![ PyPI Release (latest by date)] ( https://img.shields.io/pypi/v/iamport-rest-client?color=blue )] ( https://pypi.org/project/iamport-rest-client/ )
86[ ![ GitHub Workflow Status (Build)] ( https://img.shields.io/github/workflow/status/iamport/iamport-rest-client-python/Build%20Status )] ( https://github.com/iamport/iamport-rest-client-python/actions )
97[ ![ GitHub LICENSE] ( https://img.shields.io/github/license/iamport/iamport-rest-client-python )] ( https://github.com/iamport/iamport-rest-client-python/blob/master/LICENSE )
108[ ![ Lines of Code] ( https://img.shields.io/tokei/lines/github/iamport/iamport-rest-client-python )] ( https://github.com/iamport/iamport-rest-client-python/tree/master/iamport )
119
12- </div >
1310
1411설명
1512---
1613> Python 개발자를 위한 [ 아임포트 REST API] ( https://api.iamport.kr/ ) 연동 패키지입니다.
1714
18- 기능
15+ 주요 기능
1916---
20171 . 결제 정보 찾기
21182 . 가격 확인
@@ -26,7 +23,7 @@ I'mport; REST Client
2623
2724설치
2825---
29- > 아임포트를 설치하실 때 아나콘다를 이용한 아임포트 파이썬 가상환경 구성을 추천합니다.
26+ > 아임포트를 설치하실 때 아나콘다를 이용한 아임포트 파이썬 가상환경 구성을 추천합니다.
3027[ 선택 사항] 아나콘다 환경에서 작업하신다면, 우선 아래의 절차를 진행해주세요.
3128``` bash
3229# 아임포트 패키지를 위한 새로운 파이썬 가상환경을 생성해주세요. 이 때, 파이썬 버전은 최소 3.6 이상을 선택해주세요.
@@ -36,14 +33,23 @@ conda create --name iamport python=3.6
3633conda activate pymodi
3734```
3835
39- 아래의 커맨드를 실행하여 최신버전의 아임포트를 설치해주세요.
36+ 아래의 커맨드를 실행하여 최신버전의 아임포트 패키지를 설치해주세요.
4037``` bash
4138python -m pip install iamport-rest-client --upgrade
4239```
4340
44- 준비
45- ---
46- 아임포트 객체를 생성합니다.
41+ 원하신다면, 현재 개발중인 버전의 아임포트 패키지를 아래의 커맨드로 설치하실 수 있습니다 (주의: 코드가 정상작동하지 않을 수 있음).
42+ ``` bash
43+ python -m pip install git+https://github.com/iamport/iamport-rest-client-python.git@develop --upgrade
44+ ```
45+
46+ 혹은 특정 버전의 아임포트 패키지를 다음과 같이 설치하실 수 있습니다.
47+ ``` bash
48+ python -m pip install git+https://github.com/iamport/
[email protected] --upgrade
49+ ```
50+
51+ 사용 준비
52+ -------
4753``` python
4854from iamport import Iamport
4955
@@ -60,6 +66,227 @@ iamport = Iamport(
6066iamport = Iamport(imp_key = ' {발급받은 키}' , imp_secret = ' {발급받은 시크릿}' )
6167```
6268
69+ 사용 예제
70+ -------
71+
72+ - 찾기
73+ 결제를 진행한 상품 아이디나, 전달받은 IMP 아이디를 이용해 결제 정보를 찾습니다.
74+
75+ ``` python
76+ # 상품 아이디로 조회
77+ response = iamport.find(merchant_uid = ' {상품 아이디}' )
78+
79+ # I'mport; 아이디로 조회
80+ response = iamport.find(imp_uid = ' {IMP UID}' )
81+ ```
82+
83+
84+ - 가격 확인
85+ 실제 제품 가격과 결제된 가격이 같은지 확인합니다.
86+
87+ ``` python
88+ # 상품 아이디로 확인
89+ iamport.is_paid(product_price, merchant_uid = ' {상품 아이디}' )
90+
91+ # I'mport; 아이디로 확인
92+ iamport.is_paid(product_price, imp_uid = ' {IMP UID}' )
93+
94+ # 이미 찾은 response 재활용하여 확인
95+ iamport.is_paid(product_price, response = response)
96+ ```
97+
98+
99+ - 취소
100+ 결제를 취소합니다.
101+
102+ ``` python
103+ # 상품 아이디로 취소
104+ response = iamport.cancel(u ' 취소하는 이유' , merchant_uid = ' {상품 아이디}' )
105+
106+ # I'mport; 아이디로 취소
107+ response = iamport.cancel(u ' 취소하는 이유' , imp_uid = ' {IMP UID}' )
108+
109+ # 취소시 오류 예외처리(이미 취소된 결제는 에러가 발생함)
110+ try :
111+ response = iamport.cancel(u ' 취소하는 이유' , imp_uid = ' {IMP UID}' )
112+ except Iamport.ResponseError as e:
113+ print e.code
114+ print e.message # 에러난 이유를 알 수 있음
115+ except Iamport.HttpError as http_error:
116+ print http_error.code
117+ print http_error.reason # HTTP not 200 에러난 이유를 알 수 있음
118+ ```
119+
120+ - 비인증 결제
121+ 1회성 비인증 결제를 진행합니다.
122+
123+ ``` python
124+ # 테스트용 값
125+ payload = {
126+ ' merchant_uid' : ' 00000000' ,
127+ ' amount' : 5000 ,
128+ ' card_number' : ' 4092-0230-1234-1234' ,
129+ ' expiry' : ' 2019-03' ,
130+ ' birth' : ' 500203' ,
131+ ' pwd_2digit' : ' 19'
132+ }
133+ try :
134+ response = iamport.pay_onetime(** payload)
135+ except KeyError :
136+ # 필수 값이 없을때 에러 처리
137+ pass
138+ except Iamport.ResponseError as e:
139+ # 응답 에러 처리
140+ pass
141+ except Iamport.HttpError as http_error:
142+ # HTTP not 200 응답 에러 처리
143+ pass
144+ ```
145+
146+ 저장된 빌링키로 재결제합니다.
147+
148+ ``` python
149+ # 테스트용 값
150+ payload = {
151+ ' customer_uid' : ' {고객 아이디}' ,
152+ ' merchant_uid' : ' 00000000' ,
153+ ' amount' : 5000 ,
154+ }
155+ try :
156+ response = iamport.pay_again(** payload)
157+ except KeyError :
158+ # 필수 값이 없을때 에러 처리
159+ pass
160+ except Iamport.ResponseError as e:
161+ # 응답 에러 처리
162+ pass
163+ except Iamport.HttpError as http_error:
164+ # HTTP not 200 응답 에러 처리
165+ pass
166+ ```
167+
168+ - 정기 예약 결제
169+ 정기 결제를 예약합니다.
170+
171+ ``` python
172+ # 테스트용 값
173+ payload = {
174+ ' customer_uid' : ' {고객 아이디}' ,
175+ ' schedules' : [
176+ {
177+ ' merchant_uid' : ' test_merchant_01' ,
178+ # UNIX timestamp
179+ ' schedule_at' : 1478150985 ,
180+ ' amount' : 1004
181+ },
182+ {
183+ ' merhcant_uid' : ' test_merchant_02' ,
184+ # UNIX timestamp
185+ ' schedule_at' : 1478150985 ,
186+ ' amount' : 5000 ,
187+ ' name' : ' {주문명}' ,
188+ ' buyer_name' : ' {주문자명}' ,
189+ ' buyer_email' : ' {주문자 이메일}' ,
190+ ' buyer_tel' : ' {주문자 전화번호}' ,
191+ ' buyer_addr' : ' {주문자 주소}' ,
192+ ' buyer_postcode' : ' {주문자 우편번호}' ,
193+ },
194+ ]
195+ }
196+ try :
197+ reponse = iamport.pay_schedule(** payload)
198+ except KeyError :
199+ # 필수 값이 없을때 에러 처리
200+ pass
201+ except Iamport.ResponseError as e:
202+ # 응답 에러 처리
203+ pass
204+ except Iamport.HttpError as http_error:
205+ # HTTP not 200 응답 에러 처리
206+ pass
207+ ```
208+
209+ 정기 결제 예약을 취소합니다.
210+
211+ ``` python
212+ # 테스트용 값 (merchant_uid 가 누락되면 customer_uid 에 대한 결제예약정보 일괄취소)
213+ payload = {
214+ ' customer_uid' : ' {고객 아이디}' ,
215+ ' merchant_uid' : ' test_merchant_01' ,
216+ }
217+ try :
218+ response = iamport.pay_unschedule(** payload)
219+ except KeyError :
220+ # 필수 값이 없을때 에러 처리
221+ pass
222+ except Iamport.ResponseError as e:
223+ # 응답 에러 처리
224+ pass
225+ except Iamport.HttpError as http_error:
226+ # HTTP not 200 응답 에러 처리
227+ pass
228+ ```
229+
230+ - 결제 사전 검증
231+ 결제될 내역에 대한 사전정보를 등록합니다
232+
233+ ``` python
234+ # 테스트용 값
235+ amount = 12000
236+ mid = ' merchant_test'
237+ try :
238+ response = iamport.prepare(amount = amount, merchant_uid = mid)
239+ except Iamport.ResponseError as e:
240+ # 응답 에러 처리
241+ pass
242+ except Iamport.HttpError as http_error:
243+ # HTTP not 200 응답 에러 처리
244+ pass
245+ ```
246+
247+ 등록된 사전정보를 확인합니다
248+
249+ ``` python
250+ # 테스트용 값
251+ amount = 12000
252+ mid = ' merchant_test'
253+ try :
254+ result = iamport.prepare_validate(merchant_uid = mid, amount = amount)
255+ except Iamport.ResponseError as e:
256+ # 응답 에러 처리
257+ pass
258+ except Iamport.HttpError as http_error:
259+ # HTTP not 200 응답 에러 처리
260+ pass
261+ ```
262+
263+ - 본인인증 결과 조회 및 관리
264+ 본인인증결과를 조회합니다.
265+
266+ ``` python
267+ try :
268+ response = iamport.find_certification(imp_uid = ' {IMP UID}' )
269+ except Iamport.ResponseError as e:
270+ # 응답 에러 처리
271+ pass
272+ except Iamport.HttpError as http_error:
273+ # HTTP not 200 응답 에러 처리
274+ pass
275+ ```
276+
277+ 본인인증결과를 아임포트에서 삭제합니다.
278+
279+ ``` python
280+ try :
281+ response = iamport.cancel_certification(imp_uid = ' {IMP UID}' )
282+ except Iamport.ResponseError as e:
283+ # 응답 에러 처리
284+ pass
285+ except Iamport.HttpError as http_error:
286+ # HTTP not 200 응답 에러 처리
287+ pass
288+ ```
289+
63290기여하기
64291------
65292[ iamport-rest-client-python 프로젝트 보드] ( https://github.com/iamport/iamport-rest-client-python/projects/1 ) 의 ` To do ` 탭을 참고해주세요.
0 commit comments