2017-05-07 1 views
0

Ich habe einen Webhook eingerichtet, wo Ereignisse von Stripe behandelt werden. Ich habe jedoch festgestellt, dass nicht alle Ereignisse die gleiche Struktur haben.So erhalten Sie die Kunden-ID von Stripe-Ereignis

Ich bin derzeit die Beschaffung von den Kunden auf diese Weise:

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

$customerId = $event_json->data->object->customer 

Nach einem Tag oder zwei fand ich heraus, dass nicht alle Ereignisse der Kunden unter $event_json->data->object->customer enthalten. Hier ist ein Beispiel Antwort:

{ 
    "object": { 
    "id": "cus_Ac3Sx3Bn7cuvqB", 
    "object": "customer", 
    "account_balance": -3099, 
    "created": 1494163341, 
    "currency": "usd", 
    "default_source": "card_1AGpL4ByNDe65wcFOfqQZGCc", 
    "delinquent": false, 
    "description": "John John", 
    "discount": null, 
    "email": "[email protected]", 
    "livemode": false, 
    "metadata": { 
    }, 
    "shipping": null, 
    "sources": { 
     "object": "list", 
     "data": [ 
     { 
      "id": "card_1AGpL4ByNDe65wcFOfqQZGCc", 
      "object": "card", 
      "address_city": null, 
      "address_country": null, 
      "address_line1": null, 
      "address_line1_check": null, 
      "address_line2": null, 
      "address_state": null, 
      "address_zip": null, 
      "address_zip_check": null, 
      "brand": "Visa", 
      "country": "US", 
      "customer": "cus_Ac3Sx3Bn7cuvqB", 
      "cvc_check": "pass", 
      "dynamic_last4": null, 
      "exp_month": 7, 
      "exp_year": 2017, 
      "fingerprint": "lI2tl3FOGKOG7PcZ", 
      "funding": "credit", 
      "last4": "4242", 
      "metadata": { 
      }, 
      "name": "John John", 
      "tokenization_method": null 
     } 
     ], 
     "has_more": false, 
     "total_count": 1, 
     "url": "/v1/customers/cus_Ac3Sx3Bn7cuvqB/sources" 
    }, 
    "subscriptions": { 
     "object": "list", 
     "data": [ 
     ], 
     "has_more": false, 
     "total_count": 0, 
     "url": "/v1/customers/cus_Ac3Sx3Bn7cuvqB/subscriptions" 
    } 
    } 
} 

Was ich frage ist, wo ich ein Beispiel für alle möglichen Ereignisstrukturen sehen, so dass ich sicher machen kann meine Webhook nicht Could not determine which URL to request: Stripe\Customer instance has invalid ID: (500 Internal Server Error)?

Hinweis zurückkehrt: Ich habe Siehe diese Frage - How to get a customer ID from event object in stripe aber dort ist der einzige Weg $event_json->data->object->customer

+0

Es ist '$ event_json-> objekt-> sources-> data [0] -> customer' – Farkie

+0

In diesem speziellen Beispiel - es ist, ja. Es deckt jedoch nicht alle Ereignistypen ab. –

Antwort

-1

Stripe Webhooks teilen sich die gleiche Struktur wie die API-Endpunkte für die relevanten Objekte. Im obigen Beispiel ist das Feld object auf customer festgelegt, sodass Sie die Struktur in der API-Dokumentation unter https://stripe.com/docs/api#customer_object sehen können. Wenn Sie unter https://dashboard.stripe.com/account/webhooks einen Endpunkt hinzufügen und "Zu sendende Typen auswählen" auswählen, können Sie alle Arten von Webhooks sehen, die an Sie gesendet werden.

Es gibt viele Ereignisse, bei denen es nicht wirklich Sinn macht, nach einem customer auf dem Ereignis zu suchen, also wäre es wahrscheinlich nützlich, nur die gewünschten Ereignistypen zu abonnieren.