구독 거래(order_subscription_transaction)는 회차(Bill) 목록 응답 안에 포함되어 반환돼요. 거래 내역 확인이 필요할 때는 회차 목록 API를 조회해요.
API 엔드포인트
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
order_subscription_id |
String | 선택 | 구독 계약 ID 필터 |
status |
String | Integer | Array | 선택 | 회차 상태 필터 (숫자 또는 bill_ready 같은 키). 여러 값은 status[]=bill_ready&status[]=bill_failed 또는 status=2,-1로 보내요 |
page |
Number | 선택 | 페이지 번호 |
limit |
Number | 선택 | 페이지당 개수 (기본 20, 100 을 넘기면 20 으로 돌아가요) |
구독 ID를 먼저 확인해요
order_subscription_id가 이 프로젝트에 없는 값이면 구독 조건이 빠지고 프로젝트 전체 회차가 조회돼요. 특정 계약의 거래를 보여주려면 계약 상세로 ID를 확인해요.
코드 예제
curl -X GET "https://api.bootapi.com/v1/order_subscription_bills?order_subscription_id={id}&page=1&limit=10" \
-H "Authorization: Basic {base64(client_key:secret_key)}" \
-H "Content-Type: application/json"bashconst { BootpayCommerce } = require('@bootpay/backend-js')
const commerce = new BootpayCommerce({
client_key: '{client_key}',
secret_key: '{secret_key}'
})
const response = await commerce.orderSubscriptionBill.list({
order_subscription_id: '687a1b2c3d4e5f6789012345',
page: 1,
limit: 10
})
console.log(response)javascriptfrom bootpay_backend.commerce import BootpayCommerce
commerce = BootpayCommerce('{client_key}', '{secret_key}')
response = commerce.order_subscription_bill_list({
'order_subscription_id': '687a1b2c3d4e5f6789012345',
'page': 1,
'limit': 10
})
print(response)pythonuse Bootpay\ServerPhp\BootpayCommerceApi;
$commerce = new BootpayCommerceApi('{client_key}', '{secret_key}');
$response = $commerce->orderSubscriptionBillList([
'order_subscription_id' => '687a1b2c3d4e5f6789012345',
'page' => 1,
'limit' => 10
]);
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.orderSubscriptionBill.OrderSubscriptionBillListParams;
TokenPayload tokenPayload = new TokenPayload("{client_key}", "{secret_key}");
BootpayStore commerce = new BootpayStore(tokenPayload).withToken();
OrderSubscriptionBillListParams params = new OrderSubscriptionBillListParams();
params.orderSubscriptionId = "687a1b2c3d4e5f6789012345";
params.page = 1;
params.limit = 10;
BootpayStoreResponse response = commerce.orderSubscriptionBill.list(params);
System.out.println(response);javarequire 'bootpay'
commerce = BootpayStore::RestClient.new(client_key: '{client_key}', secret_key: '{secret_key}')
response = commerce.order_subscription_bill_list(
order_subscription_id: '687a1b2c3d4e5f6789012345',
page: 1,
limit: 10
)
puts responserubycommerce := bootpay.NewCommerceApi("{client_key}", "{secret_key}")
response, err := commerce.OrderSubscriptionBillList(map[string]interface{}{
"order_subscription_id": "687a1b2c3d4e5f6789012345",
"page": 1,
"limit": 10,
})
fmt.Println(response)govar commerce = new BootpayCommerceApi("{client_key}", "{secret_key}");
var response = await commerce.OrderSubscriptionBillList(new {
order_subscription_id = "687a1b2c3d4e5f6789012345",
page = 1,
limit = 10
});
Console.WriteLine(response);csharp응답
{
"list": [
{
"order_subscription_bill_id": "6965f45c4cb8149d0771250d",
"order_subscription_transaction": {
"order_subscription_transaction_id": "6965f45c4cb8149d0771250e",
"order_number": "26011385253324293160",
"price": 1000,
"purchase_price": 1000,
"purchase_tax_free_price": 0,
"status": "bill_completed",
"purchased_at": "2026-01-13T07:29:33Z"
}
}
],
"count": 24
}json회차 상태 (list[].order_subscription_transaction.status)
| 값 | 키 | 설명 |
|---|---|---|
2 |
bill_ready |
결제 대기중 |
1 |
bill_completed |
결제 완료 |
5 |
bill_pending |
결제 지연 |
6 |
bill_failure_delayed |
결제 실패 후 재시도 대기 |
10 |
bill_cancelled |
관리자 취소 |
20 |
bill_terminated |
해지로 인한 취소 |
-1 |
bill_failed |
결제 실패 |
전체 값은 구독 청구(Bill) 상태에 있어요.
응답 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
| count | Number | 전체 회차 수 |
| list | Array | 회차 목록 |
| └─ order_subscription_transaction | Object | 회차에 연결된 거래 정보 |
| └─ order_subscription_transaction_id | String | 거래 고유 ID |
| └─ order_number | String | 주문번호 |
| └─ price | Number | 거래 금액 |
| └─ purchase_price | Number | 실제 결제 금액 |
| └─ purchase_tax_free_price | Number | 실제 결제 면세 금액 |
| └─ status | String | 거래 상태 |
| └─ purchased_at | String | 결제 시각 |
