2013-08-01 66 views
0

我正在使用Paymill作爲我的付款提供商,並且我陷入了Webhooks的困境。如何使用PHP中的webhooks工作

目前,我通過電子郵件收到的webhook按照下面,但我想在網頁中選擇它,並將其張貼到我的數據庫。我知道如何做到這一點,但我不確定我是如何拿起單個帖子的。

{ 
    "event_type":"transaction.created", 
    "event_resource":{ 
     "id":"tran_9x2x8xex5x7xexex0x8x9xexexbx", 
     "amount":"9980", 
     "origin_amount":9980, 
     "status":"open", 
     "description":"9xax1x7x5x8x2xaxaxcx4x5xfx8x2x2x", 
     "livemode":true, 
     "refunds":null, 
     "currency":"GBP", 
     "created_at":1375307922, 
     "updated_at":1375307922, 
     "response_code":10001, 
     "short_id":null, 
     "is_fraud":false, 
     "invoices":[ 

     ], 
     "app_id":null, 
     "fees":[ 

     ], 
     "payment":{ 
      "id":"pay_7xdxex9xfxcx6x3x9x5x7xcx", 
      "type":"creditcard", 
      "client":"client_2x2xex0x2x4xx3bx3x6x", 
      "card_type":"mastercard", 
      "country":null, 
      "expire_month":"10", 
      "expire_year":"2015", 
      "card_holder":"XXX XXXXXX", 
      "last4":"8XX8", 
      "created_at":1375307921, 
      "updated_at":1375307922, 
      "app_id":null 
     }, 
     "client":{ 
      "id":"client_2x2xex0x2x4xfx3x3x6x", 
      "email":null, 
      "description":null, 
      "created_at":1375307922, 
      "updated_at":1375307922, 
      "app_id":null, 
      "payment":[ 

      ], 
      "subscription":null 
     }, 
     "preauthorization":null 
    }, 
    "created_at":1375307922, 
    "app_id":null 
} 

那我怎麼拉出來使用PHP event_resource ID?

通常我會只是做<?php $_POST['event_resource]; ?>

回答

1

這看起來像一個JSON對象,所以用json_decode()把它轉換成一個漂亮的PHP對象。

$reply = json_decode($data_from_hook); 

示例代碼:

<?php 


    $t = '{ 
    "event_type":"transaction.created", 
    "event_resource":{ 
     "id":"tran_9x2x8xex5x7xexex0x8x9xexexbx", 
     "amount":"9980", 
     "origin_amount":9980, 
     "status":"open", 
     "description":"9xax1x7x5x8x2xaxaxcx4x5xfx8x2x2x", 
     "livemode":true, 
     "refunds":null, 
     "currency":"GBP", 
     "created_at":1375307922, 
     "updated_at":1375307922, 
     "response_code":10001, 
     "short_id":null, 
     "is_fraud":false, 
     "invoices":[ 

     ], 
     "app_id":null, 
     "fees":[ 

     ], 
     "payment":{ 
      "id":"pay_7xdxex9xfxcx6x3x9x5x7xcx", 
      "type":"creditcard", 
      "client":"client_2x2xex0x2x4xx3bx3x6x", 
      "card_type":"mastercard", 
      "country":null, 
      "expire_month":"10", 
      "expire_year":"2015", 
      "card_holder":"XXX XXXXXX", 
      "last4":"8XX8", 
      "created_at":1375307921, 
      "updated_at":1375307922, 
      "app_id":null 
     }, 
     "client":{ 
      "id":"client_2x2xex0x2x4xfx3x3x6x", 
      "email":null, 
      "description":null, 
      "created_at":1375307922, 
      "updated_at":1375307922, 
      "app_id":null, 
      "payment":[ 

      ], 
      "subscription":null 
     }, 
     "preauthorization":null 
    }, 
    "created_at":1375307922, 
    "app_id":null 
}'; 





echo PHP_EOL; 
$u = json_decode($t); 
print_r($u); 

echo 'Event Rosource ID = ' . $u->event_resource->id; 

結果:

stdClass Object 
(
    [event_type] => transaction.created 
    [event_resource] => stdClass Object 
     (
      [id] => tran_9x2x8xex5x7xexex0x8x9xexexbx 
      [amount] => 9980 
      [origin_amount] => 9980 
      [status] => open 
      [description] => 9xax1x7x5x8x2xaxaxcx4x5xfx8x2x2x 
      [livemode] => 1 
      [refunds] => 
      [currency] => GBP 
      [created_at] => 1375307922 
      [updated_at] => 1375307922 
      [response_code] => 10001 
      [short_id] => 
      [is_fraud] => 
      [invoices] => Array 
       (
       ) 

      [app_id] => 
      [fees] => Array 
       (
       ) 

      [payment] => stdClass Object 
       (
        [id] => pay_7xdxex9xfxcx6x3x9x5x7xcx 
        [type] => creditcard 
        [client] => client_2x2xex0x2x4xx3bx3x6x 
        [card_type] => mastercard 
        [country] => 
        [expire_month] => 10 
        [expire_year] => 2015 
        [card_holder] => XXX XXXXXX 
        [last4] => 8XX8 
        [created_at] => 1375307921 
        [updated_at] => 1375307922 
        [app_id] => 
       ) 

      [client] => stdClass Object 
       (
        [id] => client_2x2xex0x2x4xfx3x3x6x 
        [email] => 
        [description] => 
        [created_at] => 1375307922 
        [updated_at] => 1375307922 
        [app_id] => 
        [payment] => Array 
         (
         ) 

        [subscription] => 
       ) 

      [preauthorization] => 
     ) 

    [created_at] => 1375307922 
    [app_id] => 
) 


Event Rosource ID = tran_9x2x8xex5x7xexex0x8x9xexexbx 
0

這將得到你的JSON:

$body = @file_get_contents('php://input'); 
$json = json_decode($body, true);