Array или Массив с данными?

Согласно документации Сбера пытаюсь передать данные корзины при регистрации заказа и получаю ошибку написал в поддержку, но ответ поставил меня в тупик.
Данные запроса:
{ 
["userName"]=> "****" 
["password"]=> "****" 
["amount"]=> 500
["currency"]=> 643 
["orderNumber"]=> 38206
["orderBundle"]=> { 
    ["customerDetails"]=> { ["email"]=> "****@mail.ru" }
    ["cartItems"]=> { 
        ["items"]=> { { 
            ["positionId"]=> 1 
            ["name"]=> "Bone" 
            ["quantity"]=>{ 
                ["value"]=> 1 
                ["measure"]=> "шт."
            } 
            ["itemCode"]=> "13-2" 
            ["itemPrice"]=> 200 
            } 
            { ["positionId"]=> 2
            ["name"]=> "Pear" 
            ["quantity"]=> { 
                ["value"]=> 1 
                ["measure"]=> "шт." 
                } 
            ["itemCode"]=> "97-2" 
            ["itemPrice"]=> 300
            } 
        } 
    } 
} 
["phone"]=> "7926*******" 
["email"]=> "******@mail.ru" 
["sessionTimeoutSecs"]=> 86400
["returnUrl"]=> "https://www.****" 
["failUrl"]=> "https://www.****" 
}

получаю ошибку
"result":{"errorCode":"8","errorMessage":"[orderBundle] Ошибка Unrecognized token 'Array': was expecting ('true', 'false' or 'null')"}}
если убрать из него orderBundle то всё работает.
Ответ службы поддержки:
Некорректно передан oderBundle:
May 27, 2024 @ 09:27:06.640
POST https://securepayments.sberbank.ru/payment/rest/register.do
password:****; amount:500; orderNumber:38203; sessionTimeoutSecs:86400; phone:7926*******; currency:643; orderBundle:Array; failUrl:https://www.***; userName:***; returnUrl:https://www.***; email:***@mail.ru; Content-Type:multipart/form-data; boundary=------------------------119021b3628e56d8;

Вы передали orderBundle:Array; - а не массив с данными.
Не могу понять что не так, как передать массив с данными?
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
curl_setopt_array() принимает массив строк. А у вас 'orderBundle' - это массив, состоящий ещё из массивов. Придётся преобразовывать его в строку самостоятельно...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Сдаётся мне, что вы запрос выдали через print_r или var_dump вместо json_encode
Ответ написан
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
После внимательного чтения вопроса и комментариев, скорее всмего сработает

CURLOPT_POSTFIELDS=> http_build_query($postdata),

А если не поможет - то гуглить отправку джейсона курлом
Ответ написан
Ваш ответ на вопрос

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

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