Всем привет!
Доделываю свой первый магазин на уберкарте - дошел до организации системы платежей.
Нужны основные Российские платежные системы + банковские переводы. Нашел робокассу и OnPay.ru.
Подскажите пожалуйста - если ктото имел опыт с onpay - поддерживает ли он банковские платежи?
Я хотел попробовать зарегаться там и сам посмотреть что к чему но у них там очень серьезная регистрация - завести акк просто для теста не выйдет.
Если я вообще не в ту сторону смотрю - пожалуйста подскажите куда двигаться.
Все заранее большое спасибо!
Комментарии
Поднимаю топик - очень актуально сейчас для меня.
Друпал 7 и http://onpay.ru/drupal/
Проблема - не переходит на оплату. Клиент затыкается на подтверждении заказа. Там на странице две вложенные формы.
Вот сейчас решаю либо лезть в их модуль и его править, либо писать свой и пытаюсь оценить какие ресурсы мне для этого нужны.
По телефону они от этого модуля открестились, сказали, что модуль писал кто-то из фрилансеров и рекомендовали читать АПИ и писать самому.
Также интересуюсь, изменилось ли что после создания этого топика?
Опять же, беглый просмотр выявил то, что для 7.х ничего нет. Значит ли это, что нужно использовать только 6.х?
Я тут видел уже несколько подобных тем ранее, но везде разные рекомендации: то UC 6.x, то UC 7.x, а некоторые и Commerce рекомендуют.
Где же истина?
Скажите, нашли ли вы решение?
Я подключила Onpay. Проблема не в том
Просто вся форма не входит в отведенное окно, хвост обрезан.
Исправить очень просто в файле модуля uc_onpay.module
*/
function theme_uc_onpay_do_payment($sum, $order_id, $url)
{
$output = t('<p>Checkout !ordersum RUR for order № !orderid</p>', array('!ordersum' => $sum, '!orderid' => $order_id)).'<iframe src="'.$url.'" scrolling="no" frameborder="no" height="600" width="100%" align="absmiddle">'.t('<p>*If you do not see pay form, <a href="!orderurl" target="_blank"><em>follow the link</em></a></p>', array('!orderurl' => $url)).'</iframe>';
return $output;
}
/**
параметр height="600" заменила на 1000 и все встало на свои места.
Проблема в другом - после оплаты не возвращает на сайт. Буду копать дальше.
не помогло, поправил на 1000 форма оплаты не появилась, куда копать...
Напишите подробнее, что отображается. Все ли правильно настроили по описанию на сайте Onpay? У меня все работает, не возвращает на сайт только RBK Money
да на сайте все верно, аккаунт активирован, настройки модуля выполнил как показано было на их сайте
мой сайт gevey24.ru
жму оформить и ровным счетом ничего не происходит
можешь кинуть весь код файла uc_onpay.module
у меня выдает след ошибки когда попадаю на отправку заказа
Warning: Parameter 1 to uc_onpay_form() expected to be a reference, value given в функции drupal_retrieve_form() (строка 787 в файле C:\xampp\htdocs\gevey24.ru\includes\form.inc).
Strict warning: Only variables should be passed by reference в функции uc_onpay_form_alter() (строка 74 в файле C:\xampp\htdocs\gevey24.ru\sites\all\modules\uc_onpay\uc_onpay.module).
ошибка где то раньше, нет блока выбора метода оплаты - электронные валюты, карты и т.д. поэтому и не переходит на оплату. И выдает ошибку Notice: Undefined variable: details в функции uc_payment_method_onpay() (строка 11 в файле .../uc_onpay/uc_onpay.module).
У меня электронные товары, и видимо версия drupal другая -6.
Попробуйте сначала настроить внешний вид в личном кабинете Onpay, у меня не все варианты отображались корректно, выбрала который отображался правильно.
попробовал поменять не помогло...
а у кого вообще на д7 работает модуль?
наверное для такого серьезного магазина надо было систему приема платежей понадежнее выбрать, я то выбрала эту, потому что не везде физ-лица регистрируют
И что? Никто не решил данную проблему? У меня такую ошибку выдает: "Warning: Parameter 1 to uc_onpay_form() expected to be a reference, value given в функции drupal_retrieve_form() (строка 795 в файле /usr/home/*****/data/www/*******.ru/includes/form.inc)."
Соответственно не переходит на оплату((
Ничего не могу поделать. Весь мозг вынес. Drupal 7, Ubercart 3
А еще больше всего бесит Техподдержка onpay. Выложен модуль, есть инструкция, а ничего не работает. И молчат, сказать нечего..
Чтобы форма отправлялась надо изменить это:
* подмена кнопки отправки заказа
*/
function uc_onpay_form_alter(&$form, &$form_state, $form_id)
{
if ($form_id == 'uc_cart_checkout_review_form' && ($order_id = intval($_SESSION['cart_order'])) >
0)
{
$order = uc_order_load($order_id);
if ($order->payment_method == 'uc_onpay')
{
//var_dump($form);
unset($form['submit']);
$form['back']['#prefix'] = '<table ><tr><td>';
//$form['#suffix'] = '</td><td></td></tr></table>';
$form['back']['#suffix'] = '</td><td>' . drupal_render(drupal_get_form('uc_onpay_form', $order)) . '</td></tr></table>';
}
}
}
на ЭТО
{
if ($form_id == 'uc_cart_checkout_review_form' && ($order_id = intval($_SESSION['cart_order'])) > 0) {
$order = uc_order_load($order_id);
if ($order->payment_method == 'uc_onpay') {
unset($form['actions']['submit']);
$form['#prefix'] = '<table ><tr><td>';
$form['#suffix'] = '</td><td>' . drupal_render(drupal_get_form('uc_onpay_form', $order)) . '</td></tr></table>';
}
}
}
К сожалению не помогло( Ошибка осталась, и кнопка исчезла(
После часа ковыряния проблема была решена!
Во первых вот это:
<?php/**
* подмена кнопки отправки заказа
*/
function uc_onpay_form_alter(&$form, &$form_state, $form_id)
{
if ($form_id == 'uc_cart_checkout_review_form' && ($order_id = intval($_SESSION['cart_order'])) >
0)
{
$order = uc_order_load($order_id);
if ($order->payment_method == 'uc_onpay')
{
//var_dump($form);
unset($form['submit']);
$form['back']['#prefix'] = '<table ><tr><td>';
//$form['#suffix'] = '</td><td></td></tr></table>';
$form['back']['#suffix'] = '</td><td>' . drupal_render(drupal_get_form('uc_onpay_form', $order)) . '</td></tr></table>';
}
}
}?>
Меняем на это:
<?phpfunction uc_onpay_form_alter(&$form, &$form_state, $form_id)
{
if ($form_id == 'uc_cart_checkout_review_form' && ($order_id = intval($_SESSION['cart_order'])) > 0) {
$order = uc_order_load($order_id);
if ($order->payment_method == 'uc_onpay') {
unset($form['actions']['submit']);
$form['#prefix'] = '<table ><tr><td>';
$form['#suffix'] = '</td><td>' . drupal_render(drupal_get_form('uc_onpay_form', $order)) . '</td></tr></table>';
}
}
}?>
Во вторых, вот это:
<?php/**
* создание кнопки отправки заказа
*/
function uc_onpay_form(&$form_state, $order)
{
$form = array();
$form['#action'] = url('uc_onpay/pay', array('absolute' => true));
$form['submit'] = array('#type' => 'submit', '#value' => t('Submit Order'), );
return $form;
}?>
Меняем на это:
<?php/**
* создание кнопки отправки заказа
*/
function uc_onpay_form($form, &$form_state, $order)
{
//$form = array();
$form['#action'] = url('uc_onpay/pay', array('absolute' => true));
$form['submit'] = array('#type' => 'submit', '#value' => t('Submit Order'));
return $form;
}?>
И здесь:
<?php* страница оплаты Onpay
*/
function theme_uc_onpay_do_payment($sum, $order_id, $url)
{
$output = t('<p>Checkout !ordersum RUR for order № !orderid</p>', array('!ordersum' => $sum, '!orderid' => $order_id)).'<iframe src="'.$url.'" scrolling="no" frameborder="no" height="600" width="100%" align="absmiddle">'.t('<p>*If you do not see pay form, <a href="!orderurl" target="_blank"><em>follow the link</em></a></p>', array('!orderurl' => $url)).'</iframe>';
return $output;
}
/**?>
Меняем параметр height="600" на height="1000" например.. можно поменьше..
Правда все равно ошибка вылазиет, но ее можно скрыть.. А так работает, буду тестировать дальше.
вот так надо:
function uc_onpay_form_alter(&$form, &$form_state, $form_id)
вроде эти изменения уже есть в текущем модуле на сайте.
$form = array(); - можешь раскомментировать обратно.
а высоты в 600 для меня даже много.. можно уменьшить до 500 и места для формочки хватит.
Увы, у меня таким макаром не работало.. Вы правы, изначально было так. А насчет высоты, зависит от того, сколько платежных систем подключено в личном кабинете, и, возможно, от темы. Лично мне и 1000 не хватило, поставил 1300.
Была таже проблема, что и у всех. Заменил части кода, все ок. Вот только теперь после нажатия кнопки оплатить, перебрасывает на uc_onpay/pay и пишет, что страница не найдена. Подскажите, что с этим делать???
Попробуйте включить "Чистые ссылки".
admin/config/search/clean-urls
Возможно проблема в этом
Неа, чистые ссылки у меня включены... Я вот сам в замешательстве, почему????
А где сам модуль лежит? У меня в /sites/all/modules/ubercart/payment/uc_onpay/
у меня в корне /sites/all/modules/. Сейчас попробую перезалить...
Переместил, результатов ноль
Хреново.. у меня мысли закончились
Вроде поправил, перезалил модуль в папку, которую ты говорил, почистил все что можно... работает... но - выдает Файл не найден, убедитесь в правильности адреса.
не помнишь как должен выглядеть урл для загрузки iframe?
http://sitename/uc_onpay/pay
здесь должна открываться страничка с фрэймом
http://secure.onpay.ru/pay/sitename.....
если у вас там во фрэйме написано что не возможно что-то там отобразить... или как-то так.. то значит вы не настроили модуль uc_onpay и возможно не зарегистрировали сайт на onpay.ru
*/
function theme_uc_onpay_do_payment($sum, $order_id, $url)
{
$output = t('<p>Checkout !ordersum RUR for order № !orderid</p>', array('!ordersum' => $sum, '!orderid' => $order_id)).'<iframe src="'.$url.'" scrolling="no" frameborder="no" height="600" width="100%" align="absmiddle">'.t('<p>*If you do not see pay form, <a href="!orderurl" target="_blank"><em>follow the link</em></a></p>', array('!orderurl' => $url)).'</iframe>';
return $output;
}
/**
в scrolling поставил значение auto и теперь появляется просто скрол... потому что когда стояло 1500px, то после выбора метода оплаты следующая страница тоже была такой длинной.. хотя там на самом деле всего пикселей 500 по высоте.
Попробую поднять тему. У меня ситуация такая: платеж проходит, пишет все ок, но потом идет автоматический возврат на страницу сайта-продавца (мой), и этот возврат рисуется в iframe где была форма и получаем сайт в сайте. Пока решил это таким макаром:
<?php
function theme_uc_onpay_do_payment($sum, $order_id, $url)
{
$output = t('Checkout !ordersum RUR for order № !orderid', array('!ordersum' => $sum, '!orderid' => $order_id)).''.t('*If you do not see pay form, follow the link', array('!orderurl' => $url)).'';
drupal_goto($url);
return $output;
}
?>
т.е. я просто открываю страницу с формой оплаты не в фрейме а в текущем окне и потом идет возврат на мой сайт красиво, без всяких косяков. Так вот вопрос, зачем использовать тут iframe в оригинальном модуле? Мы имеем проблемы и с высотой его и с возвратом на страницу cart/checkout/complete
Кто сталкивался с таким вот поведением - размещением cart/checkout/complete в фрейме?