Alexspb Posted February 24, 2015 Report Share Posted February 24, 2015 (edited) Добрый вечер! Друзья, может быть кто-то может подсказать где посмотреть по следующему вопросу. К симпле подключен модуль оплаты яндекс.деньгами. И периодически возникают проблемы с оплатой, оказалось оплата не проходит из-за нехватки товара на складе. При этом например при оплате картой через этот модуль - яндекс долго думает, а потом сообщает что произошла техническая проблема и предлагает обратиться в саппорт. Хранится ли где-то в файлике лог подобных ошибок, где можно было бы посмотреть эту информацию? Чтобы можно было самому смотреть причину не прохождения платежа, а не ждать миллион лет ответа их поддержки? Edited February 24, 2015 by Alexspb Quote Link to post Share on other sites
batanov Posted February 24, 2015 Report Share Posted February 24, 2015 (edited) если не работает оплата яндекса то там в модуле оплаты небольшая ошибкав файле yandexmoney.php или yandex.php есть строчка где генерируется кнопкапримерно так: $button = '<form method="POST" action="'.$payment_url.'"> .... и там есть <input type="hidden" name="customerNumber" value="'.$order->id.'"> вот его заменить на <input type="hidden" name="orderNumber" value="'.$order->id.'"> и все будет работать.ну еще на хостинге у вас должен быть установлен сертификат ssl а проверка наличия:в коллбек.пхп изменить вот так //////////////////////////////////// // Проверка наличия товара //////////////////////////////////// $purchases = $simpla->orders->get_purchases(array('order_id'=>intval($order->id))); foreach($purchases as $purchase) { $variant = $simpla->variants->get_variant(intval($purchase->variant_id)); if(empty($variant)/* || (!$variant->infinity && $variant->stock < $purchase->amount)*/) { print_error("Нехватка товара $purchase->product_name $purchase->variant_name"); } } Edited February 24, 2015 by batanov Quote Link to post Share on other sites
Alexspb Posted February 25, 2015 Author Report Share Posted February 25, 2015 если не работает оплата яндекса то там в модуле оплаты небольшая ошибка а проверка наличия:в коллбек.пхп изменить вот так //////////////////////////////////// // Проверка наличия товара //////////////////////////////////// $purchases = $simpla->orders->get_purchases(array('order_id'=>intval($order->id))); foreach($purchases as $purchase) { $variant = $simpla->variants->get_variant(intval($purchase->variant_id)); if(empty($variant)/* || (!$variant->infinity && $variant->stock < $purchase->amount)*/) { print_error("Нехватка товара $purchase->product_name $purchase->variant_name"); } } Спасибо. Модуль у меня работает в основном, и сертификат установлен. По наличию товара у меня другая история немного, связанная с синхронизацией в сервисе МойСклад. Вопрос заключается в том - ведется ли где-то в системных файлах симплы лог-файл ошибок оплаты и их причин? Т.к. яндекс со своей стороны просто говорит о проблеме, но никак не отражает ее сути. А что именно делает фрагмент пхп, который вы предложили добавить? На какой стадии он проверяет нехватку товара и в какой ситуации об этом сообщает? Quote Link to post Share on other sites
Kors Posted February 25, 2015 Report Share Posted February 25, 2015 Вопрос заключается в том - ведется ли где-то в системных файлах симплы лог-файл ошибок оплаты и их причин?Нет, такого удовольствия не предоставлено. И это, конечно, плохо... Quote Link to post Share on other sites
batanov Posted February 26, 2015 Report Share Posted February 26, 2015 Спасибо. Модуль у меня работает в основном, и сертификат установлен. По наличию товара у меня другая история немного, связанная с синхронизацией в сервисе МойСклад. Вопрос заключается в том - ведется ли где-то в системных файлах симплы лог-файл ошибок оплаты и их причин? Т.к. яндекс со своей стороны просто говорит о проблеме, но никак не отражает ее сути. А что именно делает фрагмент пхп, который вы предложили добавить? На какой стадии он проверяет нехватку товара и в какой ситуации об этом сообщает?этот кусок кода проверят наличие товара, что б оплата не ушла в обработку если нет наличи на складе... и нужно не добавить а сравнить что у вас есть с этим, и сделать вот так if(empty($variant)/* || (!$variant->infinity && $variant->stock < $purchase->amount)*/ Quote Link to post Share on other sites
Dmitry86 Posted May 18, 2017 Report Share Posted May 18, 2017 Подскажите, как получить список покупок $purchases в YandexMoney.php ? Чёт никак не получается.. Quote Link to post Share on other sites
Dmitry86 Posted May 19, 2017 Report Share Posted May 19, 2017 Вопросм решен. Может понадобиться тем, кто пользуется Яндекс.Кассой и собирается отправлять чеки клиентам по новому закону 54-ФЗ. в файле payment/YandexMoney/YandexMoney.php после $payment_type = ($payment_sitemode)?$settings['yandex_paymenttype']:''; вставляем $purchases = $this->orders->get_purchases(array('order_id'=>$order->id)); $customerContact = ($order->email)?htmlspecialchars($order->email, ENT_QUOTES):htmlspecialchars(preg_replace("/[-+() ]/",'',$order->phone), ENT_QUOTES); $items = array(); foreach($purchases as $purchase) { $quantity = $purchase->amount; $amount = $purchase->price; $text = ($purchase->variant_name)?htmlspecialchars($purchase->product_name, ENT_QUOTES).' '.$purchase->variant_name:htmlspecialchars($purchase->product_name, ENT_QUOTES); $items[] = '{ "quantity": '.$quantity.', "price": {"amount": '.$amount.', "currency": "RUB"}, "tax": 1, "text": "'.$text.'"}'; } далее в кнопку $button перед <input type="submit" name="submit-button" value="'.$button_text.'" class="checkout_button btn"> добавляем <input type="hidden" name="receipt" value="{ "customerContact": "'.$customerContact.'", "items": ['.implode(',',$items).'] }"/> В цене товара не учитываются скидки или купоны, поэтому этот вопрос решайте отдельно, в зависимости у кого как реализовано. В итоге получим в форме оплаты список товаров для передачи данных в чек согласно инструкции от Яндекса. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.