2017-03-01 41 views
0

我第一次使用Webhooks進行測試。我想建立一個Webhook(使用GoCardless.com,但現在這應該不重要)。如何通過Webhook獲取數據? (GoCardless)

我在沙箱中,我已經建立了一個網絡掛接有:

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

然後我試圖將網絡掛接發送到我的webhook.php有這個代碼:

<?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); 

你可以在這裏看到的結果:

enter image description here

所以,我假設我會像顯示的那樣獲取$_REQUEST['events']的數據,但在底部可以看到我只返回空數組。

這是關於密鑰的事情嗎(qpILcgnnAWznkuJcajXYvMNsQcrkKwDzL6KHMq5z)?

我不知道如何設置它。

回答

2

網絡掛接數據發送到服務器,JSON。在PHP中,您需要通過file_get_contents('php://input')來訪問它。在處理網絡掛接

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

對於一個完整的指南,請參閱GoCardless的getting started guide

一旦你得到了身體,您可以將其解碼到一個數組,然後用,但是你想中的數據。這也向你展示瞭如何使用密鑰來確保Gohookless的webhook真正來自並且不被欺騙。

你在這篇文章中已經包含了你的webhook祕密,所以你現在要重置它,否則有人可能會給你假裝成GoCardless的虛假webhook。您可以在您的sandbox GoCardless dashboard中點擊左側的「開發者」,然後點擊您的端點,然後點擊「編輯」。

+0

謝謝。我記得當我問這個問題時忽略了一些文檔,並在當時解決了我的問題。我在這篇文章中沒有使用真正的webhook祕密,但很高興知道。 – AlexioVay