구독 계약의 중도 인수를 요청해요. 기존 구독자가 남은 기간에 대한 구매 요청을 하면, 관리자 승인 후 처리돼요.
API 엔드포인트
POST
https://api.bootapi.com/v1/order_subscriptions/requests/ing/purchaseBasic Auth사용자 요청 vs 관리자 요청
| 구분 | 사용자 요청 | 관리자 요청 |
|---|---|---|
| 호출 주체 | 고객 (사용자 토큰) | 관리자 (관리자 토큰) |
| 승인 필요 | 예 | 설정에 따라 즉시 처리 가능 |
| 금액 조정 | 불가 | 가능 |
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
order_subscription_id |
String | 필수 | 구독 계약 ID |
price |
Number | 선택 | 인수 금액 (미입력 시 자동 계산) |
tax_free_price |
Number | 선택 | 비과세 금액 |
reason |
String | 선택 | 요청 사유 |
금액 계산
price를 생략하면 남은 기간과 구독 금액을 기반으로 자동 계산돼요.
코드 예제
curl -X POST "https://api.bootapi.com/v1/order_subscriptions/requests/ing/purchase" \
-H "Authorization: Basic {base64(client_key:secret_key)}" \
-H "Content-Type: application/json" \
-d '{
"order_subscription_id": "sub_abc123",
"reason": "중도 인수 요청"
}'bashconst { BootpayCommerce } = require('@bootpay/backend-js');
const commerce = new BootpayCommerce({
client_key: '{client_key}',
secret_key: '{secret_key}'
});
const response = await commerce.orderSubscriptionRequest.purchase({
order_subscription_id: 'sub_abc123',
reason: '중도 인수 요청'
});
console.log(response);javascriptfrom bootpay_backend.commerce import BootpayCommerce
commerce = BootpayCommerce('{client_key}', '{secret_key}')
response = commerce.order_subscription_request_purchase({
'order_subscription_id': 'sub_abc123',
'reason': '중도 인수 요청'
})
print(response)pythonuse Bootpay\ServerPhp\BootpayCommerceApi;
$commerce = new BootpayCommerceApi("{client_key}", "{secret_key}");
$response = $commerce->orderSubscriptionRequestPurchase([
'order_subscription_id' => 'sub_abc123',
'reason' => '중도 인수 요청'
]);
print_r($response);phpBootpayCommerceApi commerce = new BootpayCommerceApi("{client_key}", "{secret_key}");
HashMap<String, Object> params = new HashMap<>();
params.put("order_subscription_id", "sub_abc123");
params.put("reason", "중도 인수 요청");
HashMap<String, Object> response = commerce.orderSubscriptionRequestPurchase(params);
System.out.println(response);javacommerce = BootpayStore::Api.new('{client_key}', '{secret_key}')
response = commerce.order_subscription_request_purchase({
order_subscription_id: 'sub_abc123',
reason: '중도 인수 요청'
})
puts responserubycommerce := bootpay.NewCommerceApi("{client_key}", "{secret_key}")
response, err := commerce.OrderSubscriptionRequestPurchase(map[string]interface{}{
"order_subscription_id": "sub_abc123",
"reason": "중도 인수 요청",
})
fmt.Println(response)govar commerce = new BootpayCommerceApi("{client_key}", "{secret_key}");
var response = await commerce.OrderSubscriptionRequestPurchase(new {
order_subscription_id = "sub_abc123",
reason = "중도 인수 요청"
});
Console.WriteLine(response);csharp응답
{
"id": "req_purchase_001",
"status": 0,
"request_type": 2,
"purchase_price": 75000,
"remaining_amount": 75000
}json응답 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
| id | String | 요청 고유 ID |
| status | Integer | 요청 상태 (0: 대기, 1: 승인, -1: 거절) |
| request_type | Integer | 요청 유형 (2: 중도 인수) |
| purchase_price | Number | 인수 금액 |
| remaining_amount | Number | 남은 계약 금액 |
에러 코드
공통 에러
인증·권한 관련 에러는 에러 코드표를 참고해요.
| 코드 | 메시지 | 대처 방법 |
|---|---|---|
ORDER_SUBSCRIPTION_PURCHASE_NOT_ALLOWED |
해당 구독계약은 중도인수가 가능하도록 설정되지 않은 계약이에요. | 구독 설정을 확인해요 |
ORDER_SUBSCRIPTION_PURCHASE_STATUS_INVALID |
중도인수가 가능한 상태가 아니에요. | 구독 상태를 확인해요 |
ORDER_SUBSCRIPTION_PURCHASE_REQUEST_DUPLICATE |
이미 대기 중인 중도인수 요청이 있어요. 관리자가 처리 중이니 잠시만 기다려라. | 기존 요청 처리를 기다려라 |
