개요
Brightcove는 사용자 지정 메타데이터를 Stripe 구독에 추가하여 구독을 생성할 때 사용되는 뷰어의 장치 유형을 식별할 수 있도록 합니다. Stripe API를 쿼리하여 사용자 지정 메타데이터와 연결된 구독을 검색할 수 있습니다. Stripe 이벤트를 수신하기 위해 웹후크를 추가할 수도 있습니다.
이 항목에서는 다음을 수행하는 방법을 보여줍니다.
- Stripe API를 사용하여 모든 구독/구매에서 특정 메타데이터를 검색하여 목록을 반환합니다.
- Stripe 이벤트를 수신하는 웹후크 만들기
전제 조건
이 주제에 표시된 대로 Stripe API를 사용하려면 다음이 필요합니다.
스트라이프 API 이해
기본 URL
Stripe API의 기본 URL은 다음과 같습니다.
https://api.stripe.com
인증
요청은Authorization
헤더의 API 키를 사용하여 인증됩니다.
Authorization: Bearer {api_key}
API 수집
Stripe API 컬렉션은 Stripe의 Postman 공용 작업 공간 내에서 호스팅됩니다. 이렇게 하면 공용 작업 공간에서 자신의 작업 공간으로 포크할 수 있습니다.
공용 작업 공간에서 컬렉션을 포크하지 않으려면 stripe-postman GitHub 리포지토리에서 가져올 수 있습니다.
Postman 환경 만들기
원하는 API 플랫폼을 사용하여 Stripe API와 상호 작용할 수 있지만 이 예에서는 Postman을 사용합니다.
- Postman 으로 로그인하거나 계정을 만드십시오.
- Postman Stripe 공용 작업 공간 내에서 환경 템플릿을 분기하거나 Postman 내에서 새 환경을 만듭니다. 새로운 환경을 만들어드리겠습니다.
-
작업 공간에서 새로 만들기 를 클릭합니다.
-
대화 상자에서 환경을 선택합니다.
-
비밀 키를 환경 변수로 추가하고 저장을 클릭하십시오.
- 딸깍 하는 소리 새 탭을 엽니다.
-
요청 대화 상자에서 다음을 수행합니다.
- 승인 선택
- Type 에서 Bearer Token을 선택합니다.
- 토큰에 다음을 입력합니다.
{{secret_key}}
환경이 올바르게 설정된 경우
secret_key
변수 위에 마우스를 놓으면 비밀 키 값이 표시될 것입니다. - 저장을 클릭합니다 .
- 대화 상자에서 다음을 수행합니다.
- 요청 이름 추가
- 새 컬렉션 선택 또는 생성
- 저장을클릭합니다.
-
이제 Stripe API에 대한
GET
요청을 생성할 준비가 되었습니다.
메타데이터로 구독 검색
이 섹션에서는 Stripe API를 사용하여 사용자 지정 메타데이터가 있는 구독을 검색합니다.
사용자 정의 메타데이터
이름 | 값 |
---|---|
device_type |
값:
|
단계
- 이전 섹션에서 만든 Postman 환경으로 돌아갑니다.
-
요청하려면 다음을
GET
요청 URL에 붙여넣습니다. 원하는 장치 유형 값을 사용하십시오.https://api.stripe.com/v1/subscriptions/search?query=metadata["device_type"]:"samsung"
- [ 보내기] 를 클릭합니다 .
-
GET
요청과 함께 다음과 같은 오류가 발생하는 경우현재 버전의 Stripe API를 사용하고 있는지 확인하십시오. 다음 헤더를 추가하여 이 작업을 수행할 수 있습니다.
KEY
“스트라이프 버전”입니다VALUE
“2020-08-27" (또는 최신 버전) 입니다.
대응
API 응답에는 에 대한 메타데이터가 포함된 구독이 포함되어야Samsung:yes
합니다.
응답에는 다음이 포함되어 있습니다.
"metadata": {
"Samsung": "yes"
},
API 응답
응답은 다음과 비슷해야 합니다.
{
"object": "search_result",
"data": [
{
"id": "sub_1L3jAgFzWFPFNFjqFpyUF8XY",
"object": "subscription",
"application": null,
"application_fee_percent": null,
"automatic_tax": {
"enabled": false
},
"billing_cycle_anchor": 1653581061,
"billing_thresholds": null,
"cancel_at": null,
"cancel_at_period_end": false,
"canceled_at": null,
"collection_method": "charge_automatically",
"created": 1653581061,
"current_period_end": 1656259461,
"current_period_start": 1653581061,
"customer": "cus_LlFcWXPXftQibf",
"days_until_due": null,
"default_payment_method": null,
"default_source": null,
"default_tax_rates": [],
"description": null,
"discount": null,
"ended_at": null,
"items": {
"object": "list",
"data": [
{
"id": "si_LlFgWbs9lqlwOF",
"object": "subscription_item",
"billing_thresholds": null,
"created": 1653581062,
"metadata": {},
"plan": {
"id": "price_1L3j69FzWFPFNFjqpEIV4RMb",
"object": "plan",
"active": true,
"aggregate_usage": null,
"amount": 100,
"amount_decimal": "100",
"billing_scheme": "per_unit",
"created": 1653580781,
"currency": "eur",
"interval": "month",
"interval_count": 1,
"livemode": false,
"metadata": {},
"nickname": null,
"product": "prod_LlFbyvOQ6dpLXF",
"tiers_mode": null,
"transform_usage": null,
"trial_period_days": null,
"usage_type": "licensed"
},
"price": {
"id": "price_1L3j69FzWFPFNFjqpEIV4RMb",
"object": "price",
"active": true,
"billing_scheme": "per_unit",
"created": 1653580781,
"currency": "eur",
"livemode": false,
"lookup_key": null,
"metadata": {},
"nickname": null,
"product": "prod_LlFbyvOQ6dpLXF",
"recurring": {
"aggregate_usage": null,
"interval": "month",
"interval_count": 1,
"trial_period_days": null,
"usage_type": "licensed"
},
"tax_behavior": "unspecified",
"tiers_mode": null,
"transform_quantity": null,
"type": "recurring",
"unit_amount": 100,
"unit_amount_decimal": "100"
},
"quantity": 1,
"subscription": "sub_1L3jAgFzWFPFNFjqFpyUF8XY",
"tax_rates": []
}
],
"has_more": false,
"total_count": 1,
"url": "/v1/subscription_items?subscription=sub_1L3jAgFzWFPFNFjqFpyUF8XY"
},
"latest_invoice": "in_1L3jAgFzWFPFNFjq8YFoU6R3",
"livemode": false,
"metadata": {
"Samsung": "yes"
},
"next_pending_invoice_item_invoice": null,
"pause_collection": null,
"payment_settings": {
"payment_method_options": null,
"payment_method_types": null,
"save_default_payment_method": "off"
},
"pending_invoice_item_interval": null,
"pending_setup_intent": null,
"pending_update": null,
"plan": {
"id": "price_1L3j69FzWFPFNFjqpEIV4RMb",
"object": "plan",
"active": true,
"aggregate_usage": null,
"amount": 100,
"amount_decimal": "100",
"billing_scheme": "per_unit",
"created": 1653580781,
"currency": "eur",
"interval": "month",
"interval_count": 1,
"livemode": false,
"metadata": {},
"nickname": null,
"product": "prod_LlFbyvOQ6dpLXF",
"tiers_mode": null,
"transform_usage": null,
"trial_period_days": null,
"usage_type": "licensed"
},
"quantity": 1,
"schedule": null,
"start_date": 1653581061,
"status": "active",
"test_clock": null,
"transfer_data": null,
"trial_end": null,
"trial_start": null
}
],
"has_more": false,
"next_page": null,
"url": "/v1/subscriptions/search"
Stripe 웹후크 사용
Brightcove Beacon 앱은 Stripe 계정의 이벤트를 수신 대기할 수 있으며 Webhook을 사용하여 Stripe이 실시간 알림을 앱에 푸시하도록 하거나 웹후크를 엔드포인트로 사용할 수 있습니다.
자세한 내용은 Stripe Use 수신 Webhook 참조를 확인하세요.
각 응답에는 다음이 포함됩니다.
"metadata": {
"Samsung": "yes"
},
이벤트
수신할 수 있는 몇 가지 이벤트는 다음과 같습니다.
고객.구독.생성
Stripe 웹후크는customer.subscription.created
이벤트를 수신할 수 있습니다.
API 응답
응답은 다음과 비슷해야 합니다.
{
"object": {
"id": "sub_1L3jAgFzWFPFNFjqFpyUF8XY",
"object": "subscription",
"application": null,
"application_fee_percent": null,
"automatic_tax": {
"enabled": false
},
"billing": "charge_automatically",
"billing_cycle_anchor": 1653581061,
"billing_thresholds": null,
"cancel_at": null,
"cancel_at_period_end": false,
"canceled_at": null,
"collection_method": "charge_automatically",
"created": 1653581061,
"current_period_end": 1656259461,
"current_period_start": 1653581061,
"customer": "cus_LlFcWXPXftQibf",
"days_until_due": null,
"default_payment_method": null,
"default_source": null,
"default_tax_rates": [
],
"description": null,
"discount": null,
"ended_at": null,
"invoice_customer_balance_settings": {
"consume_applied_balance_on_void": true
},
"items": {
"object": "list",
"data": [
{
"id": "si_LlFgWbs9lqlwOF",
"object": "subscription_item",
"billing_thresholds": null,
"created": 1653581062,
"metadata": {
},
"plan": {
"id": "price_1L3j69FzWFPFNFjqpEIV4RMb",
"object": "plan",
"active": true,
"aggregate_usage": null,
"amount": 100,
"amount_decimal": "100",
"billing_scheme": "per_unit",
"created": 1653580781,
"currency": "eur",
"interval": "month",
"interval_count": 1,
"livemode": false,
"metadata": {
},
"name": "Beacon Metadata",
"nickname": null,
"product": "prod_LlFbyvOQ6dpLXF",
"statement_descriptor": null,
"tiers": null,
"tiers_mode": null,
"transform_usage": null,
"trial_period_days": null,
"usage_type": "licensed"
},
"price": {
"id": "price_1L3j69FzWFPFNFjqpEIV4RMb",
"object": "price",
"active": true,
"billing_scheme": "per_unit",
"created": 1653580781,
"currency": "eur",
"livemode": false,
"lookup_key": null,
"metadata": {
},
"nickname": null,
"product": "prod_LlFbyvOQ6dpLXF",
"recurring": {
"aggregate_usage": null,
"interval": "month",
"interval_count": 1,
"trial_period_days": null,
"usage_type": "licensed"
},
"tax_behavior": "unspecified",
"tiers_mode": null,
"transform_quantity": null,
"type": "recurring",
"unit_amount": 100,
"unit_amount_decimal": "100"
},
"quantity": 1,
"subscription": "sub_1L3jAgFzWFPFNFjqFpyUF8XY",
"tax_rates": [
]
}
],
"has_more": false,
"total_count": 1,
"url": "/v1/subscription_items?subscription=sub_1L3jAgFzWFPFNFjqFpyUF8XY"
},
"latest_invoice": "in_1L3jAgFzWFPFNFjq8YFoU6R3",
"livemode": false,
"metadata": {
"Samsung": "yes"
},
"next_pending_invoice_item_invoice": null,
"pause_collection": null,
"payment_settings": {
"payment_method_options": null,
"payment_method_types": null,
"save_default_payment_method": "off"
},
"pending_invoice_item_interval": null,
"pending_setup_intent": null,
"pending_update": null,
"plan": {
"id": "price_1L3j69FzWFPFNFjqpEIV4RMb",
"object": "plan",
"active": true,
"aggregate_usage": null,
"amount": 100,
"amount_decimal": "100",
"billing_scheme": "per_unit",
"created": 1653580781,
"currency": "eur",
"interval": "month",
"interval_count": 1,
"livemode": false,
"metadata": {
},
"name": "Beacon Metadata",
"nickname": null,
"product": "prod_LlFbyvOQ6dpLXF",
"statement_descriptor": null,
"tiers": null,
"tiers_mode": null,
"transform_usage": null,
"trial_period_days": null,
"usage_type": "licensed"
},
"quantity": 1,
"schedule": null,
"start": 1653581061,
"start_date": 1653581061,
"status": "active",
"tax_percent": null,
"test_clock": null,
"transfer_data": null,
"trial_end": null,
"trial_start": null
},
"previous_attributes": {
"metadata": {
"Samsung": null
}
}
}
고객.구독.업데이트됨
Stripe 웹후크는customer.subscription.updated
이벤트를 수신할 수 있습니다.
API 응답
응답은 다음과 비슷해야 합니다.
{
"object": {
"id": "sub_1L3jAgFzWFPFNFjqFpyUF8XY",
"object": "subscription",
"application": null,
"application_fee_percent": null,
"automatic_tax": {
"enabled": false
},
"billing": "charge_automatically",
"billing_cycle_anchor": 1653581061,
"billing_thresholds": null,
"cancel_at": null,
"cancel_at_period_end": false,
"canceled_at": null,
"collection_method": "charge_automatically",
"created": 1653581061,
"current_period_end": 1656259461,
"current_period_start": 1653581061,
"customer": "cus_LlFcWXPXftQibf",
"days_until_due": null,
"default_payment_method": null,
"default_source": null,
"default_tax_rates": [
],
"description": null,
"discount": null,
"ended_at": null,
"invoice_customer_balance_settings": {
"consume_applied_balance_on_void": true
},
"items": {
"object": "list",
"data": [
{
"id": "si_LlFgWbs9lqlwOF",
"object": "subscription_item",
"billing_thresholds": null,
"created": 1653581062,
"metadata": {
},
"plan": {
"id": "price_1L3j69FzWFPFNFjqpEIV4RMb",
"object": "plan",
"active": true,
"aggregate_usage": null,
"amount": 100,
"amount_decimal": "100",
"billing_scheme": "per_unit",
"created": 1653580781,
"currency": "eur",
"interval": "month",
"interval_count": 1,
"livemode": false,
"metadata": {
},
"name": "Beacon Metadata",
"nickname": null,
"product": "prod_LlFbyvOQ6dpLXF",
"statement_descriptor": null,
"tiers": null,
"tiers_mode": null,
"transform_usage": null,
"trial_period_days": null,
"usage_type": "licensed"
},
"price": {
"id": "price_1L3j69FzWFPFNFjqpEIV4RMb",
"object": "price",
"active": true,
"billing_scheme": "per_unit",
"created": 1653580781,
"currency": "eur",
"livemode": false,
"lookup_key": null,
"metadata": {
},
"nickname": null,
"product": "prod_LlFbyvOQ6dpLXF",
"recurring": {
"aggregate_usage": null,
"interval": "month",
"interval_count": 1,
"trial_period_days": null,
"usage_type": "licensed"
},
"tax_behavior": "unspecified",
"tiers_mode": null,
"transform_quantity": null,
"type": "recurring",
"unit_amount": 100,
"unit_amount_decimal": "100"
},
"quantity": 1,
"subscription": "sub_1L3jAgFzWFPFNFjqFpyUF8XY",
"tax_rates": [
]
}
],
"has_more": false,
"total_count": 1,
"url": "/v1/subscription_items?subscription=sub_1L3jAgFzWFPFNFjqFpyUF8XY"
},
"latest_invoice": "in_1L3jAgFzWFPFNFjq8YFoU6R3",
"livemode": false,
"metadata": {
"Samsung": "yes"
},
"next_pending_invoice_item_invoice": null,
"pause_collection": null,
"payment_settings": {
"payment_method_options": null,
"payment_method_types": null,
"save_default_payment_method": "off"
},
"pending_invoice_item_interval": null,
"pending_setup_intent": null,
"pending_update": null,
"plan": {
"id": "price_1L3j69FzWFPFNFjqpEIV4RMb",
"object": "plan",
"active": true,
"aggregate_usage": null,
"amount": 100,
"amount_decimal": "100",
"billing_scheme": "per_unit",
"created": 1653580781,
"currency": "eur",
"interval": "month",
"interval_count": 1,
"livemode": false,
"metadata": {
},
"name": "Beacon Metadata",
"nickname": null,
"product": "prod_LlFbyvOQ6dpLXF",
"statement_descriptor": null,
"tiers": null,
"tiers_mode": null,
"transform_usage": null,
"trial_period_days": null,
"usage_type": "licensed"
},
"quantity": 1,
"schedule": null,
"start": 1653581061,
"start_date": 1653581061,
"status": "active",
"tax_percent": null,
"test_clock": null,
"transfer_data": null,
"trial_end": null,
"trial_start": null
},
"previous_attributes": {
"metadata": {
"Samsung": null
}
}
}
제한 사항
Stripe API를 사용할 때 몇 가지 제한 사항이 있습니다.
- 인용 스트라이프 - "엄격한 일관성이 필요한 쓰기 후 읽기 흐름에서 검색을 사용하지 마십시오. 정상 작동 조건에서는 1분 이내에 데이터를 검색할 수 있습니다. 경우에 따라 정전 시 신규 또는 업데이트된 데이터의 전파가 최대 한 시간까지 지연될 수 있습니다. 인도의 판매자는 검색 기능을 사용할 수 없습니다."