Я пытаюсь завершить, казалось бы, простой проект, который каким-то образом победил меня (скорее всего, мои минимальные знания в этом вопросе).Что мне нужно сделать, это опубликовать простой XML-запрос по URL-адресу, а затем сохранить XML-ответ в моей базе данных.
Я не могу найти способ сохранить ответ в моей базе данных
Пока я былвозможность создать XML-запрос с использованием данных из моей базы данных и отправить его на шлюз //thirdparty.com/xmlpayment".
мой запрос выглядит ниже и отправляется с //mysite.com/app/clients_payment_xml/:
РЕДАКТИРОВАТЬ: рабочее решение ниже
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<PAYMENT>
<ORDERID>1020</ORDERID>
<AMOUNT>10</AMOUNT>
</PAYMENT>';
// give the path of the Third party site
$url = "https://3rdparty.com/xmlpayment";
$ch = curl_init($url);
//curl_setopt($ch, CURLOPT_MUTE, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
// echo $output;
//retrieve a object(SimpleXMLElement)
$output_db = simplexml_load_string($output);
var_dump($output_db);
echo $output_db->UNIQUEREF;
//DATABASE UPDATE
//connection details
include 'database_conn';
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// update statement for agent details
$sql = "INSERT INTO my_table (value_1, value_2) VALUES ('".$output_db->UNIQUEREF."', 'Not Checked')";
// messages
if ($conn->query($sql) === TRUE) {
echo "
<div class='alert alert-metal'>
database updated!
</div>
";
} else {
echo "
<div class='alert alert-metal'>
<strong>Oops!</strong>error during updating databe:
</div>
" . $conn->error;
}
$conn->close();
Транзакция хранится на стороннем сайте и отправляет ответ XML обратно на тот же URL //mysite.com/app/clients_payment_xml/
Ответ XML выглядит следующим образом:
<!--?xml version="1.0" encoding="UTF-8"?-->
<html>
<head></head>
<body>
<paymentresponse>
<uniqueref>C687BTPHSZ</uniqueref>
<responsecode>A</responsecode>
<responsetext>APPROVAL</responsetext>
<approvalcode>475318</approvalcode>
<datetime>2019-09-26T21:01:43</datetime></paymentresponse>
</body>
</html>
Я думаю, что я анализирую XML
object(SimpleXMLElement)#11 (8) { ["UNIQUEREF"]=> string(10) "C33YGJ14C8"
и я знаю, что соединение в порядке и запись создана, однако uniqueref всегдаempty
Я предполагаю, что у меня есть ошибка где-то около переменной uniqueref, но я понятия не имею, где - я действительно застрял здесь, и любая помощь очень ценится.