Skip to content

Commit af94b59

Browse files
authored
Merge pull request #53 from jha929/feature/refactor-readme
README 파일 구조 변경
2 parents 9ef3db1 + 7cb4763 commit af94b59

File tree

1 file changed

+289
-0
lines changed

1 file changed

+289
-0
lines changed

README.md

+289
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,289 @@
1+
I'mport; REST Client Python
2+
---------------------------
3+
4+
[![Python Versions](https://img.shields.io/pypi/pyversions/iamport-rest-client)](https://pypi.org/project/iamport-rest-client/)
5+
[![PyPI Release (latest by date)](https://img.shields.io/pypi/v/iamport-rest-client?color=blue)](https://pypi.org/project/iamport-rest-client/)
6+
[![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)
7+
[![GitHub LICENSE](https://img.shields.io/github/license/iamport/iamport-rest-client-python)](https://github.com/iamport/iamport-rest-client-python/blob/master/LICENSE)
8+
[![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)
9+
10+
11+
설명
12+
---
13+
> Python 개발자를 위한 [아임포트 REST API](https://api.iamport.kr/) 연동 패키지입니다.
14+
15+
주의 사항
16+
-------
17+
* 이용 중 발생한 문제에 대해 책임지지 않습니다.
18+
* `lexifdev`님의 도움을 받아 작성되었습니다[`lexifdev's iamport 모듈](https://github.com/lexifdev/iamport)
19+
* 최초 작성은 `[핑크퐁 북스토어](https://store.pinkfong.com)`에서 쓰기 위해 만들었습니다.
20+
21+
주요 기능
22+
---
23+
1. 결제 정보 찾기
24+
2. 가격 확인
25+
3. 취소
26+
4. 비 인증 결제
27+
5. 정기 예약 결제
28+
6. 본인인증결과 조회 및 삭제
29+
30+
설치
31+
---
32+
[추천 사항] 아나콘다 환경에서 작업하신다면, 우선 아래의 절차를 진행해주세요.
33+
```bash
34+
# 아임포트 패키지를 위한 새로운 파이썬 가상환경을 생성해주세요. 이 때, 파이썬 버전은 최소 3.6 이상을 선택해주세요.
35+
conda create --name iamport python=3.6
36+
37+
# 위에서 파이썬 가상환경이 정상적으로 설치되었다면, 해당 가상환경을 활성화해주세요.
38+
conda activate pymodi
39+
```
40+
41+
다음 커맨드를 실행하여 최신버전의 아임포트 패키지를 설치해주세요.
42+
```bash
43+
python -m pip install iamport-rest-client --upgrade
44+
```
45+
46+
현재 개발중인 버전의 아임포트 패키지를 아래의 커맨드로 설치하실 수 있습니다.
47+
```bash
48+
python -m pip install git+https://github.com/iamport/iamport-rest-client-python.git@develop --upgrade
49+
```
50+
51+
혹은, 특정 버전의 아임포트 패키지를 다음과 같이 설치하실 수 있습니다.
52+
```bash
53+
python -m pip install git+https://github.com/iamport/[email protected] --upgrade
54+
```
55+
56+
사용 준비
57+
-------
58+
```python
59+
from iamport import Iamport
60+
61+
# 아임포트 객체를 테스트용 키와 시크릿을 사용하여 생성합니다 (테스트시 지출된 금액은 매일 밤 환불됩니다).
62+
iamport = Iamport(
63+
imp_key='imp_apikey',
64+
imp_secret=(
65+
'ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6b'
66+
'kA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f'
67+
)
68+
)
69+
70+
# 아임포트 객체를 각자 발급받으신 실제 키와 시크릿을 사용하여 생성합니다.
71+
iamport = Iamport(imp_key='{발급받은 키}', imp_secret='{발급받은 시크릿}')
72+
```
73+
74+
사용 예제
75+
-------
76+
77+
결제를 진행한 상품 아이디나, 전달받은 IMP 아이디를 이용해 결제 정보를 찾습니다.
78+
79+
```python
80+
# 상품 아이디로 조회
81+
response = iamport.find(merchant_uid='{상품 아이디}')
82+
83+
# I'mport; 아이디로 조회
84+
response = iamport.find(imp_uid='{IMP UID}')
85+
```
86+
87+
실제 제품 가격과 결제된 가격이 같은지 확인합니다.
88+
89+
```python
90+
# 상품 아이디로 확인
91+
iamport.is_paid(product_price, merchant_uid='{상품 아이디}')
92+
93+
# I'mport; 아이디로 확인
94+
iamport.is_paid(product_price, imp_uid='{IMP UID}')
95+
96+
# 이미 찾은 response 재활용하여 확인
97+
iamport.is_paid(product_price, response=response)
98+
```
99+
100+
101+
결제를 취소합니다.
102+
103+
```python
104+
# 상품 아이디로 취소
105+
response = iamport.cancel(u'취소하는 이유', merchant_uid='{상품 아이디}')
106+
107+
# I'mport; 아이디로 취소
108+
response = iamport.cancel(u'취소하는 이유', imp_uid='{IMP UID}')
109+
110+
# 취소시 오류 예외처리(이미 취소된 결제는 에러가 발생함)
111+
try:
112+
response = iamport.cancel(u'취소하는 이유', imp_uid='{IMP UID}')
113+
except Iamport.ResponseError as e:
114+
print e.code
115+
print e.message # 에러난 이유를 알 수 있음
116+
except Iamport.HttpError as http_error:
117+
print http_error.code
118+
print http_error.reason # HTTP not 200 에러난 이유를 알 수 있음
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+
```python
171+
# 테스트용 값
172+
payload = {
173+
'customer_uid': '{고객 아이디}',
174+
'schedules': [
175+
{
176+
'merchant_uid': 'test_merchant_01',
177+
# UNIX timestamp
178+
'schedule_at': 1478150985,
179+
'amount': 1004
180+
},
181+
{
182+
'merhcant_uid': 'test_merchant_02',
183+
# UNIX timestamp
184+
'schedule_at': 1478150985,
185+
'amount': 5000,
186+
'name': '{주문명}',
187+
'buyer_name': '{주문자명}',
188+
'buyer_email': '{주문자 이메일}',
189+
'buyer_tel': '{주문자 전화번호}',
190+
'buyer_addr': '{주문자 주소}',
191+
'buyer_postcode': '{주문자 우편번호}',
192+
},
193+
]
194+
}
195+
try:
196+
reponse = iamport.pay_schedule(**payload)
197+
except KeyError:
198+
# 필수 값이 없을때 에러 처리
199+
pass
200+
except Iamport.ResponseError as e:
201+
# 응답 에러 처리
202+
pass
203+
except Iamport.HttpError as http_error:
204+
# HTTP not 200 응답 에러 처리
205+
pass
206+
```
207+
208+
정기 결제 예약을 취소합니다.
209+
210+
```python
211+
# 테스트용 값 (merchant_uid 가 누락되면 customer_uid 에 대한 결제예약정보 일괄취소)
212+
payload = {
213+
'customer_uid': '{고객 아이디}',
214+
'merchant_uid': 'test_merchant_01',
215+
}
216+
try:
217+
response = iamport.pay_unschedule(**payload)
218+
except KeyError:
219+
# 필수 값이 없을때 에러 처리
220+
pass
221+
except Iamport.ResponseError as e:
222+
# 응답 에러 처리
223+
pass
224+
except Iamport.HttpError as http_error:
225+
# HTTP not 200 응답 에러 처리
226+
pass
227+
```
228+
229+
결제될 내역에 대한 사전정보를 등록합니다
230+
231+
```python
232+
# 테스트용 값
233+
amount = 12000
234+
mid = 'merchant_test'
235+
try:
236+
response = iamport.prepare(amount=amount, merchant_uid=mid)
237+
except Iamport.ResponseError as e:
238+
# 응답 에러 처리
239+
pass
240+
except Iamport.HttpError as http_error:
241+
# HTTP not 200 응답 에러 처리
242+
pass
243+
```
244+
245+
등록된 사전정보를 확인합니다.
246+
247+
```python
248+
# 테스트용 값
249+
amount = 12000
250+
mid = 'merchant_test'
251+
try:
252+
result = iamport.prepare_validate(merchant_uid=mid, amount=amount)
253+
except Iamport.ResponseError as e:
254+
# 응답 에러 처리
255+
pass
256+
except Iamport.HttpError as http_error:
257+
# HTTP not 200 응답 에러 처리
258+
pass
259+
```
260+
261+
본인인증결과를 조회합니다.
262+
263+
```python
264+
try:
265+
response = iamport.find_certification(imp_uid='{IMP UID}')
266+
except Iamport.ResponseError as e:
267+
# 응답 에러 처리
268+
pass
269+
except Iamport.HttpError as http_error:
270+
# HTTP not 200 응답 에러 처리
271+
pass
272+
```
273+
274+
본인인증결과를 아임포트에서 삭제합니다.
275+
276+
```python
277+
try:
278+
response = iamport.cancel_certification(imp_uid='{IMP UID}')
279+
except Iamport.ResponseError as e:
280+
# 응답 에러 처리
281+
pass
282+
except Iamport.HttpError as http_error:
283+
# HTTP not 200 응답 에러 처리
284+
pass
285+
```
286+
287+
기여하기
288+
------
289+
[iamport-rest-client-python 프로젝트 보드](https://github.com/iamport/iamport-rest-client-python/projects/1)`To do` 탭을 참고해주세요.

0 commit comments

Comments
 (0)