구독 계약을 승인해요. 승인 후 구독이 활성화되고, 설정된 주기에 따라 자동 결제가 시작돼요.
API 엔드포인트
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
id |
String | 필수 | 구독 계약 ID (URL 경로). external_uid 로는 찾지 못해요 |
reason |
String | 선택 | 승인 사유 (approval_reason 으로 저장돼요) |
승인 API는 관리자(supervisor) 권한이 필요해요. Commerce API 인증으로 호출해요.
코드 예제
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.approve('687a1b2c3d4e5f6789012345')
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.approve('687a1b2c3d4e5f6789012345')
print(response)pythonuse Bootpay\ServerPhp\BootpayCommerceApi;
$commerce = new BootpayCommerceApi("your-commerce-client-key", "your-commerce-secret-key");
$response = $commerce->orderSubscription->approve('687a1b2c3d4e5f6789012345');
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;
TokenPayload tp = new TokenPayload("your-commerce-client-key", "your-commerce-secret-key");
BootpayStore commerce = new BootpayStore(tp).withToken();
BootpayStoreResponse response = commerce.orderSubscription.approve("687a1b2c3d4e5f6789012345");
System.out.println(response);javarequire 'bootpay'
commerce = BootpayStore::RestClient.new(client_key: 'your-commerce-client-key', secret_key: 'your-commerce-secret-key')
response = commerce.supervisor_request_order_subscription_approve(
order_subscription_id: '687a1b2c3d4e5f6789012345'
)
puts responserubycommerce := bootpay.NewCommerceApi("your-commerce-client-key", "your-commerce-secret-key")
response, err := commerce.OrderSubscription.Approve("687a1b2c3d4e5f6789012345")
fmt.Println(response)gousing Bootpay.Commerce;
var commerce = new BootpayCommerceApi("your-commerce-client-key", "your-commerce-secret-key");
var response = await commerce.OrderSubscription.Approve("687a1b2c3d4e5f6789012345");
Console.WriteLine(response);csharp응답
성공 응답
{
"order_subscription_id": "687a1b2c3d4e5f6789012345",
"status": "subscribing",
"approval_status": "approval_approved_manual",
"approval_at": "2025-07-11T10:30:00+09:00",
"service_start_at": "2025-07-11T10:30:00+09:00"
}json응답 필드 설명
| 필드 | 타입 | 설명 |
|---|---|---|
order_subscription_id |
String | 구독 계약 고유 ID |
status |
String | 변경된 구독 상태 (subscribing: 구독 중, 무료체험이 켜진 계약은 free_trial) |
approval_status |
String | 승인 상태 (approval_approved_manual: 수동 승인) |
approval_at |
String | 승인 일시 |
service_start_at |
String | 구독 서비스 시작일 |
에러 코드
공통 에러
인증·권한 관련 에러는 에러 코드표를 참고해요.
| 코드 | 메시지 | 대처 방법 |
|---|---|---|
ORDER_SUBSCRIPTION_NOT_FOUND |
구독결제 건을 찾을 수 없어요. | order_subscription_id를 확인해요 |
ORDER_SUBSCRIPTION_ALREADY_PROCESSED |
이미 처리된 구독이에요. | 승인 대기·보류 상태인 계약만 승인할 수 있어요. 자동 승인된 계약은 승인할 필요가 없어요 |
ORDER_SUBSCRIPTION_PREPAID_FAILED |
구독 승인 처리 중 오류가 발생했어요 | 선결제 계약은 승인 시 첫 결제를 실행해요. 결제수단 상태를 확인해요 |
