Задать вопрос
MasterGerold
@MasterGerold

Как сделать xml запрос yii2?

Доброго времени суток! Есть API и там написано
Обмен данными осуществляется XML запросами на адрес https://api.privatbank.ua/p24api/pay_pb

На сколько я понимаю это нужно заполнить данные в xml файлу нужными данными и как то закинуть их на тот адрес) Я не силен в xml запросах и тем более через фреймворк. Подскажите пожалуйста где о таких запросах можно почитать или может есть видео. А лучше кому не сложно объяснить здесь. Заранее спасибо вам за ответы!
  • Вопрос задан
  • 1296 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Скорее всего имеется в виду, что вам будет ответ приходить в xml формате. Попробуйте сделать обычный POST запрос.
Ответ написан
Комментировать
mhthnz
@mhthnz
PHP, YII2, Golang, Linux
В данном случае xml передается в теле запроса. Отправлять в этом случае удобнее через curl:
<?php
$url = "https://api.privatbank.ua/p24api/pay_pb";
$xml = '
<?xml version="1.0" encoding="UTF-8"?>
<request version="1.0">
  <merchant>
    <id>75482</id>
    <signature>99730232b2f984c571507a0e74595e777afd0428</signature>
  </merchant>
  <data>
    <oper>cmt</oper>
    <wait>0</wait>
    <test>0</test>
    <payment id="1234567">
      <prop name="b_card_or_acc" value="4627081718568608" />
      <prop name="amt" value="1" />
      <prop name="ccy" value="UAH" />
      <prop name="details" value="test%20merch%20not%20active" />
    </payment>
  </data>
</request>
';

$headers = array(
    "Content-type: text/xml",
    "Content-length: " . strlen($xml),
    "Connection: close",
);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$data = curl_exec($ch); 
echo $data;
if(curl_errno($ch))
    print curl_error($ch);
else
    curl_close($ch);
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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