스트라이프 메타데이터로 구독 정보 검색

이 항목에서는 Stripe API를 사용하여 Stripe 사용자 지정 메타데이터와 연결된 구독 정보를 검색하는 방법을 알아봅니다.

개요

Brightcove는 사용자 지정 메타데이터를 Stripe 구독에 추가하여 구독을 생성할 때 사용되는 뷰어의 장치 유형을 식별할 수 있도록 합니다. Stripe API를 쿼리하여 사용자 지정 메타데이터와 연결된 구독을 검색할 수 있습니다. Stripe 이벤트를 수신하기 위해 웹후크를 추가할 수도 있습니다.

이 항목에서는 다음을 수행하는 방법을 보여줍니다.

  • Stripe API를 사용하여 모든 구독/구매에서 특정 메타데이터를 검색하여 목록을 반환합니다.
  • Stripe 이벤트를 수신하는 웹후크 만들기

전제 조건

이 주제에 표시된 대로 Stripe API를 사용하려면 다음이 필요합니다.

  • 스트라이프 계정
  • Postman 또는 다른 API 플랫폼

    원하는 API 플랫폼을 사용하여 Stripe API와 상호 작용할 수 있지만 이 예에서는 Postman을 사용합니다.

스트라이프 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을 사용합니다.

  1. Postman 으로 로그인하거나 계정을 만드십시오.
  2. Postman Stripe 공용 작업 공간 내에서 환경 템플릿을 분기하거나 Postman 내에서 새 환경을 만듭니다. 새로운 환경을 만들어드리겠습니다.
  3. 작업 공간에서 새로 만들기 를 클릭합니다.

    새로 만들기
  4. 대화 상자에서 환경을 선택합니다.

    환경 선택
  5. 비밀 키를 환경 변수로 추가하고 저장을 클릭하십시오.

    비밀 키 변수 생성
  6. 딸깍 하는 소리 탭 아이콘 추가 새 탭을 엽니다.
  7. 요청 대화 상자에서 다음을 수행합니다.

    • 승인 선택
    • Type 에서 Bearer Token을 선택합니다.
    • 토큰에 다음을 입력합니다. {{secret_key}}

    환경이 올바르게 설정된 경우secret_key변수 위에 마우스를 놓으면 비밀 키 값이 표시될 것입니다.

    키 변수에 마우스 오버
  8. 저장을 클릭합니다 .
  9. 대화 상자에서 다음을 수행합니다.
    • 요청 이름 추가
    • 새 컬렉션 선택 또는 생성
    • 저장을클릭합니다.
    저장 요청
  10. 이제 Stripe API에 대한GET요청을 생성할 준비가 되었습니다.

    생성된 환경

메타데이터로 구독 검색

이 섹션에서는 Stripe API를 사용하여 사용자 지정 메타데이터가 있는 구독을 검색합니다.

사용자 정의 메타데이터

이름
device_type 값:
  • androidtv
  • firetv
  • lgtv
  • nettv
  • operatv
  • panasonic
  • samsung

단계

  1. 이전 섹션에서 만든 Postman 환경으로 돌아갑니다.
  2. 요청하려면 다음을GET요청 URL에 붙여넣습니다. 원하는 장치 유형 값을 사용하십시오.

    https://api.stripe.com/v1/subscriptions/search?query=metadata["device_type"]:"samsung"

    삼성 구독 받기
  3. [ 보내기] 를 클릭합니다 .
  4. GET요청과 함께 다음과 같은 오류가 발생하는 경우

    스트라이프 API 버전 오류

    현재 버전의 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분 이내에 데이터를 검색할 수 있습니다. 경우에 따라 정전 시 신규 또는 업데이트된 데이터의 전파가 최대 한 시간까지 지연될 수 있습니다. 인도의 판매자는 검색 기능을 사용할 수 없습니다."
'