일시정지된 구독을 재개해요. 재개 후 다음 결제 주기부터 자동 결제가 다시 시작돼요.
API 엔드포인트
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
order_subscription_id |
String | 필수 | 구독 계약 고유 번호 |
user_id |
String | 선택 | 로그인한 회원 ID 또는 이 몰의 외부 회원 ID. 보내면 구독 소유자와 대조해요. Bootpay-User-JWT 헤더로 보내도 돼요 |
reason |
String | 선택 | 재개 요청 사유 |
코드 예제
const { BootpayCommerce } = require('@bootpay/backend-js')
const commerce = new BootpayCommerce({
client_key: 'your-commerce-client-key',
secret_key: 'your-commerce-secret-key',
mode: 'production'
})
const response = await commerce.orderSubscription.requestResume({
order_subscription_id: '687a1b2c3d4e5f6789012345',
reason: '일시정지 사유 해소로 재개 요청'
})
console.log(response)javascriptfrom bootpay_backend import BootpayCommerce
commerce = BootpayCommerce(
client_key='your-commerce-client-key',
secret_key='your-commerce-secret-key',
mode='production'
)
response = commerce.order_subscription.request_resume(
order_subscription_id='687a1b2c3d4e5f6789012345',
reason='일시정지 사유 해소로 재개 요청'
)
print(response)pythonuse Bootpay\ServerPhp\BootpayCommerceApi;
$commerce = new BootpayCommerceApi("your-commerce-client-key", "your-commerce-secret-key");
$response = $commerce->orderSubscription->requestResume([
'order_subscription_id' => '687a1b2c3d4e5f6789012345',
'reason' => '일시정지 사유 해소로 재개 요청'
]);
print_r($response);phpimport kr.co.bootpay.store.BootpayStore;
import kr.co.bootpay.store.model.request.TokenPayload;
import kr.co.bootpay.store.model.response.BootpayStoreResponse;
import kr.co.bootpay.store.model.request.orderSubscription.request.ing.OrderSubscriptionResumeParams;
TokenPayload tp = new TokenPayload("your-commerce-client-key", "your-commerce-secret-key");
BootpayStore commerce = new BootpayStore(tp).withToken();
OrderSubscriptionResumeParams params = new OrderSubscriptionResumeParams();
params.orderSubscriptionId = "687a1b2c3d4e5f6789012345";
params.reason = "일시정지 사유 해소로 재개 요청";
BootpayStoreResponse response = commerce.orderSubscription.requestIng.resume(params);
System.out.println(response);javarequire 'bootpay'
commerce = BootpayStore::RestClient.new(client_key: 'your-commerce-client-key', secret_key: 'your-commerce-secret-key')
response = commerce.order_subscription_requests_ing_resume(
order_subscription_id: '687a1b2c3d4e5f6789012345',
reason: '일시정지 사유 해소로 재개 요청'
)
puts responserubycommerce := bootpay.NewCommerceApi("your-commerce-client-key", "your-commerce-secret-key")
response, err := commerce.OrderSubscription.RequestResume(bootpay.OrderSubscriptionRequestResumeParams{
OrderSubscriptionID: "687a1b2c3d4e5f6789012345",
Reason: "일시정지 사유 해소로 재개 요청",
})
fmt.Println(response)gousing Bootpay.Commerce;
var commerce = new BootpayCommerceApi("your-commerce-client-key", "your-commerce-secret-key");
var response = await commerce.OrderSubscription.RequestResume(new {
order_subscription_id = "687a1b2c3d4e5f6789012345",
reason = "일시정지 사유 해소로 재개 요청"
});
Console.WriteLine(response);csharp응답
성공 응답
고객 재개는 관리자 승인 없이 즉시 처리되고, 재개가 반영된 구독 계약 상세 전체를 돌려줘요. 아래는 일부만 추린 예시예요.
{
"order_subscription_id": "687a1b2c3d4e5f6789012345",
"status": "subscribing",
"pause_resumed_at": "2025-08-15T10:00:00+09:00",
"request_histories": [
{ "request_type": "request_resume", "request_status": "request_approved_auto" }
]
}json응답 필드 설명
| 필드 | 타입 | 설명 |
|---|---|---|
order_subscription_id |
String | 구독 계약 고유 ID |
status |
String | 변경된 구독 상태 (subscribing: 구독 중) |
pause_resumed_at |
String | 재개 시각 |
request_histories |
Array | 이 구독의 요청 이력. 재개 요청은 request_type 이 request_resume (내부값 12). 요청 유형 전체 |
에러 코드
공통 에러
인증·권한 관련 에러는 에러 코드표를 참고해요.
| 코드 | 메시지 | 대처 방법 |
|---|---|---|
ORDER_SUBSCRIPTION_NOT_FOUND |
구독결제 건을 찾을 수 없어요. | order_subscription_id를 확인해요 |
ORDER_SUBSCRIPTION_RESUME_UNABLE |
현재 일시정지 상태가 아니므로 재개할 수 없어요 | 구독 상태를 확인해요 |
ORDER_SUBSCRIPTION_RESUME_REQUEST_DUPLICATE |
이미 대기 중인 재개 요청이 있어요. | 기존 요청 처리를 기다려요 |
재개는 구독 상태가 일시정지(temporarily_paused, -2)일 때만 가능해요.
관리자가 직접 재개할 때
관리자는 PUT /v1/order_subscriptions/:order_subscription_id/resume (supervisor 권한, 본문 reason 선택)으로 바로 재개해요. 이 API도 일시정지(temporarily_paused) 상태인 구독만 재개할 수 있어요.
