2016-11-23 2 views
0

Je n'ai pas trouvé de détails à ce sujet avec PHP, alors j'espère que quelqu'un pourra m'aider à compléter ce script?Accéder aux détails de l'abonnement avec Stripes Webhooks PHP

Je recherche les détails de l'abonnement à partir de l'événement Stripe API Webhook. L'événement sur lequel je travaille est invoice.payment_succeeded même si j'ai du mal à accéder aux informations d'abonnement à partir de cela. Voici l'événement de test en pleine:

{ 
    "id": "evt_19HdmRL346436RYAmvgxkr", 
    "object": "event", 
    "api_version": "2016-07-06", 
    "created": 1479580899, 
    "data": { 
    "object": { 
     "id": "in_19HdmRLniq434634643dO2gU", 
     "object": "invoice", 
     "amount_due": 700, 
     "application_fee": null, 
     "attempt_count": 1, 
     "attempted": true, 
     "charge": "ch_19Hdm3463464365IDDXX", 
     "closed": true, 
     "currency": "gbp", 
     "customer": "315464619", 
     "date": 1479580899, 
     "description": null, 
     "discount": null, 
     "ending_balance": 0, 
     "forgiven": false, 
     "lines": { 
     "object": "list", 
     "data": [ 
      { 
      "id": "sub_9apRC346346CMNg", 
      "object": "line_item", 
      "amount": 700, 
      "currency": "gbp", 
      "description": null, 
      "discountable": true, 
      "livemode": false, 
      "metadata": { 
       "website_ref": "Z8ckRo2x", 
       "user_id": "1" 
      }, 
      "period": { 
       "start": 1479580899, 
       "end": 1482172899 
      }, 
      "plan": { 
       "id": "AdFree", 
       "object": "plan", 
       "amount": 700, 
       "created": 1479261871, 
       "currency": "gbp", 
       "interval": "month", 
       "interval_count": 1, 
       "livemode": false, 
       "metadata": {}, 
       "name": "AdFree", 
       "statement_descriptor": "SNAPPYSITES ADFREE", 
       "trial_period_days": null 
      }, 
      "proration": false, 
      "quantity": 1, 
      "subscription": null, 
      "type": "subscription" 
      } 
     ], 
     "has_more": false, 
     "total_count": 1, 
     "url": "/v1/invoices/in_19HdmRLn34353465dO2gU/lines" 
     }, 
     "livemode": false, 
     "metadata": {}, 
     "next_payment_attempt": null, 
     "paid": true, 
     "period_end": 1479580899, 
     "period_start": 1479580899, 
     "receipt_number": null, 
     "starting_balance": 0, 
     "statement_descriptor": null, 
     "subscription": "sub_9a2552OA5553MNg", 
     "subtotal": 700, 
     "tax": null, 
     "tax_percent": null, 
     "total": 700, 
     "webhooks_delivered_at": null 
    } 
    }, 
    "livemode": false, 
    "pending_webhooks": 1, 
    "request": "req_9apRx9555ZVm55", 
    "type": "invoice.payment_succeeded" 
} 

J'écoute actuellement avec ce script inachevé:

$input = @file_get_contents("php://input"); 
$event_json = json_decode($input); 

    $event_id = $event_json->id; 
    $event = \Stripe\Event::retrieve($event_id); 


     if($event->type == 'invoice.payment_succeeded'){ 

       $invoice = $event->data->object; 
       $subscription = $invoice->lines->data->plan; 
       $customer = \Stripe\Customer::retrieve($invoice->customer); 

       print_r($subscription); 
     } 

Malheureusement, je ne reçois pas de réponse à partir du tableau $subscription. Et j'ai essayé diverses méthodes, telles que; $subscription = $invoice->plan; ou $subscription = $invoice->data->plan; etc ...

Je reçois des données pour $invoice & $customer donc je sais qu'ils correctement les deux fonctions. Mon objectif principal est de récupérer les informations sur les métadonnées:

"metadata": { 
       "website_ref": "Z8ckRo2x", 
       "user_id": "1" 
      } 

Donc, je sais à quel compte ce paiement se rapporte. En espérant que quelqu'un puisse savoir ce que je fais de mal.

Répondre

0

Avez-vous essayé $ invoice-> lines-> data-> Metadata-> website_ref pour obtenir les métadonnées que vous recherchez?

Votre facture est constituée d'une liste d'abonnements, dans ce cas seulement 1. Chaque abonnement est le résultat de la sélection d'un plan par l'utilisateur. Les métadonnées sont stockées au niveau de l'abonnement car elles sont spécifiques au client et non au plan.