allgerasimof
@allgerasimof

Как побороть syntax error, unexpected '{' при передаче данных через CURLOPT_POSTFIELDS?

Ниже код из API - https://yclients.docs.apiary.io/#reference/9/2/1. Проблема в том, что он не запускается, ругаясь на открывающуюся фигурную скобку после CURLOPT_POSTFIELDS. Сами они свою API практически бросили, поддержка внятного ничего ответить не может.

С методами для получения информации через API проблем не возникло. А вот любые изменения вносить предлагается именно с таким синтаксисом, на что PHP реагирует нежеланием выполнять код. Перепробовал довольно много вариантов, не хватает знаний побороть проблему.

<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://api.yclients.com/api/v1/record/company_id/record_id");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");

curl_setopt($ch, CURLOPT_POSTFIELDS,     {
        \"staff_id\": 8886,
        \"services\": [
            {
                \"id\":331,
                \"first_cost\": 9000,
                \"discount\": 50,
                \"cost\": 4500
            },
            {
                \"id\":333,
                \"first_cost\": 2000,
                \"discount\": 10,
                \"cost\": 1800
            }
        ],
        \"client\": {
            \"phone\": \"79169999900\",
            \"name\": \"Дмитрий\",
            \"email\": \"d@yclients.com\",
        },
        \"clients_count\": 1,
        \"save_if_busy\": false,
        \"datetime\": \"2015-12-12T12:00:00+04:00\",
        \"seance_length\": 3600,
        \"send_sms\": true,
        \"comment\": \"тестовая запись!\",
        \"sms_remain_hours\": 6,
        \"email_remain_hours\": 24,
        \"attendance\": 1,
        \"api_id\": \"777\"
    });

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/json",
  "Authorization: Bearer partner_token, User user_token"
));

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
JhaoDa
@JhaoDa
LaravelRUS Team
Во-первых, прежде чем браться за правку кода, надо хотя бы по минимуму изучить синтаксис языка.
Во-вторых, у них есть готовый SDK, дабы не изобретать своих велосипедов.
В-третьих,
curl_setopt($ch, CURLOPT_POSTFIELDS, '{...}');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы