passshift
@passshift
php, js, html5, css

POST запрос к Yandex Money API, как?

Здравствуйте!

Пытаюсь сделать запрос:

$request = Request::factory('http://money.yandex.ru/quickpay/confirm.xml')
                ->method('POST')
                ->post(array(
                            'receiver' => '41001299****',
                            'quickpay-form' => 'shop',
                            'targets' => 'Интернет-магазин *****',
                            'sum' => '990',
                            'successURL' => 'http://site.net/result'
                        ))
                ->headers('Content-Type', 'application/x-www-form-urlencoded');

$response = $request->execute();

echo $response->body();


- результат пустая страница...

Не подскажите в чем причина? MIME указал, вроде больше ничего и не нужно. Ситуация такая, что показывать форму на странице нельзя и нужно по клику перенаправлять сразу к форме оплаты на сайт денег...
  • Вопрос задан
  • 2623 просмотра
Пригласить эксперта
Ответы на вопрос 2
@liff
PHP >= 5.4, 7 + PostgreSQL + JS + EmberJs +++
$ch = curl_init('money.yandex.ru/quickpay/confirm.xml');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, urlencode(ДАННЫЕ));

$result = curl_exec($ch);
$responseInfo = curl_getinfo($ch);

print_r([$result,responseInfo]);
Ответ написан
@bkosun
А что за фреймворк? Если Kohana, то:
$result = Request::factory('http://money.yandex.ru/quickpay/confirm.xml')
    ->query(array(
            'receiver' => '41001299****',
            'quickpay-form' => 'shop',
            'targets' => 'Интернет-магазин *****',
            'sum' => '990',
            'sum' => '990',
            'successURL' => 'http://site.net/result',
        ))
    ->headers('Content-Type', 'application/x-www-form-urlencoded')
    ->method(HTTP_Request::POST)
    ->execute();

die($result->body());

или так:

$params = array(
    'receiver' => '41001299****',
    'quickpay-form' => 'shop',
    'targets' => 'Интернет-магазин *****',
    'sum' => '990',
    'sum' => '990',
    'successURL' => 'http://site.net/result',
    );

$uri = 'http://money.yandex.ru/quickpay/confirm.xml' . '?' . http_build_query($params);

$result = Request::factory($uri)
    ->method(HTTP_Request::POST)
    ->execute()
    ->headers('Content-Type', 'application/x-www-form-urlencoded');

die($result->body());
Ответ написан
Ваш ответ на вопрос

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

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