Перейти к содержанию
Форум поддержки пользователей VamShop

Проблема при работе с qiwi_rest


Рекомендуемые сообщения

Добрый день.

Вроде нашел способ устранения описанной выше проблемы:

в файле checkout.php

Находим:

############################# Validate start - NOT LOGGED ON #######################################
  $process = false;

и вставляем

############################# Validate start - NOT LOGGED ON #######################################

if (!isset($_SESSION['qiwi_telephone'])) $_SESSION['qiwi_telephone'] = $_POST['qiwi_telephone'];


  $process = false;

После этого номер телефона стал передаваться в модуль qiwi_rest.

 

Не уверен, что это правильное решение, но у меня заработало. Посмотрите, хотел бы увидеть правильное и корректное решение.

Добрый день.

После внесения корректив, понаблюдал, было несколько заказов с оплатой QIWI/ Вот что увидел:

1. Несмотря на добавление указанного выше кода, все равно есть случаи, когда номер телефона не передается. Расширил логирование, буду наблюдать.

2. Почти всегда клиент создает несколько заказов (очевидно, не сразу попадает на страницу QIWI и нажимает кнопку назад и нажимает кнопку "подтвердить" снова.

 

Есть ли какие мысли, что делать с этой проблемой?

Ссылка на сообщение
Поделиться на другие сайты
  • 1 month later...

Добрый день.

Обнаружил еще одну проблему после внесения указанных доработок. Если клиент зарегистрирован и при быстром заказе пару раз кликнет мышкой в поле телефона киви, то значение в этом поле изменится, на сохраненное в БД, а именно в формате (987)654-3210, что приводит к ошибке при формировании счета киви.

Я сделал такую доработку в модуле qiwi_rest.php

 

Вместо

$_data = "user=" . urlencode("tel:+" . ($_SESSION['qiwi_telephone'] == '' ? $_POST['qiwi_telephone'] : $_SESSION['qiwi_telephone'])) . "&amount=" . urlencode($summ) . "&ccy=" . urlencode($currency_code) . "&comment=" . urlencode($order_id) . "&lifetime=" . urlencode($life_time). "&prv_name=" . urlencode(STORE_NAME);

Вставил

		$QPhone = ($_SESSION['qiwi_telephone'] == '' ? $_POST['qiwi_telephone'] : $_SESSION['qiwi_telephone']);

		 
		$QPhone = preg_replace('"\\D"','',$QPhone);
		
		if (substr($QPhone,0,1) != "7") {
				$QPhone = "7" . $QPhone;
		}

		
		$_data = "user=" . urlencode("tel:+" . $QPhone) . "&amount=" . urlencode($summ) . "&ccy=" . urlencode($currency_code) . "&comment=" . urlencode($order_id) . "&lifetime=" . urlencode($life_time). "&prv_name=" . urlencode(STORE_NAME);

Ссылка на сообщение
Поделиться на другие сайты

Этот код убирает все не цифровые символы из номера, которые хранятся в базе. На все случаи не подойдет, потому-что:

1. В БД хранятся номера без кода страны. 

2. В модуле принудительно подставляется +7, как код страны, хотя QIWI работает не только в России.

 

Это все проблемы не этой доработки, а VamShop в принципе. Я не очень понимаю, почему отказались от хранения кода страны в номере?

 

У меня во всяком случае работает и пока ошибок при выставлении счетов не было. Буду смотреть.

Ссылка на сообщение
Поделиться на другие сайты

Так это у киви правила изменились, у киви в документации, в rest протоколе теперь по-новому нужно телефон записывать, без кода.

В старом модуле с кодом.

 

Спасибо за код, посмотрим, возможно, добавим в следующей версии по умолчанию.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...