Tiamon Posted October 19, 2011 Share Posted October 19, 2011 Доброго времени суток, PayPal наконец то стал работать с Россией, о чем на оф. сайте есть объявление. Возникла проблема, paypal принимает оплату только в долларах, цены на сайте указаны в рублях, при оплате цена пересчитывается из рублей в доллары, и тут самое интересное, возникает разница в курсах, на сайте настроено автоматическое обновление курса валют, на paypal курс другой, он ниже. В итоге получается: цена товара допустим 100р, курс на сайте 0.032, в paypal на оплату попадает цена 3,2$. Курс в paypal 0.031 в итоге клиенту с карты списывается не 100р а 103р с копейками. Это со ста рублей, а с тысячи разница уже существенна. Подскажите как можно уровнять курсы, от куда преста берет курс, или как можно это обойти? Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted October 19, 2011 Share Posted October 19, 2011 преста берет тот курс который ты ей руками задашь. обойти? ну брать курс с палки и заносить в свой магазин. Link to comment Share on other sites More sharing options...
Tiamon Posted October 19, 2011 Author Share Posted October 19, 2011 Преста берет курс автоматом, можно настроить автоматическое обновление через cron, что собственно и реализовано. http://fotki.yandex.ru/users/tiamon/view/360171/ Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted October 19, 2011 Share Posted October 19, 2011 от куда преста берет курс, автоматом откуда? А циферки на твоем скриншоте в самом верху тебе ни о чем не говорят?)) Link to comment Share on other sites More sharing options...
Tiamon Posted October 19, 2011 Author Share Posted October 19, 2011 Не очень много, курс ежедневно меняется, делаем вывод, что он обновляется. Ещё будем ерничать, или изложим пару умных мыслей, кроме не умного сарказма? Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted October 19, 2011 Share Posted October 19, 2011 Мда, ну раз нам хочется умных мыслей, вариант один - включить моск, который должен их генерировать, э? дабы избежать неумного сарказма. - Преста берет курсы автоматом отсюда http://www.prestasho.../currencies.xml во всяком случае для тех валют которые там указаны, при нажатии на кнопку Обновить или по крону, если настроить, как ты правильно заметил. Думаю для тебя не составит труда сделать логический вывод из след предпосылок: Что будет если не нажимать кнопку обновления и не делать обновление по крону? П.С. возможно есть некое тайное действие, когда магазин сам, без участия админа, обновляет курсы валют - без разбора, всем странам, всем магазинам, из одного файла. Это очень похоже на заговор и думаю ты, уважаемый ТС сможешь уберечь меня от ошибок и направишь перст указующий блаблаблабла Link to comment Share on other sites More sharing options...
pukinnet Posted October 19, 2011 Share Posted October 19, 2011 Дело в том, что курсы которые берутся с сайта Prestashop привязаны к курсу Европейского Центрального банка, а он несколько отличен от курса ЦБ РФ. В свое время я изменял код в PS 1.3 так, чтобы он тянул курс с ЦБ РФ. Если правильно помню, нужно в classes/Currency.php изменить соответствующие строки на следующие: public function refreshCurrency($data, $isoCodeSource, $defaultCurrency) { if ($this->iso_code != $isoCodeSource) { /* Seeking for rate in feed */ foreach ($data->Valute AS $obj) if ($this->iso_code == $obj->CharCode) $this->conversion_rate = round($obj->Nominal/(floatval($obj->Value= str_replace(",", ".",$obj->Value))*$defaultCurrency->conversion_rate), 6); } else { /* If currency is like isoCodeSource, setting it to default conversion rate */ $this->conversion_rate = round(1 / floatval($defaultCurrency->conversion_rate), 6); } $this->update(); } static public function refreshCurrenciesGetDefault($data, $isoCodeSource, $idCurrency) { $defaultCurrency = new Currency($idCurrency); /* Change defaultCurrency rate if not as currency of feed source */ if ($defaultCurrency->iso_code != $isoCodeSource) foreach ($data->Valute AS $obj) if ($defaultCurrency->iso_code == $obj->CharCode) $defaultCurrency->conversion_rate = round($obj->Nominal/floatval($obj->Value = str_replace(",", ".",$obj->Value )), 6); return $defaultCurrency; } static public function refreshCurrencies() { $date=date('d/m/Y'); if (!$feed = @simplexml_load_file('http://www.cbr.ru/scripts/XML_daily.asp?date_req='.$date)) return Tools::displayError('Cannot parse feed!'); if (!$defaultCurrency = intval(Configuration::get('PS_CURRENCY_DEFAULT'))) return Tools::displayError('No default currency!'); $isoCodeSource = RUB; $currencies = self::getCurrencies(true); $defaultCurrency = self::refreshCurrenciesGetDefault($feed, $isoCodeSource, $defaultCurrency); foreach ($currencies as $currency) if ($currency->iso_code != $defaultCurrency->CharCode) $currency->refreshCurrency($feed, $isoCodeSource, $defaultCurrency); } Валютой по умолчанию должен быть установлен рубль. Данный код работал в версии 1.3. Думаю, что в версии 1.4 ничего принципиально не менялось. А автоматическое обновление курсов валют можно сделать через cron. Это уже обсуждалось. Надеюсь вам помог. Самому интересно прицепить PayPal. Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted October 19, 2011 Share Posted October 19, 2011 Самому интересно прицепить PayPal. посмотрите отдает ли палка курсы через апи например, я беглым гуглением не нашел, если отдает - изменить 1 линк и спарсить хмл правильно и будет вам автообновление курсов с палки. Link to comment Share on other sites More sharing options...
Tiamon Posted October 19, 2011 Author Share Posted October 19, 2011 - Преста берет курсы автоматом отсюда http://www.prestasho.../currencies.xml во всяком случае для тех валют которые там указаны, при нажатии на кнопку Обновить или по крону, если настроить, как ты правильно заметил. Полезно, остальное, ну если не дурак сам знаешь куда втереть... pukinnet Огромное спасибо, даже если и изменилось, дальше разберусь, результаты выложу тут, может кому пригодится. Думаю не я первый и не я последний кто столкнулся с такой проблемой. SergeyH Не отдает и не где не публикует, отправил запрос в поддержку, пока не ответили, если бы хоть где-то публиковали, в любом виде, вытащить цифры было бы не сложно, и вопросов не было бы. Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted October 19, 2011 Share Posted October 19, 2011 Tiamon, я чет не пойму Подскажите как можно уровнять курсы, от куда преста берет курс, или как можно это обойти? Я тебе ответил - берешь вбиваешь руками нужные курсы (не хочешь руками - пиши скрипты которые будут где-то их парсить и вносить в базу твою, это уже вопрос автоматизации) ты - сам себе придумал про обновление автоматом, сделал какие-то неясные выводы, и теперь рассказываешь че кому куда втирать. Достойно, чо. Link to comment Share on other sites More sharing options...
Tiamon Posted October 19, 2011 Author Share Posted October 19, 2011 SergeyH Экий ты не понятливый, читай, внимательно знаток. Задан конкретный вопрос, описана конкретная ситуация. Ты либо дай конкретный ответ, либо молчи в тряпочку. У тебя перед фейсом пример такого ответа, пост pukinnet, человек одним постом дал ответы на все вопросы + дал практически готовый пример решения. Ферштейн? 1 Link to comment Share on other sites More sharing options...
Tiamon Posted October 19, 2011 Author Share Posted October 19, 2011 Данный код работал в версии 1.3. Думаю, что в версии 1.4 ничего принципиально не менялось. /** * @deprecated **/ public static function refreshCurrenciesGetDefault($data, $isoCodeSource, $idCurrency) { Tools::displayAsDeprecated(); $defaultCurrency = new Currency($idCurrency); /* Change defaultCurrency rate if not as currency of feed source */ if ($defaultCurrency->iso_code != $isoCodeSource) foreach ($data->currency AS $obj) if ($defaultCurrency->iso_code == strval($obj['iso_code'])) $defaultCurrency->conversion_rate = round((float)($obj['rate']), 6); return $defaultCurrency; } public static function getDefaultCurrency() { $id_currency = (int)Configuration::get('PS_CURRENCY_DEFAULT'); if ($id_currency == 0) return false; return new Currency($id_currency); } public static function refreshCurrencies() { // Parse if (!$feed = Tools::simplexml_load_file('http://www.prestashop.com/xml/currencies.xml')) return Tools::displayError('Cannot parse feed.'); // Default feed currency (EUR) $isoCodeSource = strval($feed->source['iso_code']); if (!$default_currency = self::getDefaultCurrency()) return Tools::displayError('No default currency'); $currencies = self::getCurrencies(true); foreach ($currencies as $currency) $currency->refreshCurrency($feed->list, $isoCodeSource, $default_currency); } Завтра буду разбираться. Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted October 19, 2011 Share Posted October 19, 2011 вопросы научись задавать полиглот ты наш конкретный. так и пиши: пацаны,напишите мне код, я умный,но видимо не тем местом. А то откуда берет курс, как обойти... в общем - поцелуй меня в плечо Link to comment Share on other sites More sharing options...
sors Posted October 20, 2011 Share Posted October 20, 2011 Пайпал принимает оплату в долларах. Сколько он снимает с покупателя и как он конвертирует продавца волновать не должно. При конвертации по сути происходит обмен валют. Тут возможно 2 варианта: пайпал конвертирует самостоятельно (причем по своему невыгодному курсу) и снимает с карты рубли. Либо пайпал снимает с карты напрямую доллары, а конвертацию проводит банк которому принадлежит карта (тут курс зависит от самого банка, но как правило он более выгоден чем у пайпала). Курс конвертации пайпала можно где-то в аккаунте узнать. Link to comment Share on other sites More sharing options...
Tiamon Posted October 20, 2011 Author Share Posted October 20, 2011 SergeyH Я ещё ни когда так весело не разбирал проблемы с движком. Ты поднимаешь настроение, за это спасибо. Ну а по остальному, дружище а для чего форумы сделаны? Для обсуждения и обмена опытом. Так вот у меня опыта работы с престой месяц, согласен тут я мало разбираюсь. Но если ты например спросишь как грамотно поднять веб сервер, защитить его и т.д. ну или там циску настроить, дженипер, или ещё чего с сетью, организовать, виртуальную группу, ip телефонию организовать, кластер на чем угодно и в любых количествах и т.д. и т.п., я тебе с удовольствием отвечу, причем поверь, просто, понятно и конкретно. Человек не может знать всё и сразу, поэтому люди и обращаются друг к другу. И собственно повторюсь, нет желания отвечать, помогать, делится по твоему мнению, бесценными данными, так молчи не диви людей плоским юмором. 1 Link to comment Share on other sites More sharing options...
Tiamon Posted October 20, 2011 Author Share Posted October 20, 2011 Пайпал принимает оплату в долларах. Сколько он снимает с покупателя и как он конвертирует продавца волновать не должно. При конвертации по сути происходит обмен валют. Тут возможно 2 варианта: пайпал конвертирует самостоятельно (причем по своему невыгодному курсу) и снимает с карты рубли. Либо пайпал снимает с карты напрямую доллары, а конвертацию проводит банк которому принадлежит карта (тут курс зависит от самого банка, но как правило он более выгоден чем у пайпала). Курс конвертации пайпала можно где-то в аккаунте узнать. Не согласен, слишком существенная разница получается, человек покупает за конкретную цену, обычно в системах есть возможность взять все комиссии и разницы продавцом на себя и потом включить это в стоимость товара. А тут ситуация однозначно не правильная. И её можно исправить, так почему это не сделать. Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted October 20, 2011 Share Posted October 20, 2011 или там циску настроить, дженипер Ты типа щас хотел сказать что у тебя толще и длиннее? Не получилось. Я говорил о адекватном восприятии своей неправоты, но видимо ЧСВ затмевает все) А по теме: апи с курсами палки существует, разбираться не стал, предполагаю что ТС как опытный айтишник кроме гонора обладает навыками поиска информации. Link to comment Share on other sites More sharing options...
Recommended Posts