2017-03-01 13 views
0

Ich teste mit Webhooks zum ersten Mal. Ich möchte einen Webhook einrichten (mit GoCardless.com, aber das sollte jetzt keine Rolle mehr spielen).Wie bekomme ich Daten über den Webhook? (GoCardless)

ich in der Sandbox bin, und ich habe ein Webhook eingerichtet:

{ 
    "id": "WE000012RYRQ9E", 
    "created_at": "2017-03-01T18:03:34.252Z", 
    "enabled": true, 
    "secret": "qpILcgnnAWznkuJcajXYvMNsQcrkKwDzL6KHMq5z", 
    "name": "TestHook", 
    "url": "https://example.com/webhook.php", 
    "client_cert_details": null, 
    "links": {} 
} 

Dann versuche ich eine Webhook meiner webhook.php mit diesem Code zu senden:

<?php 
header('Content-Type: application/json'); 

$result = $_REQUEST['events']; 
$obj = json_decode($result, true); 

print_r($_GET); 
print_r($_POST); 
print_r($_REQUEST); 
print_r($result); 
print_r($obj); 

Sie sehen das Ergebnis hier:

enter image description here

Also, ich angenommen, dass ich die Daten mit $_REQUEST['events'] wie angezeigt bekomme, aber am unteren Rand sieht man, dass ich nur leere Arrays zurückbekomme.

Ist das etwas über den geheimen Schlüssel (qpILcgnnAWznkuJcajXYvMNsQcrkKwDzL6KHMq5z)?

Ich weiß nicht, wie man das aufstellt.

Antwort

2

Die Webhook Daten werden auf dem Server als JSON in den Körper der Anforderung gesendet. In PHP müssen Sie darauf mit file_get_contents('php://input') zugreifen.

Sobald Sie den Körper haben, können Sie es in ein Array, dekodieren und dann mit den Daten arbeiten, wie Sie wollen:

$raw_payload = file_get_contents('php://input'); 
$payload = json_decode($raw_payload, true); 

// Each webhook may contain multiple events to handle, batched together 
foreach ($payload["events"] as $event) { 
    // Do something with the event here 
    print("Processing event " . $event["id"] . "\n"); 
} 

Eine vollständige Anleitung zum Umgang mit webhooks finden GoCardless des getting started guide. Das zeigt Ihnen auch, wie Sie den geheimen Schlüssel verwenden, um sicherzustellen, dass ein Webhook wirklich von GoCardless kommt und nicht gefälscht wird.

Sie haben Ihren Webhook-Geheimcode in diesen Post eingefügt, Sie sollten ihn also jetzt zurücksetzen, sonst könnte Ihnen jemand gefälschte Webhooks schicken, die vorgeben, GoCardless zu sein. Sie können das in Ihrem sandbox GoCardless dashboard tun, indem Sie auf "Entwickler" auf der linken Seite klicken, dann auf Ihren Endpunkt klicken und dann auf "Bearbeiten" klicken.

+0

Danke. Ich erinnere mich daran, einige Dokumente zu übersehen, als ich diese Frage gestellt habe und mein Problem damals gelöst wurde. Ich habe in diesem Beitrag kein echtes Webhook-Geheimnis benutzt, aber es ist schön zu wissen. – AlexioVay

Verwandte Themen