# Migrer vers la méthode de réponse directe aux webhooks Découvrez comment migrer les autorisations Issuing en temps réel à partir d’appels à l’API obsolètes vers la méthode de réponse directe aux webhooks. > L’appel des endpoints [approve](https://docs.stripe.com/api/issuing/authorizations/approve.md) et [decline](https://docs.stripe.com/api/issuing/authorizations/decline.md) est obsolète. Utilisez ce guide pour migrer votre intégration vers des réponses directes. Répondez directement à un [webhook issuing_authorization.request](https://docs.stripe.com/issuing/controls/real-time-authorizations.md) avec une décision d’autorisation en temps réel au lieu de faire un appel à l’API aux endpoints obsolètes [approve](https://docs.stripe.com/api/issuing/authorizations/approve.md) et [decline](https://docs.stripe.com/api/issuing/authorizations/decline.md) pendant le traitement webhook. Répondre directement à l’événement webhook simplifie les autorisations en temps réel et supprime un appel à l’API supplémentaire, qui pourrait réduire votre taux d’autorisation en raison des expirations. Si vous développez une nouvelle intégration, [utilisez des réponses webhook directes](https://docs.stripe.com/issuing/controls/real-time-authorizations.md). Si vous avez une intégration existante qui utilise les appels à l’API `/approve` et `/decline`, migrez-la vers des réponses webhook directes. > Ce guide ne s’applique que si vous utilisez les endpoints `/approve` et `/decline` pour les autorisations en temps réel. ## Flux d’appels à l’ancienne API Auparavant, vous deviez effectuer un appel à l’API à `/approve` ou `/decline` pour prendre une décision concernant une demande d’autorisation entrante avant de répondre au webhook `issuing_authorization.request`. (See full diagram at https://docs.stripe.com/issuing/controls/real-time-authorizations/direct-webhook-migration) ## Nouveau flux de réponse direct pour les webhooks Vous pouvez désormais répondre directement au webhook `issuing_authorization.request` avec une décision dans le corps de la réponse, sans avoir besoin d’effectuer un appel à l’API distinct. Une fois la décision prise, un événement webhook `issuing_authorization.created` ou `issuing_authorization.updated` est toujours envoyé. Pour en savoir plus sur cette API, consultez la [documentation relative aux autorisations en temps réel](https://docs.stripe.com/issuing/controls/real-time-authorizations.md) et créez une intégration avec [notre guide interactif](https://docs.stripe.com/issuing/controls/real-time-authorizations/quickstart.md). (See full diagram at https://docs.stripe.com/issuing/controls/real-time-authorizations/direct-webhook-migration) Vous devez répondre avec un code d’état HTTP `200`, un en-tête `Stripe-Version` défini sur une version spécifique de l’API et une valeur booléenne `approved` dans le corps JSON. Le corps JSON doit correspondre à la [version spécifiée de l’API](https://docs.stripe.com/api/versioning.md). Pour les autorisations à montant contrôlable, les [approbations partielles](https://docs.stripe.com/issuing/purchases/authorizations.md?issuing-authorization-type=incremental_authorization#handling-other-authorizations) incluent facultativement `amount`. ### Modifications dans l’API d’autorisation du webhook direct Pour les [autorisations](https://docs.stripe.com/api/issuing/authorizations/object.md) de réponse directe aux webhooks, nous avons effectué plusieurs ajouts : - Ajout de la valeur `webhook_error` à [request_history.reason](https://docs.stripe.com/api/issuing/authorizations/object.md#issuing_authorization_object-request_history-reason). Cette valeur est présente si la réponse du webhook échoue en raison d’erreurs de validation. - Nouveau champ `request_history.reason_message`, qui inclut un message d’erreur détaillé si la valeur de `request_history.reason` est `webhook_error`. ## Migrer vers la réponse directe Vous pouvez essayer la réponse directe du webhook dans les environnements de test. Au titre de bonne pratique, nous vous recommandons de passer progressivement de l’ancien appel à l’API à une réponse directe au webhook. Si vous appelez une méthode API et incluez le corps de la réponse directe du webhook, la décision de la méthode API est prioritaire. Voici un exemple de ce à quoi peut ressembler une migration vers le webhook direct dans Ruby. Pour les autres langues, consultez [notre guide interactif](https://docs.stripe.com/issuing/controls/real-time-authorizations/quickstart.md). ```ruby # User's existing API call webhook handling code, using Sinatra. # In this example, the synchronous webhook and normal webhook share an endpoint. post '/webhook' do payload = request.body.read if event['type'] == 'issuing_authorization.request' auth = event['data']['object'] # Approve with legacy API call. Stripe::Issuing::Authorization.approve(auth["id"]) status 200 elsif event['type'] == 'issuing_authorization.created' auth = event['data']['object'] # If approved, will print "webhook_approved" puts "#{auth["request_history"][-1]["reason"]}" status 200 end end ``` Après avoir effectué des tests dans un *environnement de test* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes), transférez progressivement le trafic vers la réponse directe du webhook. ```ruby # User's API call and direct response webhook handling code, using Sinatra. # In this example, the synchronous webhook and normal webhook share an endpoint. post '/webhook' do payload = request.body.read if event['type'] == 'issuing_authorization.request' auth = event['data']['object'] # Gradually shift traffic over from API approval to direct webhook response. if should_use_direct_webhook_response?(auth["id"]) # Direct webhook response. body({ # Required field, containing decision. "approved" => true, }.to_json) header({ # Required in header. Versions can be found in https://stripe.com/docs/api/versioning "Stripe-Version" => "2023-08-16" }) # Must respond with a 200. status 200 else # Legacy API call. Plan to remove this after traffic is completely shifted. Stripe::Issuing::Authorization.approve(auth["id"]) status 200 end elsif event['type'] == 'issuing_authorization.created' auth = event['data']['object'] # If approved, will print "webhook_approved" puts "#{auth["request_history"][-1]["reason"]}" # Handle new reason value and field if auth["request_history"][-1]["reason"] == "webhook_error" puts "Direct webhook response decision failed: #{auth["request_history"][-1]["reason_message"]}" end status 200 end end ```