bootpay-backend 2.1.2__tar.gz → 2.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {bootpay_backend-2.1.2 → bootpay_backend-2.3.0}/PKG-INFO +126 -52
- {bootpay_backend-2.1.2 → bootpay_backend-2.3.0}/README.md +113 -49
- bootpay_backend-2.3.0/bootpay_backend/__init__.py +4 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/__init__.py +290 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/commerce_resource.py +182 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/__init__.py +34 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/cart.py +29 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/category.py +60 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/coupon.py +51 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/invoice.py +61 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/order.py +74 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/order_cancel.py +77 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/order_subscription.py +217 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/order_subscription_adjustment.py +52 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/order_subscription_bill.py +60 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/order_subscription_request.py +92 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/point.py +43 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/product.py +93 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/store.py +25 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/user.py +114 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/modules/user_group.py +103 -0
- bootpay_backend-2.3.0/bootpay_backend/commerce/types/__init__.py +999 -0
- {bootpay_backend-2.1.2 → bootpay_backend-2.3.0}/bootpay_backend/rest_client.py +103 -29
- {bootpay_backend-2.1.2 → bootpay_backend-2.3.0}/bootpay_backend.egg-info/PKG-INFO +126 -52
- bootpay_backend-2.3.0/bootpay_backend.egg-info/SOURCES.txt +48 -0
- {bootpay_backend-2.1.2 → bootpay_backend-2.3.0}/bootpay_backend.egg-info/top_level.txt +1 -0
- {bootpay_backend-2.1.2 → bootpay_backend-2.3.0}/setup.py +2 -2
- bootpay_backend-2.3.0/tests/__init__.py +0 -0
- bootpay_backend-2.3.0/tests/commerce/__init__.py +0 -0
- bootpay_backend-2.3.0/tests/commerce/test_order.py +61 -0
- bootpay_backend-2.3.0/tests/commerce/test_product.py +75 -0
- bootpay_backend-2.3.0/tests/commerce/test_store.py +20 -0
- bootpay_backend-2.3.0/tests/commerce/test_token.py +58 -0
- bootpay_backend-2.3.0/tests/commerce/test_user.py +81 -0
- bootpay_backend-2.3.0/tests/conftest.py +145 -0
- bootpay_backend-2.3.0/tests/pg/__init__.py +0 -0
- bootpay_backend-2.3.0/tests/pg/test_auth.py +66 -0
- bootpay_backend-2.3.0/tests/pg/test_billing.py +91 -0
- bootpay_backend-2.3.0/tests/pg/test_cash_receipt.py +59 -0
- bootpay_backend-2.3.0/tests/pg/test_legacy_compatibility.py +90 -0
- bootpay_backend-2.3.0/tests/pg/test_payment.py +45 -0
- bootpay_backend-2.3.0/tests/pg/test_token.py +55 -0
- bootpay_backend-2.3.0/tests/pg/test_wallet.py +33 -0
- bootpay_backend-2.1.2/bootpay_backend/__init__.py +0 -3
- bootpay_backend-2.1.2/bootpay_backend.egg-info/SOURCES.txt +0 -13
- {bootpay_backend-2.1.2 → bootpay_backend-2.3.0}/LICENSE +0 -0
- {bootpay_backend-2.1.2 → bootpay_backend-2.3.0}/bootpay_backend/bankcode.py +0 -0
- {bootpay_backend-2.1.2 → bootpay_backend-2.3.0}/bootpay_backend.egg-info/dependency_links.txt +0 -0
- {bootpay_backend-2.1.2 → bootpay_backend-2.3.0}/bootpay_backend.egg-info/not-zip-safe +0 -0
- {bootpay_backend-2.1.2 → bootpay_backend-2.3.0}/bootpay_backend.egg-info/requires.txt +0 -0
- {bootpay_backend-2.1.2 → bootpay_backend-2.3.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
2
|
-
Name:
|
|
3
|
-
Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: bootpay_backend
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: bootpay server side plugin for python
|
|
5
5
|
Home-page: https://github.com/bootpay/backend-python/tree/2-x-development
|
|
6
6
|
Author: bootpay <bootpay.co.kr@gmail.com>
|
|
@@ -27,6 +27,16 @@ Description-Content-Type: text/markdown
|
|
|
27
27
|
License-File: LICENSE
|
|
28
28
|
Requires-Dist: requests>=2.20; python_version >= "3.0"
|
|
29
29
|
Requires-Dist: requests[security]>=2.20; python_version < "3.0"
|
|
30
|
+
Dynamic: author
|
|
31
|
+
Dynamic: classifier
|
|
32
|
+
Dynamic: description
|
|
33
|
+
Dynamic: description-content-type
|
|
34
|
+
Dynamic: home-page
|
|
35
|
+
Dynamic: license
|
|
36
|
+
Dynamic: license-file
|
|
37
|
+
Dynamic: requires-dist
|
|
38
|
+
Dynamic: requires-python
|
|
39
|
+
Dynamic: summary
|
|
30
40
|
|
|
31
41
|
|
|
32
42
|
## Bootpay Python Server Side Library
|
|
@@ -37,52 +47,75 @@ Python 언어로 작성된 어플리케이션, 프레임워크 등에서 사용
|
|
|
37
47
|
* PG 결제창 연동은 클라이언트 라이브러리에서 수행됩니다. (Javascript, Android, iOS, React Native, Flutter 등)
|
|
38
48
|
* 결제 검증 및 취소, 빌링키 발급, 본인인증 등의 수행은 서버사이드에서 진행됩니다. (Java, PHP, Python, Ruby, Node.js, Go, ASP.NET 등)
|
|
39
49
|
|
|
50
|
+
## 목차
|
|
51
|
+
- [사용하기](#사용하기)
|
|
52
|
+
- [1. 토큰 발급](#1-토큰-발급)
|
|
53
|
+
- [2. 결제 단건 조회](#2-결제-단건-조회)
|
|
54
|
+
- [3. 결제 취소 (전액 취소 / 부분 취소)](#3-결제-취소-전액-취소--부분-취소)
|
|
55
|
+
- [4. 자동/빌링/정기 결제](#4-자동빌링정기-결제)
|
|
56
|
+
- [4-1. 카드 빌링키 발급](#4-1-카드-빌링키-발급)
|
|
57
|
+
- [4-2. 계좌 빌링키 발급](#4-2-계좌-빌링키-발급)
|
|
58
|
+
- [4-3. 결제 요청하기](#4-3-결제-요청하기)
|
|
59
|
+
- [4-4. 결제 예약하기](#4-4-결제-예약하기)
|
|
60
|
+
- [4-5. 예약 조회하기](#4-5-예약-조회하기)
|
|
61
|
+
- [4-6. 예약 취소하기](#4-6-예약-취소하기)
|
|
62
|
+
- [4-7. 빌링키 삭제하기](#4-7-빌링키-삭제하기)
|
|
63
|
+
- [4-8. 빌링키 조회하기](#4-8-빌링키-조회하기)
|
|
64
|
+
- [5. 회원 토큰 발급요청](#5-회원-토큰-발급요청)
|
|
65
|
+
- [6. 서버 승인 요청](#6-서버-승인-요청)
|
|
66
|
+
- [7. 본인 인증 결과 조회](#7-본인-인증-결과-조회)
|
|
67
|
+
- [8. 에스크로 이용시 PG사로 배송정보 보내기](#8-에스크로-이용시-pg사로-배송정보-보내기)
|
|
68
|
+
- [9-1. 현금영수증 발행하기](#9-1-현금영수증-발행하기)
|
|
69
|
+
- [9-2. 현금영수증 발행 취소](#9-2-현금영수증-발행-취소)
|
|
70
|
+
- [9-3. 별건 현금영수증 발행](#9-3-별건-현금영수증-발행)
|
|
71
|
+
- [9-4. 별건 현금영수증 발행 취소](#9-4-별건-현금영수증-발행-취소)
|
|
72
|
+
- [Example 프로젝트](#example-프로젝트)
|
|
73
|
+
- [Documentation](#documentation)
|
|
74
|
+
- [기술문의](#기술문의)
|
|
75
|
+
- [License](#license)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## pypi로 설치하기
|
|
79
|
+
```
|
|
80
|
+
pip install bootpay-backend
|
|
81
|
+
```
|
|
40
82
|
|
|
41
|
-
## 기능
|
|
42
|
-
1. (부트페이 통신을 위한) 토큰 발급
|
|
43
|
-
2. 결제 단건 조회
|
|
44
|
-
3. 결제 취소 (전액 취소 / 부분 취소)
|
|
45
|
-
4. 신용카드 자동결제 (빌링결제)
|
|
46
|
-
|
|
47
|
-
4-1. 빌링키 발급
|
|
48
|
-
|
|
49
|
-
4-2. 발급된 빌링키로 결제 승인 요청
|
|
50
|
-
|
|
51
|
-
4-3. 발급된 빌링키로 결제 예약 요청
|
|
52
|
-
|
|
53
|
-
4-4. 발급된 빌링키로 결제 예약 - 취소 요청
|
|
54
|
-
|
|
55
|
-
4-5. 빌링키 삭제
|
|
56
|
-
|
|
57
|
-
4-6. 빌링키 조회
|
|
58
|
-
|
|
59
|
-
5. (생체인증, 비밀번호 결제를 위한) 구매자 토큰 발급
|
|
60
|
-
6. 서버 승인 요청
|
|
61
|
-
7. 본인 인증 결과 조회
|
|
62
|
-
8. (에스크로 이용시) PG사로 배송정보 보내기
|
|
63
|
-
9. 현금영수증 발행
|
|
64
|
-
|
|
65
|
-
9-1. 현금영수증 발행
|
|
66
|
-
|
|
67
|
-
9-2. 현금영수증 발행 취소
|
|
68
|
-
|
|
69
|
-
9-3. (별건) 현금영수증 발행
|
|
70
83
|
|
|
71
|
-
|
|
72
|
-
## pypi로 설치하기
|
|
84
|
+
## 환경변수 설정
|
|
73
85
|
|
|
86
|
+
예제와 테스트는 각 SDK 루트의 `.env` 파일을 우선 읽습니다. 먼저 `.env.example`을 복사한 뒤 필요한 키만 변경하세요. `.env`는 gitignore 처리되어 커밋되지 않습니다.
|
|
74
87
|
|
|
88
|
+
```bash
|
|
89
|
+
cp .env.example .env
|
|
90
|
+
# BOOTPAY_ENV=production 또는 development
|
|
75
91
|
```
|
|
76
|
-
|
|
92
|
+
|
|
93
|
+
주요 변수:
|
|
94
|
+
|
|
95
|
+
```env
|
|
96
|
+
BOOTPAY_ENV=production
|
|
97
|
+
BOOTPAY_PG_CLIENT_KEY_PROD=...
|
|
98
|
+
BOOTPAY_PG_SECRET_KEY_PROD=...
|
|
99
|
+
BOOTPAY_PG_CLIENT_KEY_DEV=...
|
|
100
|
+
BOOTPAY_PG_SECRET_KEY_DEV=...
|
|
101
|
+
BOOTPAY_COMMERCE_CLIENT_KEY_PROD=...
|
|
102
|
+
BOOTPAY_COMMERCE_SECRET_KEY_PROD=...
|
|
103
|
+
BOOTPAY_COMMERCE_CLIENT_KEY_DEV=...
|
|
104
|
+
BOOTPAY_COMMERCE_SECRET_KEY_DEV=...
|
|
77
105
|
```
|
|
78
106
|
|
|
107
|
+
변수가 없으면 SDK 테스트용 기본값(NodeJS 기준 ck/sk)으로 fallback 합니다.
|
|
108
|
+
|
|
79
109
|
# 사용하기
|
|
80
110
|
|
|
111
|
+
> 권장 인증 방식은 `client_key/secret_key`입니다. 기존 positional `application_id/private_key` 방식도 계속 지원됩니다.
|
|
112
|
+
|
|
81
113
|
```python
|
|
82
114
|
|
|
115
|
+
import os
|
|
83
116
|
from bootpay_backend import BootpayBackend
|
|
84
117
|
|
|
85
|
-
bootpay = BootpayBackend('
|
|
118
|
+
bootpay = BootpayBackend(client_key=os.getenv('BOOTPAY_PG_CLIENT_KEY_PROD'), secret_key=os.getenv('BOOTPAY_PG_SECRET_KEY_PROD'))
|
|
86
119
|
|
|
87
120
|
token = bootpay.get_access_token()
|
|
88
121
|
if 'error_code' not in token:
|
|
@@ -91,13 +124,13 @@ if 'error_code' not in token:
|
|
|
91
124
|
```
|
|
92
125
|
|
|
93
126
|
|
|
94
|
-
## 1.
|
|
127
|
+
## 1. 토큰 발급
|
|
95
128
|
|
|
96
129
|
부트페이와 서버간 통신을 하기 위해서는 부트페이 서버로부터 토큰을 발급받아야 합니다.
|
|
97
130
|
발급된 토큰은 30분간 유효하며, 최초 발급일로부터 30분이 지날 경우 토큰 발급 함수를 재호출 해주셔야 합니다.
|
|
98
131
|
|
|
99
132
|
```python
|
|
100
|
-
bootpay = BootpayBackend('
|
|
133
|
+
bootpay = BootpayBackend(client_key=os.getenv('BOOTPAY_PG_CLIENT_KEY_PROD'), secret_key=os.getenv('BOOTPAY_PG_SECRET_KEY_PROD'))
|
|
101
134
|
|
|
102
135
|
token = bootpay.get_access_token()
|
|
103
136
|
if 'error_code' not in token:
|
|
@@ -137,7 +170,9 @@ if 'error_code' not in response:
|
|
|
137
170
|
print(response)
|
|
138
171
|
```
|
|
139
172
|
|
|
140
|
-
## 4
|
|
173
|
+
## 4. 자동/빌링/정기 결제
|
|
174
|
+
|
|
175
|
+
## 4-1. 카드 빌링키 발급
|
|
141
176
|
REST API 방식으로 고객으로부터 카드 정보를 전달하여, PG사에게 빌링키를 발급받을 수 있습니다.
|
|
142
177
|
발급받은 빌링키를 저장하고 있다가, 원하는 시점, 원하는 금액에 결제 승인 요청하여 좀 더 자유로운 결제시나리오에 적용이 가능합니다.
|
|
143
178
|
* 비인증 정기결제(REST API) 방식을 지원하는 PG사만 사용 가능합니다.
|
|
@@ -158,7 +193,34 @@ if 'error_code' not in response:
|
|
|
158
193
|
print(response)
|
|
159
194
|
```
|
|
160
195
|
|
|
161
|
-
|
|
196
|
+
|
|
197
|
+
## 4-2. 계좌 빌링키 발급
|
|
198
|
+
REST API 방식으로 고객의 계좌 정보를 전달하여, PG사에게 빌링키 발급을 요청합니다. 요청 후 빌링키가 바로 발급되진 않고, 출금동의 확인 절차까지 진행해야 빌링키가 발급됩니다.
|
|
199
|
+
먼저 빌링키를 요청합니다.
|
|
200
|
+
```python
|
|
201
|
+
response = bootpay.request_subscribe_automatic_transfer_billing_key(
|
|
202
|
+
pg="나이스페이",
|
|
203
|
+
order_name='테스트결제',
|
|
204
|
+
subscription_id=str(time.time()),
|
|
205
|
+
price=1000,
|
|
206
|
+
username='홍길동',
|
|
207
|
+
bank_name='국민',
|
|
208
|
+
bank_account='67560123412342472',
|
|
209
|
+
identity_no='901014',
|
|
210
|
+
cash_receipt_identity_no='01012341234',
|
|
211
|
+
phone='01012341234'
|
|
212
|
+
)
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
이후 빌링키 발급 요청시 응답받은 receipt_id로, 출금 동의 확인을 요청합니다.
|
|
216
|
+
```python
|
|
217
|
+
response = bootpay.publish_automatic_transfer_billing_key(
|
|
218
|
+
receipt_id="66542d4be86c1eedf6b17965",
|
|
219
|
+
)
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
## 4-3. 결제 요청하기
|
|
162
224
|
발급된 빌링키로 원하는 시점에 원하는 금액으로 결제 승인 요청을 할 수 있습니다. 잔액이 부족하거나 도난 카드 등의 특별한 건이 아니면 PG사에서 결제를 바로 승인합니다.
|
|
163
225
|
|
|
164
226
|
```python
|
|
@@ -177,7 +239,7 @@ if 'error_code' not in response:
|
|
|
177
239
|
# 요청 성공
|
|
178
240
|
print(response)
|
|
179
241
|
```
|
|
180
|
-
## 4-
|
|
242
|
+
## 4-4. 결제 예약하기
|
|
181
243
|
원하는 시점에 4-1로 결제 승인 요청을 보내도 되지만, 빌링키 발급 이후에 바로 결제 예약 할 수 있습니다. (빌링키당 최대 10건)
|
|
182
244
|
```python
|
|
183
245
|
response = bootpay.subscribe_payment_reserve(
|
|
@@ -198,8 +260,15 @@ if 'error_code' not in response:
|
|
|
198
260
|
print(response)
|
|
199
261
|
```
|
|
200
262
|
|
|
201
|
-
## 4-
|
|
202
|
-
|
|
263
|
+
## 4-5. 예약 조회하기
|
|
264
|
+
예약시 응답받은 reserveId로 예약된 건을 조회합니다.
|
|
265
|
+
```python
|
|
266
|
+
response = bootpay.subscribe_payment_reserve_lookup('6490149ca575b40024f0b70d')
|
|
267
|
+
print(response)
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
## 4-6. 예약 취소하기
|
|
271
|
+
예약시 응답받은 reserveId로 예약된 건을 취소합니다.
|
|
203
272
|
```python
|
|
204
273
|
result = bootpay.cancel_subscribe_reserve(
|
|
205
274
|
'612debc70d681b0039e6133d'
|
|
@@ -209,8 +278,8 @@ if 'error_code' not in response:
|
|
|
209
278
|
print(response)
|
|
210
279
|
```
|
|
211
280
|
|
|
212
|
-
## 4-
|
|
213
|
-
발급된
|
|
281
|
+
## 4-7. 빌링키 삭제하기
|
|
282
|
+
발급된 빌링키를 삭제합니다. 삭제하더라도 예약된 결제건은 취소되지 않습니다. 예약된 결제건 취소를 원하시면 예약 취소하기를 요청하셔야 합니다.
|
|
214
283
|
```python
|
|
215
284
|
response = bootpay.destroy_billing_key(
|
|
216
285
|
billing_key='62b2c3cfd01c7e001cc20a85',
|
|
@@ -220,19 +289,24 @@ if 'error_code' not in response:
|
|
|
220
289
|
print(response)
|
|
221
290
|
```
|
|
222
291
|
|
|
223
|
-
## 4-
|
|
224
|
-
|
|
292
|
+
## 4-8. 빌링키 조회하기
|
|
293
|
+
클라이언트에서 빌링키 발급시, 보안상 클라이언트 이벤트에 빌링키를 전달해주지 않습니다. 그러므로 이 API를 통해 조회해야 합니다.
|
|
294
|
+
다음은 빌링키 발급 요청했던 receiptId 로 빌링키를 조회합니다.
|
|
225
295
|
```python
|
|
226
296
|
response = bootpay.lookup_subscribe_billing_key('62b2c3c2d01c7e001bc20b10')
|
|
227
297
|
if 'error_code' not in response:
|
|
228
298
|
# 요청 성공
|
|
229
299
|
print(response)
|
|
230
300
|
```
|
|
301
|
+
아래는 billingKey로 조회합니다.
|
|
302
|
+
```python
|
|
303
|
+
response = bootpay.lookup_billing_key('66542dfb4d18d5fc7b43e1b6')
|
|
304
|
+
print(response)
|
|
305
|
+
```
|
|
231
306
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
이 토큰값을 기반으로 클라이언트에서 결제요청 하시면 되겠습니다.
|
|
307
|
+
## 5. 회원 토큰 발급요청
|
|
308
|
+
ㅇㅇ페이 사용을 위해 가맹점 회원의 토큰을 발급합니다. 가맹점은 회원의 고유번호를 관리해야합니다.
|
|
309
|
+
이 토큰값을 기반으로 클라이언트에서 결제요청(payload.user_token) 하시면 되겠습니다.
|
|
236
310
|
```python
|
|
237
311
|
result = bootpay.request_user_token({
|
|
238
312
|
'user_id': '12341-234',
|
|
@@ -370,7 +444,7 @@ if 'error_code' not in token:
|
|
|
370
444
|
|
|
371
445
|
## Documentation
|
|
372
446
|
|
|
373
|
-
[부트페이 개발매뉴얼](https://
|
|
447
|
+
[부트페이 개발매뉴얼](https://developer.bootpay.co.kr/)을 참조해주세요
|
|
374
448
|
|
|
375
449
|
## 기술문의
|
|
376
450
|
|
|
@@ -7,52 +7,75 @@ Python 언어로 작성된 어플리케이션, 프레임워크 등에서 사용
|
|
|
7
7
|
* PG 결제창 연동은 클라이언트 라이브러리에서 수행됩니다. (Javascript, Android, iOS, React Native, Flutter 등)
|
|
8
8
|
* 결제 검증 및 취소, 빌링키 발급, 본인인증 등의 수행은 서버사이드에서 진행됩니다. (Java, PHP, Python, Ruby, Node.js, Go, ASP.NET 등)
|
|
9
9
|
|
|
10
|
+
## 목차
|
|
11
|
+
- [사용하기](#사용하기)
|
|
12
|
+
- [1. 토큰 발급](#1-토큰-발급)
|
|
13
|
+
- [2. 결제 단건 조회](#2-결제-단건-조회)
|
|
14
|
+
- [3. 결제 취소 (전액 취소 / 부분 취소)](#3-결제-취소-전액-취소--부분-취소)
|
|
15
|
+
- [4. 자동/빌링/정기 결제](#4-자동빌링정기-결제)
|
|
16
|
+
- [4-1. 카드 빌링키 발급](#4-1-카드-빌링키-발급)
|
|
17
|
+
- [4-2. 계좌 빌링키 발급](#4-2-계좌-빌링키-발급)
|
|
18
|
+
- [4-3. 결제 요청하기](#4-3-결제-요청하기)
|
|
19
|
+
- [4-4. 결제 예약하기](#4-4-결제-예약하기)
|
|
20
|
+
- [4-5. 예약 조회하기](#4-5-예약-조회하기)
|
|
21
|
+
- [4-6. 예약 취소하기](#4-6-예약-취소하기)
|
|
22
|
+
- [4-7. 빌링키 삭제하기](#4-7-빌링키-삭제하기)
|
|
23
|
+
- [4-8. 빌링키 조회하기](#4-8-빌링키-조회하기)
|
|
24
|
+
- [5. 회원 토큰 발급요청](#5-회원-토큰-발급요청)
|
|
25
|
+
- [6. 서버 승인 요청](#6-서버-승인-요청)
|
|
26
|
+
- [7. 본인 인증 결과 조회](#7-본인-인증-결과-조회)
|
|
27
|
+
- [8. 에스크로 이용시 PG사로 배송정보 보내기](#8-에스크로-이용시-pg사로-배송정보-보내기)
|
|
28
|
+
- [9-1. 현금영수증 발행하기](#9-1-현금영수증-발행하기)
|
|
29
|
+
- [9-2. 현금영수증 발행 취소](#9-2-현금영수증-발행-취소)
|
|
30
|
+
- [9-3. 별건 현금영수증 발행](#9-3-별건-현금영수증-발행)
|
|
31
|
+
- [9-4. 별건 현금영수증 발행 취소](#9-4-별건-현금영수증-발행-취소)
|
|
32
|
+
- [Example 프로젝트](#example-프로젝트)
|
|
33
|
+
- [Documentation](#documentation)
|
|
34
|
+
- [기술문의](#기술문의)
|
|
35
|
+
- [License](#license)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## pypi로 설치하기
|
|
39
|
+
```
|
|
40
|
+
pip install bootpay-backend
|
|
41
|
+
```
|
|
10
42
|
|
|
11
|
-
## 기능
|
|
12
|
-
1. (부트페이 통신을 위한) 토큰 발급
|
|
13
|
-
2. 결제 단건 조회
|
|
14
|
-
3. 결제 취소 (전액 취소 / 부분 취소)
|
|
15
|
-
4. 신용카드 자동결제 (빌링결제)
|
|
16
|
-
|
|
17
|
-
4-1. 빌링키 발급
|
|
18
|
-
|
|
19
|
-
4-2. 발급된 빌링키로 결제 승인 요청
|
|
20
|
-
|
|
21
|
-
4-3. 발급된 빌링키로 결제 예약 요청
|
|
22
|
-
|
|
23
|
-
4-4. 발급된 빌링키로 결제 예약 - 취소 요청
|
|
24
|
-
|
|
25
|
-
4-5. 빌링키 삭제
|
|
26
|
-
|
|
27
|
-
4-6. 빌링키 조회
|
|
28
|
-
|
|
29
|
-
5. (생체인증, 비밀번호 결제를 위한) 구매자 토큰 발급
|
|
30
|
-
6. 서버 승인 요청
|
|
31
|
-
7. 본인 인증 결과 조회
|
|
32
|
-
8. (에스크로 이용시) PG사로 배송정보 보내기
|
|
33
|
-
9. 현금영수증 발행
|
|
34
|
-
|
|
35
|
-
9-1. 현금영수증 발행
|
|
36
|
-
|
|
37
|
-
9-2. 현금영수증 발행 취소
|
|
38
|
-
|
|
39
|
-
9-3. (별건) 현금영수증 발행
|
|
40
43
|
|
|
41
|
-
|
|
42
|
-
## pypi로 설치하기
|
|
44
|
+
## 환경변수 설정
|
|
43
45
|
|
|
46
|
+
예제와 테스트는 각 SDK 루트의 `.env` 파일을 우선 읽습니다. 먼저 `.env.example`을 복사한 뒤 필요한 키만 변경하세요. `.env`는 gitignore 처리되어 커밋되지 않습니다.
|
|
44
47
|
|
|
48
|
+
```bash
|
|
49
|
+
cp .env.example .env
|
|
50
|
+
# BOOTPAY_ENV=production 또는 development
|
|
45
51
|
```
|
|
46
|
-
|
|
52
|
+
|
|
53
|
+
주요 변수:
|
|
54
|
+
|
|
55
|
+
```env
|
|
56
|
+
BOOTPAY_ENV=production
|
|
57
|
+
BOOTPAY_PG_CLIENT_KEY_PROD=...
|
|
58
|
+
BOOTPAY_PG_SECRET_KEY_PROD=...
|
|
59
|
+
BOOTPAY_PG_CLIENT_KEY_DEV=...
|
|
60
|
+
BOOTPAY_PG_SECRET_KEY_DEV=...
|
|
61
|
+
BOOTPAY_COMMERCE_CLIENT_KEY_PROD=...
|
|
62
|
+
BOOTPAY_COMMERCE_SECRET_KEY_PROD=...
|
|
63
|
+
BOOTPAY_COMMERCE_CLIENT_KEY_DEV=...
|
|
64
|
+
BOOTPAY_COMMERCE_SECRET_KEY_DEV=...
|
|
47
65
|
```
|
|
48
66
|
|
|
67
|
+
변수가 없으면 SDK 테스트용 기본값(NodeJS 기준 ck/sk)으로 fallback 합니다.
|
|
68
|
+
|
|
49
69
|
# 사용하기
|
|
50
70
|
|
|
71
|
+
> 권장 인증 방식은 `client_key/secret_key`입니다. 기존 positional `application_id/private_key` 방식도 계속 지원됩니다.
|
|
72
|
+
|
|
51
73
|
```python
|
|
52
74
|
|
|
75
|
+
import os
|
|
53
76
|
from bootpay_backend import BootpayBackend
|
|
54
77
|
|
|
55
|
-
bootpay = BootpayBackend('
|
|
78
|
+
bootpay = BootpayBackend(client_key=os.getenv('BOOTPAY_PG_CLIENT_KEY_PROD'), secret_key=os.getenv('BOOTPAY_PG_SECRET_KEY_PROD'))
|
|
56
79
|
|
|
57
80
|
token = bootpay.get_access_token()
|
|
58
81
|
if 'error_code' not in token:
|
|
@@ -61,13 +84,13 @@ if 'error_code' not in token:
|
|
|
61
84
|
```
|
|
62
85
|
|
|
63
86
|
|
|
64
|
-
## 1.
|
|
87
|
+
## 1. 토큰 발급
|
|
65
88
|
|
|
66
89
|
부트페이와 서버간 통신을 하기 위해서는 부트페이 서버로부터 토큰을 발급받아야 합니다.
|
|
67
90
|
발급된 토큰은 30분간 유효하며, 최초 발급일로부터 30분이 지날 경우 토큰 발급 함수를 재호출 해주셔야 합니다.
|
|
68
91
|
|
|
69
92
|
```python
|
|
70
|
-
bootpay = BootpayBackend('
|
|
93
|
+
bootpay = BootpayBackend(client_key=os.getenv('BOOTPAY_PG_CLIENT_KEY_PROD'), secret_key=os.getenv('BOOTPAY_PG_SECRET_KEY_PROD'))
|
|
71
94
|
|
|
72
95
|
token = bootpay.get_access_token()
|
|
73
96
|
if 'error_code' not in token:
|
|
@@ -107,7 +130,9 @@ if 'error_code' not in response:
|
|
|
107
130
|
print(response)
|
|
108
131
|
```
|
|
109
132
|
|
|
110
|
-
## 4
|
|
133
|
+
## 4. 자동/빌링/정기 결제
|
|
134
|
+
|
|
135
|
+
## 4-1. 카드 빌링키 발급
|
|
111
136
|
REST API 방식으로 고객으로부터 카드 정보를 전달하여, PG사에게 빌링키를 발급받을 수 있습니다.
|
|
112
137
|
발급받은 빌링키를 저장하고 있다가, 원하는 시점, 원하는 금액에 결제 승인 요청하여 좀 더 자유로운 결제시나리오에 적용이 가능합니다.
|
|
113
138
|
* 비인증 정기결제(REST API) 방식을 지원하는 PG사만 사용 가능합니다.
|
|
@@ -128,7 +153,34 @@ if 'error_code' not in response:
|
|
|
128
153
|
print(response)
|
|
129
154
|
```
|
|
130
155
|
|
|
131
|
-
|
|
156
|
+
|
|
157
|
+
## 4-2. 계좌 빌링키 발급
|
|
158
|
+
REST API 방식으로 고객의 계좌 정보를 전달하여, PG사에게 빌링키 발급을 요청합니다. 요청 후 빌링키가 바로 발급되진 않고, 출금동의 확인 절차까지 진행해야 빌링키가 발급됩니다.
|
|
159
|
+
먼저 빌링키를 요청합니다.
|
|
160
|
+
```python
|
|
161
|
+
response = bootpay.request_subscribe_automatic_transfer_billing_key(
|
|
162
|
+
pg="나이스페이",
|
|
163
|
+
order_name='테스트결제',
|
|
164
|
+
subscription_id=str(time.time()),
|
|
165
|
+
price=1000,
|
|
166
|
+
username='홍길동',
|
|
167
|
+
bank_name='국민',
|
|
168
|
+
bank_account='67560123412342472',
|
|
169
|
+
identity_no='901014',
|
|
170
|
+
cash_receipt_identity_no='01012341234',
|
|
171
|
+
phone='01012341234'
|
|
172
|
+
)
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
이후 빌링키 발급 요청시 응답받은 receipt_id로, 출금 동의 확인을 요청합니다.
|
|
176
|
+
```python
|
|
177
|
+
response = bootpay.publish_automatic_transfer_billing_key(
|
|
178
|
+
receipt_id="66542d4be86c1eedf6b17965",
|
|
179
|
+
)
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
## 4-3. 결제 요청하기
|
|
132
184
|
발급된 빌링키로 원하는 시점에 원하는 금액으로 결제 승인 요청을 할 수 있습니다. 잔액이 부족하거나 도난 카드 등의 특별한 건이 아니면 PG사에서 결제를 바로 승인합니다.
|
|
133
185
|
|
|
134
186
|
```python
|
|
@@ -147,7 +199,7 @@ if 'error_code' not in response:
|
|
|
147
199
|
# 요청 성공
|
|
148
200
|
print(response)
|
|
149
201
|
```
|
|
150
|
-
## 4-
|
|
202
|
+
## 4-4. 결제 예약하기
|
|
151
203
|
원하는 시점에 4-1로 결제 승인 요청을 보내도 되지만, 빌링키 발급 이후에 바로 결제 예약 할 수 있습니다. (빌링키당 최대 10건)
|
|
152
204
|
```python
|
|
153
205
|
response = bootpay.subscribe_payment_reserve(
|
|
@@ -168,8 +220,15 @@ if 'error_code' not in response:
|
|
|
168
220
|
print(response)
|
|
169
221
|
```
|
|
170
222
|
|
|
171
|
-
## 4-
|
|
172
|
-
|
|
223
|
+
## 4-5. 예약 조회하기
|
|
224
|
+
예약시 응답받은 reserveId로 예약된 건을 조회합니다.
|
|
225
|
+
```python
|
|
226
|
+
response = bootpay.subscribe_payment_reserve_lookup('6490149ca575b40024f0b70d')
|
|
227
|
+
print(response)
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## 4-6. 예약 취소하기
|
|
231
|
+
예약시 응답받은 reserveId로 예약된 건을 취소합니다.
|
|
173
232
|
```python
|
|
174
233
|
result = bootpay.cancel_subscribe_reserve(
|
|
175
234
|
'612debc70d681b0039e6133d'
|
|
@@ -179,8 +238,8 @@ if 'error_code' not in response:
|
|
|
179
238
|
print(response)
|
|
180
239
|
```
|
|
181
240
|
|
|
182
|
-
## 4-
|
|
183
|
-
발급된
|
|
241
|
+
## 4-7. 빌링키 삭제하기
|
|
242
|
+
발급된 빌링키를 삭제합니다. 삭제하더라도 예약된 결제건은 취소되지 않습니다. 예약된 결제건 취소를 원하시면 예약 취소하기를 요청하셔야 합니다.
|
|
184
243
|
```python
|
|
185
244
|
response = bootpay.destroy_billing_key(
|
|
186
245
|
billing_key='62b2c3cfd01c7e001cc20a85',
|
|
@@ -190,19 +249,24 @@ if 'error_code' not in response:
|
|
|
190
249
|
print(response)
|
|
191
250
|
```
|
|
192
251
|
|
|
193
|
-
## 4-
|
|
194
|
-
|
|
252
|
+
## 4-8. 빌링키 조회하기
|
|
253
|
+
클라이언트에서 빌링키 발급시, 보안상 클라이언트 이벤트에 빌링키를 전달해주지 않습니다. 그러므로 이 API를 통해 조회해야 합니다.
|
|
254
|
+
다음은 빌링키 발급 요청했던 receiptId 로 빌링키를 조회합니다.
|
|
195
255
|
```python
|
|
196
256
|
response = bootpay.lookup_subscribe_billing_key('62b2c3c2d01c7e001bc20b10')
|
|
197
257
|
if 'error_code' not in response:
|
|
198
258
|
# 요청 성공
|
|
199
259
|
print(response)
|
|
200
260
|
```
|
|
261
|
+
아래는 billingKey로 조회합니다.
|
|
262
|
+
```python
|
|
263
|
+
response = bootpay.lookup_billing_key('66542dfb4d18d5fc7b43e1b6')
|
|
264
|
+
print(response)
|
|
265
|
+
```
|
|
201
266
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
이 토큰값을 기반으로 클라이언트에서 결제요청 하시면 되겠습니다.
|
|
267
|
+
## 5. 회원 토큰 발급요청
|
|
268
|
+
ㅇㅇ페이 사용을 위해 가맹점 회원의 토큰을 발급합니다. 가맹점은 회원의 고유번호를 관리해야합니다.
|
|
269
|
+
이 토큰값을 기반으로 클라이언트에서 결제요청(payload.user_token) 하시면 되겠습니다.
|
|
206
270
|
```python
|
|
207
271
|
result = bootpay.request_user_token({
|
|
208
272
|
'user_id': '12341-234',
|
|
@@ -340,7 +404,7 @@ if 'error_code' not in token:
|
|
|
340
404
|
|
|
341
405
|
## Documentation
|
|
342
406
|
|
|
343
|
-
[부트페이 개발매뉴얼](https://
|
|
407
|
+
[부트페이 개발매뉴얼](https://developer.bootpay.co.kr/)을 참조해주세요
|
|
344
408
|
|
|
345
409
|
## 기술문의
|
|
346
410
|
|