2016-11-23 14 views
0

Я не смог найти никаких подробностей для этого с помощью PHP, поэтому я надеюсь, что кто-то может помочь мне заполнить этот скрипт?Доступ к данным подписки с помощью Stripes Webhooks PHP

Я ищу информацию о подписке из события Webhook API-интерфейса Stripe. Событие, над которым я работаю, - invoice.payment_succeeded, хотя я изо всех сил пытаюсь получить доступ к информации о подписке. Вот тест событие в полном объеме:

{ 
    "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" 
} 

В настоящее время я слушал с этим незаконченным сценарием:

$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); 
     } 

К сожалению, я не получает никакого ответа от $subscription массива. И я пытался использовать различные методы, такие как; $subscription = $invoice->plan; или $subscription = $invoice->data->plan; и т.д ...

я получить данные для $invoice & $customer, так что я знаю, что они оба правильно функционировать. Основное внимание уделяется извлечению информации метаданных:

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

Таким образом, я знаю, к какой учетной записи относится этот платеж. Надеясь, что кто-то может понять, что я делаю неправильно.

ответ

0

Вы пробовали $ invoice-> lines-> data-> Metadata-> website_ref, чтобы получить метаданные, которые вы после?

Ваш счет состоит из списка подписки, в данном случае всего 1. Каждая подписка является результатом выбора пользователем плана. Метаданные хранятся на уровне подписки, поскольку они специфичны для клиента, а не для плана.