Aperçu
Brightcove ajoute des métadonnées personnalisées aux abonnements Stripe qui vous permettront d'identifier le type d'appareil du spectateur utilisé lors de la création de l'abonnement. Vous pouvez interroger l'API Stripe pour rechercher les abonnements associés aux métadonnées personnalisées. Vous pouvez également ajouter des webhooks pour écouter les événements Stripe.
Cette rubrique explique comment effectuer les opérations suivantes :
- Utilisez l'API Stripe pour rechercher des métadonnées spécifiques dans n'importe quel abonnement/achat et obtenir une liste
- Créer un webhook pour écouter les événements Stripe
Conditions préalables
Pour utiliser l'API Stripe comme indiqué dans cette rubrique, vous aurez besoin des éléments suivants :
- Compte Stripe
- Postman ou une autre plate-forme API
Vous pouvez utiliser la plateforme API de votre choix pour interagir avec l'API Stripe, mais pour ces exemples, nous utiliserons Postman.
Comprendre l'API Stripe
URL de base
L'URL de base de l'API Stripe est la suivante :
https://api.stripe.com
Authentification
Les demandes sont authentifiées à l'aide de votre clé d'API dans l' Authorization
en-tête :
Authorization: Bearer {api_key}
Collection API
La collection Stripe API est hébergée dans l' espace de travail public Postman de Stripe. Cela vous permet de passer de l'espace de travail public au vôtre.
Si vous ne souhaitez pas dédoubler la collection depuis l'espace de travail public, vous pouvez l'importer depuis le postier à rayures Référentiel GitHub.
Création d'un environnement Postman
Vous pouvez utiliser la plateforme API de votre choix pour interagir avec l'API Stripe, mais pour ces exemples, nous utiliserons Postman.
- Connectez-vous ou créez un compte avec Postman.
- Soit vous utilisez le modèle d'environnement dans l' espace de travail public de Postman Stripe, soit vous créez un nouvel environnement dans Postman. Nous allons créer un nouvel environnement.
-
Dans votre espace de travail, cliquez sur Nouveau.
-
Dans la boîte de dialogue, sélectionnez Environnement.
-
Ajoutez votre clé secrète en tant que variable d'environnement et cliquez sur Enregistrer.
- Cliquez sur pour ouvrir un nouvel onglet.
-
Dans la boîte de dialogue de demande, procédez comme suit :
- Sélectionner l' autorisation
- Pour Type, sélectionnez Token porteur
- Pour Token, entrez
{{secret_key}}
Si votre environnement est correctement configuré, vous devriez voir la valeur de votre clé secrète lorsque vous passez la souris sur la
secret_key
variable. - Cliquez sur Save.
- Dans la boîte de dialogue, procédez comme suit :
- Ajouter un nom de demande
- Choisir ou créer une nouvelle collection
- Cliquez sur Enregistrer
-
Vous êtes maintenant prêt à créer une
GET
demande à l'API Stripe.
Recherche d'abonnements avec métadonnées
Dans cette section, vous utiliserez l'API Stripe pour rechercher des abonnements ayant des métadonnées personnalisées.
Métadonnées personnalisées
Prénom | Montant |
---|---|
device_type |
Valeurs :
|
Étapes
- Retournez dans l'environnement Postman que vous avez créé dans la section précédente.
-
Pour la
GET
demande, collez ce qui suit dans l'URL de la demande. Utilisez la valeur du type d'appareil de votre choix.https://api.stripe.com/v1/subscriptions/search?query=metadata["device_type"]:"samsung"
- Cliquez sur Envoyer.
-
Si le message d'erreur suivant s'affiche avec votre
GET
demande,assurez-vous que vous utilisez la version actuelle de l'API Stripe. Vous pouvez le faire en ajoutant l'en-tête suivant :
KEY
est une « version Stripe »VALUE
est « 2020-08-27" (ou la dernière version)
Réponse
La réponse de l'API doit contenir des abonnements avec des métadonnées pour Samsung:yes
.
Notez que la réponse contient les informations suivantes :
"metadata": {
"Samsung": "yes"
},
Réponse de l'API
Votre réponse devrait ressembler à ceci :
{
"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"
Utiliser les webhooks de Stripe
Votre application Brightcove Beacon peut écouter les événements de votre compte Stripe, et vous pouvez utiliser les webhooks pour permettre à Stripe d'envoyer des notifications en temps réel à votre application, ou vous pouvez utiliser un webhook comme point de terminaison.
Pour plus de détails, voir la Stripe Utiliser les webhooks entrants référence.
Notez que chaque réponse contient les informations suivantes :
"metadata": {
"Samsung": "yes"
},
Evénements
Voici quelques événements que vous pouvez écouter :
client.abonnement.créé
Un webhook Stripe peut écouter l' customer.subscription.created
événement.
Réponse de l'API
Votre réponse devrait ressembler à ceci :
{
"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
}
}
}
client.abonnement.mis.à.jour
Un webhook Stripe peut écouter l' customer.subscription.updated
événement.
Réponse de l'API
Votre réponse devrait ressembler à ceci :
{
"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
}
}
}
Contraintes
L'utilisation de l'API Stripe présente certaines limites :
- Pour citer Stripe, « N'utilisez pas la recherche dans les flux de lecture après écriture où une cohérence stricte est nécessaire. Dans des conditions normales d'utilisation, les données sont consultables en moins d'une minute. Il arrive que la propagation de données nouvelles ou mises à jour accuse un retard pouvant aller jusqu'à une heure pendant les pannes. La fonctionnalité de recherche n'est pas disponible pour les commerçants en Inde"