如何从条纹事件中获取客户ID

问题描述:

我已经设置了一个webhook,其中处理从条纹发送的事件。然而,我注意到,并非所有事件都具有相同的结构。如何从条纹事件中获取客户ID

我目前获取客户这样说:

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

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

经过一天或两个,我发现,并不是所有的事件包含客户$event_json->data->object->customer下。下面是一个例子回应:

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

我所问的是,我可以看到所有可能的事件结构的一个例子,这样我可以确保我的网络挂接不返回Could not determine which URL to request: Stripe\Customer instance has invalid ID: (500 Internal Server Error)?

注:我做看到这个问题 - How to get a customer ID from event object in stripe,但唯一给出的方法是$event_json->data->object->customer

+0

它是'$ event_json-> object-> sources-> data [0] - > customer' – Farkie

+0

在这个特定的例子中 - 是的。但它并不包括所有的事件类型。 –

条纹webhooks与相关对象的API端点共享相同的结构。在上面的示例中,object字段设置为customer,因此您可以在https://stripe.com/docs/api#customer_object处看到API文档中的结构。如果您转到​​并添加端点,并选择“选择要发送的类型”,您可以看到将发送给您的所有类型的webhook。

有很多事件在事件上寻找customer并没有什么意义,因此只订阅所需的事件类型可能很有用。