Überblick
Brightcove fügt benutzerdefinierte Metadaten zu Stripe-Abonnements hinzu, mit denen Sie den beim Erstellen des Abonnements verwendeten Gerätetyp des Betrachters identifizieren können. Sie können die Stripe-API abfragen, um nach Abonnements zu suchen, die mit den benutzerdefinierten Metadaten verknüpft sind. Sie können auch Webhooks hinzufügen, um auf Stripe-Ereignisse zu warten.
In diesem Abschnitt erfahren Sie, wie Sie die folgenden Schritte durchführen:
- Verwenden Sie die Stripe-API, um nach bestimmten Metadaten in jedem Abonnement/Kauf zu suchen und eine Liste zurückzugeben
- Erstellen Sie einen Webhook, um auf Stripe-Ereignisse zu warten
Voraussetzungen
Um die Stripe-API wie in diesem Thema beschrieben zu verwenden, benötigen Sie Folgendes:
- Stripe-Konto
- Postman oder eine andere API-Plattform
Sie können die API-Plattform Ihrer Wahl verwenden, um mit der Stripe-API zu interagieren, aber für diese Beispiele werden wir Postman verwenden.
Verstehen der Stripe-API
Basis-URL
Die Basis-URL für die Stripe-API lautet:
https://api.stripe.com
Authentifizierung
Anfragen werden mit Ihrem API-Schlüssel in der authentifiziert Authorization
Header:
Authorization: Bearer {api_key}
API-Sammlung
Die Stripe-API-Sammlung wird innerhalb des öffentlichen Postman-Arbeitsbereichs von Stripe gehostet. So können Sie vom öffentlichen Arbeitsbereich in Ihren eigenen überwechseln.
Wenn Sie die Sammlung nicht aus dem öffentlichen Arbeitsbereich forken möchten, können Sie sie aus dem stripe-postman GitHub-Repository importieren.
Erstellen einer Postman-Umgebung
Sie können die API-Plattform Ihrer Wahl verwenden, um mit der Stripe-API zu interagieren, aber für diese Beispiele werden wir Postman verwenden.
- Melden Sie sich an oder erstellen Sie ein Konto bei Postman.
- Forken Sie entweder die Umgebungsvorlage im öffentlichen Arbeitsbereich von Postman Stripe, oder erstellen Sie eine neue Umgebung in Postman. Wir werden eine neue Umgebung schaffen.
-
Klicken Sie in Ihrem Arbeitsbereich auf Neu.
-
Wählen Sie im Dialogfeld die Option Umgebung.
-
Fügen Sie Ihren geheimen Schlüssel als Umgebungsvariable hinzu und klicken Sie auf Speichern.
- Klicken Sie auf , um eine neue Registerkarte zu öffnen.
-
Gehen Sie im Anforderungsdialog wie folgt vor:
- Berechtigung auswählen
- Wählen Sie als Typ Bearer Token
- Geben Sie für Token ein
{{secret_key}}
Wenn Ihre Umgebung korrekt eingerichtet ist, sollten Sie Ihren geheimen Schlüsselwert sehen, wenn Sie mit der Maus über die
secret_key
Variable. - Klicken Sie auf Speichern.
- Gehen Sie in dem Dialogfenster wie folgt vor:
- Name der Anfrage hinzufügen
- Wählen oder erstellen Sie eine neue Sammlung
- Klicken speichern
-
Sie können jetzt eine erstellen
GET
Anfrage an die Stripe-API.
Suche nach Abonnements mit Metadaten
In diesem Abschnitt werden Sie die Stripe-API verwenden, um nach Abonnements zu suchen, die benutzerdefinierte Metadaten haben.
Benutzerdefinierte Metadaten
Nennen | Wert |
---|---|
device_type |
Werte:
|
Schritte
- Kehren Sie zu der Postman-Umgebung zurück, die Sie im vorherigen Abschnitt erstellt haben.
-
Für die
GET
Anfrage, fügen Sie Folgendes in die Anfrage-URL ein. Verwenden Sie den Wert des Gerätetyps Ihrer Wahl.https://api.stripe.com/v1/subscriptions/search?query=metadata["device_type"]:"samsung"
- Klicken Senden.
-
Wenn Sie den folgenden Fehler mit Ihrer
GET
Anfrage,stellen Sie sicher, dass Sie die aktuelle Version der Stripe-API verwenden. Sie können dies tun, indem Sie die folgende Kopfzeile hinzufügen:
KEY
ist „Stripe-Version“VALUE
ist „2020-08-27" (oder neueste Version)
Antwort
Die API-Antwort sollte Abonnements mit Metadaten für enthalten Samsung:yes
.
Beachten Sie, dass die Antwort Folgendes enthält:
"metadata": {
"Samsung": "yes"
},
API-Antwort
Ihre Antwort sollte ungefähr so aussehen:
{
"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 Webhooks verwenden
Ihre Brightcove Beacon-App kann auf Ereignisse in Ihrem Stripe-Konto warten, und Sie können Webhooks verwenden, um Stripe zu ermöglichen, Echtzeitbenachrichtigungen an Ihre App zu senden, oder Sie können einen Webhook als Endpunkt verwenden.
Weitere Informationen finden Sie in der Stripe-Referenz für eingehende Webhooks .
Beachten Sie, dass jede Antwort Folgendes enthält:
"metadata": {
"Samsung": "yes"
},
Veranstaltungen
Hier sind einige Ereignisse, auf die Sie achten können:
kunden.abonnement.erstellt
Ein Stripe-Webhook kann auf die lauschen customer.subscription.created
Fall.
API-Antwort
Ihre Antwort sollte ungefähr so aussehen:
{
"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
}
}
}
kunden.abonnement.aktualisiert
Ein Stripe-Webhook kann auf die lauschen customer.subscription.updated
Fall.
API-Antwort
Ihre Antwort sollte ungefähr so aussehen:
{
"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
}
}
}
Einschränkungen
Es gibt einige Einschränkungen bei der Verwendung der Stripe-API:
- Zitat Stripe - "Verwenden Sie die Suche nicht in Lese-nach-Schreib-Abläufen, bei denen strikte Konsistenz erforderlich ist. Unter normalen Betriebsbedingungen sind die Daten in weniger als einer Minute abrufbar. Gelegentlich kann sich die Weitergabe neuer oder aktualisierter Daten bei Ausfällen um bis zu einer Stunde verzögern. Die Suchfunktion ist für Händler in Indien nicht verfügbar