Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

не проходит элемент $_POST массива


Recommended Posts

Доброго всем.

Есть проблемма. Пишу модуль оплаты. Валидация оплаты проходит после посылки  3-х последовательных POST запросов от системы оплаты и моих ответов на каждый запрос. В элементе пост запроса с именем XML получаю сообщения, обрабатываю их и отвечаю. Все проходит нормально, кроме отмены оплаты.

По словам тех поддержки системы оплаты, в случае отмены они шлют точно такой же POST как и в других ситуациях (теже заголовки и тп). Отличия только в самом XML сообщении.

На входе функции приема сообщения от системы оплаты логирую $_POST['XML']. Во всех ситуациях кроме отмены оплаты элемент массива содержит xml сообщение. В случае отказа от оплаты, $_POST['XML'] существует, но пустой.

 

Вот таким его отправляют мне:

<?xml version="1.0" encoding="windows-1251" ?>
<ServiceProvider_Request>
<DateTime>20140212173811</DateTime>
<Version>1</Version>
<RequestType>TransactionResult</RequestType>
<PersonalAccount>1092</PersonalAccount>
<Currency>974</Currency>
<RequestId>27214</RequestId>
<TransactionResult>
<TransactionId>681545</TransactionId>
<ServiceProvider_TrxId>681545</ServiceProvider_TrxId>
<ErrorText>Операция отменена</ErrorText>
</TransactionResult>
</ServiceProvider_Request>

 

Почему он может пропадать? Спасибо.

Надіслати
Поділитися на інших сайтах


Попробуйте парсить ответ на <ErrorText>, предполагаю, в норм. ответе отсутствует или пустой текущий элемент массива. В общем, копать в сторону идентификатора, который отличает ответы.

Надіслати
Поділитися на інших сайтах

Похоже проблема с входящими сообщениями в кириллице windows-1251. Затирает сообщения или магазин или хостер. При чем все символы, включая цифры, анг буквы и пр.. Может было у кого?

Надіслати
Поділитися на інших сайтах


сделал отдельный лог на входящие POST как тут:

 https://ilser.by/blog/zametki-sisadmina/logirovanie-post-zaprosov-k-sajtu/

 

и оно таки доходит. Обрезает опенкарт. Где капнуть????

Надіслати
Поділитися на інших сайтах


Таки нашел заразу.

/system/library/request.php

 

 

public function clean($data) {


if (is_array($data)) {
foreach ($data as $key => $value) {
unset($data[$key]);

$data[$this->clean($key)] = $this->clean($value);
}
} else {
$data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');
}

return $data;

 

чистит сообщения.

Осталось разобраться по какому условию OPENCART не пропускает кирилицу win_1251

Надіслати
Поділитися на інших сайтах


как не хотелось бы, но пришлось модифицировать движок магазина.

 

 

Содержимое файла xml для vqmod

 

<modification>
<id>Erip Cyrillic</id>
<version>1.0</version>
<vqmver>2.1.5</vqmver>
<author>Vlad</author>

<file name="/system/library/request.php">
<operation>
<search position="replace"><![CDATA[$data = htmlspecialchars($data, ENT_COMPAT,'UTF-8');]]></search>
<add><![CDATA[if(preg_match('//u', $data))
{$data = htmlspecialchars($data, ENT_COMPAT,'UTF-8');}
else
{$data = htmlspecialchars($data, ENT_COMPAT,'Windows-1251');}]]>
</add>
</operation>
</file>
</modification>

 

если у хостера php 5.4, то htmlspecialchars($data, ENT_COMPAT,'UTF-8'); - не пропустит ничего кириллического отличного от UTF-8.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.