powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / curl put
15 сообщений из 15, страница 1 из 1
curl put
    #38417828
jemoje
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посылаю запрос с авторизацией через PUT

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
$market=id;
$pass="pass";
$bill=00001;

$url = "https://w.qiwi.com/api/v2/prv/".$market."/bills/".$bill;

$headers = array(
	"Accept: text/json",
	"Content-Type: application/x-www-form-urlencoded; charset=utf-8"
);

$query = http_build_query(array(
	"user" => "tel:79001234567",
	"amount" => "10.00",
	"ccy" => "RUB",
	"comment" => "test",
	"lifetime" => "2013-11-25T09 00 00",
	"pay_source" => "mobile",
	"prv_name" => "acc"
));

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $market.":".$pass);

curl_setopt($ch, CURLOPT_PUT, 1);
curl_setopt($ch, CURLOPT_PUTFIELDS, $query);

$output = curl_exec($ch);

echo "<pre>\n";
echo htmlentities($output);
echo "</pre>\n";



авторизация прошла успешно и в ответ приходит
Код: java
1.
2.
3.
4.
{"response": {
  "result_code": 341,
  "description": "Parameter 'amount' was not found."
}}



т.е. почему то не передаётся данные $query

непойму почему
...
Рейтинг: 0 / 0
curl put
    #38418101
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что есть CURLOPT_PUTFIELDS ? Вы может меили в виду CURLOPT_POSTFIELDS ?
...
Рейтинг: 0 / 0
curl put
    #38418146
jemoje
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РенатЧто есть CURLOPT_PUTFIELDS ? Вы может меили в виду CURLOPT_POSTFIELDS ?тоже что и для пост только для пута
...
Рейтинг: 0 / 0
curl put
    #38418241
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jemojeтоже что и для пост только для пута Где нашли такую опцию?
...
Рейтинг: 0 / 0
curl put
    #38418242
jemoje
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да вижу нету, делал по примеру POST
ошибок небыло

тогда как же передать строку $query по PUT?
...
Рейтинг: 0 / 0
curl put
    #38418249
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jemoje, Какой нафиг квери? Вы мануал то читали?

мануалCURLOPT_PUT TRUE для загрузки файла методом HTTP PUT. Используемый файл должен быть установлен с помощью параметров CURLOPT_INFILE и CURLOPT_INFILESIZE.

PS: Может быть, POST нужен, а не PUT?
...
Рейтинг: 0 / 0
curl put
    #38418438
jemoje
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делаю новый REST протокол для КИВИ платежей.

ОписаниеДля выставления счета пользователю Visa QIWI Wallet от провайдера
необходимо послать PUT-запрос по адресу:
https://w.qiwi.com/api/v2/prv/{prv_id}/bills/{bill_id}
{prv_id} - числовой идентификатор провайдера
{bill_id} - уникальный идентификатор счета на стороне провайдера

Пример:
Код: java
1.
2.
3.
4.
5.
6.
7.
PUT /api/v2/prv/2042/bills/BILL-1 
Accept: text/json 
Authorization: Basic MjA0Mjp0ZXN0Cg== 
Content-Type: application/x-www-form-urlencoded; charset=utf-8 
 
user=tel%3A%2B79031234567&amount=10.0&ccy=RUB&comment=test&lifetime
=2012-11-25T09%3A00%3A00 




Ответ:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
HTTP/1.1 200 OK 
Content-Type: text/json 
 
{"response": { 
  "result_code": 0, 
  "bill": { 
    "bill_id": "BILL-1", 
    "amount": "10.00", 
    "ccy": "RUB", 
    "status": "waiting", 
    "error": 0, 
    "user": "tel:+79031234567", 
    "comment": "test" 
  } 
}} 





Полный мануал http://rghost.ru/49202736
...
Рейтинг: 0 / 0
curl put
    #38418439
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://github.com/amazonwebservices/aws-sdk-for-php

юзайте готове библиотеки раз не умеете через curl Напрямую работать
...
Рейтинг: 0 / 0
curl put
    #38418440
jemoje
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все спасибо нашёл решение:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
$market=id;
$pass="pass";
$bill=00001;

$url = "https://w.qiwi.com/api/v2/prv/".$market."/bills/".$bill;

$headers = array(
	"Accept: text/json",
	"Content-Type: application/x-www-form-urlencoded; charset=utf-8"
);

$query = http_build_query(array(
	"user" => "tel:+79001234567",
	"amount" => "10.00",
	"ccy" => "RUB",
	"comment" => "test",
	"lifetime" => "2013-12-12T15:19:21+00:00",
	"pay_source" => "mobile",
	"prv_name" => "acc"
));

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $market.":".$pass);

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

$output = curl_exec($ch);

echo "<pre>\n";
echo htmlentities($output);
echo "</pre>\n";
...
Рейтинг: 0 / 0
curl put
    #38698452
Devel0per
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот еще приме отправки методом PUT с помощью curl http://codeskipper.blogspot.ru/2014/07/put.html
Возможно пригодится )
...
Рейтинг: 0 / 0
curl put
    #38698742
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jemojeВсе спасибо нашёл решение:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
$market=id;
$pass="pass";
$bill=00001;

$url = "https://w.qiwi.com/api/v2/prv/".$market."/bills/".$bill;

$headers = array(
	"Accept: text/json",
	"Content-Type: application/x-www-form-urlencoded; charset=utf-8"
);

$query = http_build_query(array(
	"user" => "tel:+79001234567",
	"amount" => "10.00",
	"ccy" => "RUB",
	"comment" => "test",
	"lifetime" => "2013-12-12T15:19:21+00:00",
	"pay_source" => "mobile",
	"prv_name" => "acc"
));

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $market.":".$pass);

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

$output = curl_exec($ch);

echo "<pre>\n";
echo htmlentities($output);
echo "</pre>\n";



вцелом - это решение на чесном слове.
более того - странно что работает, ведь CURLOPT_POSTFIELDS для ПОСТ запроса..был бы, или будет код написан более строго, будет отбразывать.

в любом случае, это не решение...а случайно получилось.
...
Рейтинг: 0 / 0
curl put
    #38698756
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devel0perВот еще приме отправки методом PUT с помощью curl http://codeskipper.blogspot.ru/2014/07/put.html
Возможно пригодится )

а вот это уже похоже на решение, только автор этой статейки - не потрудился найти решение доконца.

при передаче методом пут, не обязательно делать временный файл.
вёдь это обращение к винчестеру лишнее, а если система обработки платежей, то это не единичный случай подобной отправки.

вкачестве инфайл, ожидаеться поток, в том числе, и свой клас подойдёт который реализует нужный интерфейс. и легко

написать клас, который будет при инициализации получать строку текста(как содежимое файла) а потом реагировать на все методы интерфейсные
...
Рейтинг: 0 / 0
curl put
    #38698767
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ооо, на сайте пхп даже пример есть как из переменой делать файл

тыц
...
Рейтинг: 0 / 0
curl put
    #38698902
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
alex564657498765453вцелом - это решение на чесном слове.
более того - странно что работает, ведь CURLOPT_POSTFIELDS для ПОСТ запроса..был бы, или будет код написан более строго, будет отбразывать.

в любом случае, это не решение...а случайно получилось.Ну если смотреть и на оригинальную документацию по libcurl , оно будет понятнее:When you change the request method by setting CURLOPT_CUSTOMREQUEST to something, you don't actually change how libcurl behaves or acts in regards to the particular request method, it will only change the actual string sent in the request. учитывая также Using CURLOPT_POSTFIELDS implies CURLOPT_POSTтаким образом запрос обрабатывается точно так же как POST, но только подменяет POST на PUT в заголовке запроса...
...
Рейтинг: 0 / 0
curl put
    #38699209
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://github.com/guzzle/guzzle

хватит писать свои велосипеды.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / curl put
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]