minishop2, PayPal, вывод средств и все такое...
Здравствуйте!
Помогите, пожалуйста. прояснить ситуацию с использованием PayPal в minishop2, да и вообще в целом.
Я делаю проект, в котором подразумевается продажа товаров в Европу, соответственно, в евро валюте. Я никогда не работал с PayPal и вообще слабо представляю себе всю эту систему. По ходу работы возникли вопросы:
Помогите, пожалуйста. прояснить ситуацию с использованием PayPal в minishop2, да и вообще в целом.
Я делаю проект, в котором подразумевается продажа товаров в Европу, соответственно, в евро валюте. Я никогда не работал с PayPal и вообще слабо представляю себе всю эту систему. По ходу работы возникли вопросы:
- Компонент оплаты через PayPal, встроенный в minishop2, абсолютно рабочий, и можно совершать покупки в евро и долларах? (я, конечно, не сомневаюсь, но вот просто на всякий случай :) )
- В параметрах этого модуля есть такие поля как «пароль продавца», «подпись продавца», «логин продавца». Я так понимаю, эти данные нужно заполнить, чтобы на этот счет приходили деньги?
- Какой тип аккаунта на PayPal лучше выбрать: корпоративный или персональный? Кто-нибудь сталкивался с этим? У заказчика (владельца сайта, я имею в виду) есть счет на PayPal, но он не знает, что будет лучше.
Поблагодарить автора
Отправить деньги
Комментарии: 11
1. В старой версии miniShop2 2.2 — не было поддержки мультивалюты, пришлось писать костыли. Как в новой версии с этим обстоит — не знаю, нужно спросить автора модуля.
2. Да, именно для этого.
3. Корпоративный.
2. Да, именно для этого.
3. Корпоративный.
Большое спасибо!
какие костыли писал?)
У меня сложней был случай, двуязычный сайт. Есть сайт магазин, два языка, две валюты. Рубли и евро. Писал костыль не я, а знакомый программист не знакомый с MODx.
Вот что он мне оставил, может кому пригодится, актуально только для MiniShop2 2.2!
Описание проблемы:
1) Инициализация оплаты происходит по прямой ссылке paypal.php, вне зависимости от языковой версии.
2) При запросе paypal.php в контексте /en/* файл физически отсутствует на сервере и выдается ошибка 404. Так как информация запроса передается методом POST редирект в .htaccess файле не может помочь с этой проблемой. Возможно создание «симлинка» или копии файла paypal.php с физическим созданием папки /en/* на сервере, но при этом решении нужно изменять условия редиректов движка ModX с самыми интересными последствиями.
3) В условиях редиректов успешной и не успешной оплаты используется конструкция $modx->getOption('ms2_payment_paypal_success_id', null, 0) без указания контекста (языковой версии). При этом получение параметров cancel английской версии не работает.
4) paypal.class.php — файл отвечает за отправку и получение результатов с платежного шлюза. Файл при вызове не содержит информацию языковой версии, поэтому формирование платежной ссылки, а также распознавание результата (hash верификация) проходят только в рублях
Решение:
[index.php]
# Самое начало сайта
if(substr($_SERVER['REQUEST_URI'], 0, 50) == "/en/assets/components/minishop2/payment/paypal.php"){
$ch = curl_init();
$postvars = '';
foreach($_POST as $key=>$value) {
$postvars .= $key. "=". $value. "&";
}
$url = «site.ru».substr($_SERVER['REQUEST_URI'], 3)."&isEng=1";
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,3);
curl_setopt($ch,CURLOPT_TIMEOUT, 20);
$response = curl_exec($ch);
curl_close ($ch);
echo $response;
die();
}
# Описание:
Если ссылка на paypal.php содержит /en/ мы переадресуем этот запрос на /web/ контекст передавая в $_GET запросе дополнительный параметр "&isEng=1". Информацию POST мы передаем в том же виде, как она поступила. Ждем результат выполнения запроса и выводим его на экран. Если приходит редирект — следуем редиректу.
Вот что он мне оставил, может кому пригодится, актуально только для MiniShop2 2.2!
Описание проблемы:
1) Инициализация оплаты происходит по прямой ссылке paypal.php, вне зависимости от языковой версии.
2) При запросе paypal.php в контексте /en/* файл физически отсутствует на сервере и выдается ошибка 404. Так как информация запроса передается методом POST редирект в .htaccess файле не может помочь с этой проблемой. Возможно создание «симлинка» или копии файла paypal.php с физическим созданием папки /en/* на сервере, но при этом решении нужно изменять условия редиректов движка ModX с самыми интересными последствиями.
3) В условиях редиректов успешной и не успешной оплаты используется конструкция $modx->getOption('ms2_payment_paypal_success_id', null, 0) без указания контекста (языковой версии). При этом получение параметров cancel английской версии не работает.
4) paypal.class.php — файл отвечает за отправку и получение результатов с платежного шлюза. Файл при вызове не содержит информацию языковой версии, поэтому формирование платежной ссылки, а также распознавание результата (hash верификация) проходят только в рублях
Решение:
[index.php]
# Самое начало сайта
if(substr($_SERVER['REQUEST_URI'], 0, 50) == "/en/assets/components/minishop2/payment/paypal.php"){
$ch = curl_init();
$postvars = '';
foreach($_POST as $key=>$value) {
$postvars .= $key. "=". $value. "&";
}
$url = «site.ru».substr($_SERVER['REQUEST_URI'], 3)."&isEng=1";
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,3);
curl_setopt($ch,CURLOPT_TIMEOUT, 20);
$response = curl_exec($ch);
curl_close ($ch);
echo $response;
die();
}
# Описание:
Если ссылка на paypal.php содержит /en/ мы переадресуем этот запрос на /web/ контекст передавая в $_GET запросе дополнительный параметр "&isEng=1". Информацию POST мы передаем в том же виде, как она поступила. Ждем результат выполнения запроса и выводим его на экран. Если приходит редирект — следуем редиректу.
У меня тоже двуязычный сайт, русский и английский, и соответственно, рубли и евро. Я просто думал сделать для расчета в евро PayPal, а в рублях Яндекс.Кассу.
В моем случае, многие клиенты из России имеют Paypal, и поэтому мне такой вариант не подошел. :)
Плохой пример, почему не переписали в виде плагина?
Потому что я не программист, а верстальщик.
Одно другому не мешает.
Поздно увидел ваше сообщение, похоже зря обновился на новый minishop
Проблему с контекстами описывал два года назад, странно, что она еще не решена
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.