чтение значений Stripe webhook в Json - PullRequest
1 голос
/ 25 мая 2019

Я пытаюсь прочитать значения Stripe webhook в PHP. Отправленный webhook имеет следующий формат:

{
  "created": 1312403445,
  "livemode": false,
  "id": "evt_00000000000000",
  "type": "checkout.session.completed",
  "object": "event",
  "request": null,
  "pending_webhooks": 1,
  "api_version": "2019-03-14",
  "data": {
    "object": {
      "id": "cs_00000000000000",
      "object": "checkout.session",
      "billing_address_collection": null,
      "cancel_url": "https://example.com/cancel",
      "client_reference_id": null,
      "customer": null,
      "customer_email": null,
      "display_items": [
        {
          "amount": 1500,
          "currency": "usd",
          "custom": {
            "description": "Comfortable cotton t-shirt",
            "images": null,
            "name": "T-shirt"
          },
          "quantity": 2,
          "type": "custom"
        }
      ],
      "livemode": false,
      "locale": null,
      "payment_intent": "pi_00000000000000",
      "payment_method_types": [
        "card"
      ],
      "subscription": null,
      "success_url": "https://example.com/success"
    }
  }
}

Я записываю отправленное значение в таблицу в базе данных. PHP на моем сервере:

    require 'connectFile.php'; // connect my database
    require_once('vendor/autoload.php');
    require_once('vendor/stripe/stripe-php/init.php');

    $input = @file_get_contents('php://input');
    $event_json = json_decode($input);
    $value_id=$event_json->data->object->id;
    //value_created= $event_json->created;

    $sql = "INSERT INTO myTable VALUES ("test","."'".$value_id."'".")";
    $prepare = $pdo->prepare($sql);
    $prepare ->execute();
    http_response_code(200); // PHP 5.4 or greater

Проблема в том, что когда я пытаюсь прочитать данные-> объект-> идентификатор, он записывает 0 в базу данных. Но если я читаю value_created = $ event_json-> созданный вместо этого, он правильно читает значение.

Знаете ли вы, что не так и почему оно читается как 0?

1 Ответ

1 голос
/ 25 мая 2019

Я думаю, что вы подготовили неправильный запрос.Попробуйте:

$sql = "INSERT INTO myTable VALUES ('test',':prepared_id')";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':prepared_id', $value_id, PDO::PARAM_STR);
$stmt->execute();

Также это более безопасный метод, потому что построение строк в запросе небезопасно: D

...