대기 상태(status=0)의 구독 계약을 거절하는 API예요. 거절된 구독은 관리자 중단(status=-11) 상태로 변경되며, 더 이상 진행되지 않아요.
API 엔드포인트
POST
https://api.bootapi.com/v1/order_subscriptions/:id/rejectBearer Token (supervisor)관리자 권한 필요
이 API는 supervisor 권한이 필요해요. 관리자 토큰으로 요청해요.
거절 vs 해지
거절은 승인 전 대기 상태의 구독을 취소하는 것이고, 해지는 이미 진행 중인 구독을 중단하는 것이에요. 진행 중인 구독을 중단하려면 해지 요청을 사용해요.
거절 시나리오
- 구독 요청 → 계약 대기(
status=0) 상태로 생성 - 관리자가 거절 API 호출 (사유 입력)
- 관리자 중단(
status=-11) 상태로 변경 - 고객에게 거절 알림 발송 (설정에 따라)
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
order_subscription_id |
String | 필수 | 구독 계약 고유 번호 또는 external_uid (URL 파라미터) |
reason |
String | 선택 | 거절 사유 |
코드 예제
# 부트페이 ID로 거절
curl -X POST "https://api.bootapi.com/v1/order_subscriptions/{order_subscription_id}/reject" \
-H "Authorization: Basic {base64(client_key:secret_key)}" \
-H "Content-Type: application/json" \
-d '{
"reason": "재고 부족으로 인한 구독 거절"
}'
# 가맹점 external_uid로 거절
curl -X POST "https://api.bootapi.com/v1/order_subscriptions/my_subscription_12345/reject" \
-H "Authorization: Basic {base64(client_key:secret_key)}" \
-H "Content-Type: application/json" \
-d '{
"reason": "재고 부족으로 인한 구독 거절"
}'bashconst { BootpayCommerce } = require('@bootpay/backend-js');
const commerce = new BootpayCommerce({
client_key: '{client_key}',
secret_key: '{secret_key}'
});
// 부트페이 ID로 거절
const response = await commerce.orderSubscription.reject('687a1b2c3d4e5f6789012345', {
reason: '재고 부족으로 인한 구독 거절'
});
// 또는 가맹점 external_uid로 거절
const response2 = await commerce.orderSubscription.reject('my_subscription_12345', {
reason: '재고 부족으로 인한 구독 거절'
});
console.log(response);javascriptfrom bootpay_backend.commerce import BootpayCommerce
commerce = BootpayCommerce('{client_key}', '{secret_key}')
# 부트페이 ID로 거절
response = commerce.order_subscription_reject('687a1b2c3d4e5f6789012345', {
'reason': '재고 부족으로 인한 구독 거절'
})
# 또는 가맹점 external_uid로 거절
response2 = commerce.order_subscription_reject('my_subscription_12345', {
'reason': '재고 부족으로 인한 구독 거절'
})
print(response)pythonuse Bootpay\ServerPhp\BootpayCommerceApi;
$commerce = new BootpayCommerceApi("{client_key}", "{secret_key}");
// 부트페이 ID로 거절
$response = $commerce->orderSubscriptionReject('687a1b2c3d4e5f6789012345', [
'reason' => '재고 부족으로 인한 구독 거절'
]);
// 또는 가맹점 external_uid로 거절
$response2 = $commerce->orderSubscriptionReject('my_subscription_12345', [
'reason' => '재고 부족으로 인한 구독 거절'
]);
print_r($response);phpBootpayCommerceApi commerce = new BootpayCommerceApi("{client_key}", "{secret_key}");
HashMap<String, Object> params = new HashMap<>();
params.put("reason", "재고 부족으로 인한 구독 거절");
// 부트페이 ID로 거절
HashMap<String, Object> response = commerce.orderSubscriptionReject("687a1b2c3d4e5f6789012345", params);
// 또는 가맹점 external_uid로 거절
HashMap<String, Object> response2 = commerce.orderSubscriptionReject("my_subscription_12345", params);
System.out.println(response);javacommerce = BootpayStore::Api.new('{client_key}', '{secret_key}')
# 부트페이 ID로 거절
response = commerce.order_subscription_reject('687a1b2c3d4e5f6789012345', {
reason: '재고 부족으로 인한 구독 거절'
})
# 또는 가맹점 external_uid로 거절
response2 = commerce.order_subscription_reject('my_subscription_12345', {
reason: '재고 부족으로 인한 구독 거절'
})
puts responserubycommerce := bootpay.NewCommerceApi("{client_key}", "{secret_key}")
// 부트페이 ID로 거절
response, err := commerce.OrderSubscriptionReject("687a1b2c3d4e5f6789012345", map[string]interface{}{
"reason": "재고 부족으로 인한 구독 거절",
})
// 또는 가맹점 external_uid로 거절
response2, err := commerce.OrderSubscriptionReject("my_subscription_12345", map[string]interface{}{
"reason": "재고 부족으로 인한 구독 거절",
})
fmt.Println(response)govar commerce = new BootpayCommerceApi("{client_key}", "{secret_key}");
// 부트페이 ID로 거절
var response = await commerce.OrderSubscriptionReject("687a1b2c3d4e5f6789012345", new {
reason = "재고 부족으로 인한 구독 거절"
});
// 또는 가맹점 external_uid로 거절
var response2 = await commerce.OrderSubscriptionReject("my_subscription_12345", new {
reason = "재고 부족으로 인한 구독 거절"
});
Console.WriteLine(response);csharp응답
성공 응답
{
"id": "687a1b2c3d4e5f6789012345",
"status": -11,
"rejected_at": "2025-07-11T14:30:00Z",
"reject_reason": "재고 부족으로 인한 구독 거절"
}json응답 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
| id | String | 구독 계약 고유 ID |
| status | Number | 변경된 구독 상태 (-11: 관리자 중단) |
| rejected_at | String | 거절 일시 |
| reject_reason | String | 거절 사유 |
에러 코드
공통 에러
인증·권한 관련 에러는 에러 코드표를 참고해요.
| 코드 | 메시지 | 대처 방법 |
|---|---|---|
ORDER_SUBSCRIPTION_NOT_FOUND |
구독결제 건을 찾을 수 없어요. | order_subscription_id를 확인해요 |
ORDER_SUBSCRIPTION_REJECT_REASON_BLANK |
구독 거절 시 거절 사유는 필수예요. 거절 사유를 입력해요. | reason 파라미터를 입력해요 |
