Организация платежей в ubercart

Главные вкладки

Аватар пользователя Spider84 Spider84 1 июня 2011 в 0:34

Всем привет!

Доделываю свой первый магазин на уберкарте - дошел до организации системы платежей.
Нужны основные Российские платежные системы + банковские переводы. Нашел робокассу и OnPay.ru.
Подскажите пожалуйста - если ктото имел опыт с onpay - поддерживает ли он банковские платежи?
Я хотел попробовать зарегаться там и сам посмотреть что к чему но у них там очень серьезная регистрация - завести акк просто для теста не выйдет.
Если я вообще не в ту сторону смотрю - пожалуйста подскажите куда двигаться.
Все заранее большое спасибо!

Комментарии

Аватар пользователя FduchKAI FduchKAI 2 июня 2011 в 19:14

Друпал 7 и http://onpay.ru/drupal/
Проблема - не переходит на оплату. Клиент затыкается на подтверждении заказа. Там на странице две вложенные формы.
Вот сейчас решаю либо лезть в их модуль и его править, либо писать свой и пытаюсь оценить какие ресурсы мне для этого нужны.
По телефону они от этого модуля открестились, сказали, что модуль писал кто-то из фрилансеров и рекомендовали читать АПИ и писать самому.

Аватар пользователя yuraf yuraf 15 августа 2011 в 8:26

Также интересуюсь, изменилось ли что после создания этого топика?

Опять же, беглый просмотр выявил то, что для 7.х ничего нет. Значит ли это, что нужно использовать только 6.х?

Я тут видел уже несколько подобных тем ранее, но везде разные рекомендации: то UC 6.x, то UC 7.x, а некоторые и Commerce рекомендуют.

Где же истина? Smile

Аватар пользователя godson godson 18 марта 2012 в 19:23

"FduchKAI" wrote:
Вот сейчас решаю либо лезть в их модуль и его править, либо писать свой и пытаюсь оценить какие ресурсы мне для этого нужны.

Скажите, нашли ли вы решение?

Аватар пользователя mashuniya mashuniya 3 апреля 2012 в 1:45

Я подключила Onpay. Проблема не в том

"FduchKAI" wrote:
Проблема - не переходит на оплату. Клиент затыкается на подтверждении заказа. Там на странице две вложенные формы.

Просто вся форма не входит в отведенное окно, хвост обрезан.
Исправить очень просто в файле модуля uc_onpay.module

*  страница оплаты 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" заменила на 1000 и все встало на свои места.
Проблема в другом - после оплаты не возвращает на сайт. Буду копать дальше.

Аватар пользователя mashuniya mashuniya 6 апреля 2012 в 14:01

Напишите подробнее, что отображается. Все ли правильно настроили по описанию на сайте Onpay? У меня все работает, не возвращает на сайт только RBK Money

Аватар пользователя АлександрБолт АлександрБолт 6 апреля 2012 в 14:42

да на сайте все верно, аккаунт активирован, настройки модуля выполнил как показано было на их сайте
мой сайт gevey24.ru
жму оформить и ровным счетом ничего не происходит

Аватар пользователя АлександрБолт АлександрБолт 6 апреля 2012 в 15:12

у меня выдает след ошибки когда попадаю на отправку заказа

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).

Аватар пользователя mashuniya mashuniya 6 апреля 2012 в 18:40

ошибка где то раньше, нет блока выбора метода оплаты - электронные валюты, карты и т.д. поэтому и не переходит на оплату. И выдает ошибку Notice: Undefined variable: details в функции uc_payment_method_onpay() (строка 11 в файле .../uc_onpay/uc_onpay.module).
У меня электронные товары, и видимо версия drupal другая -6.
Попробуйте сначала настроить внешний вид в личном кабинете Onpay, у меня не все варианты отображались корректно, выбрала который отображался правильно.

Аватар пользователя mashuniya mashuniya 6 апреля 2012 в 15:41

наверное для такого серьезного магазина надо было систему приема платежей понадежнее выбрать, я то выбрала эту, потому что не везде физ-лица регистрируют

Аватар пользователя BlackoJack BlackoJack 28 мая 2012 в 9:35

И что? Никто не решил данную проблему? У меня такую ошибку выдает: "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. Выложен модуль, есть инструкция, а ничего не работает. И молчат, сказать нечего..

Аватар пользователя geraubk geraubk 28 мая 2012 в 16:23

Чтобы форма отправлялась надо изменить это:

/**
 *  подмена кнопки отправки заказа
 */

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>';
        }
    }
}

на ЭТО

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') {
      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>';
    }
  }
}
Аватар пользователя BlackoJack BlackoJack 29 мая 2012 в 7:24

"geraubk" wrote:
Чтобы форма отправлялась надо изменить это:

/**
* подмена кнопки отправки заказа
*/
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'] = '

';
//$form['#suffix'] = '

';
$form['back']['#suffix'] = '

' . drupal_render(drupal_get_form('uc_onpay_form', $order)) . '

';
}
}
}

на ЭТО

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') {
unset($form['actions']['submit']);
$form['#prefix'] = '

';
$form['#suffix'] = '
' . drupal_render(drupal_get_form('uc_onpay_form', $order)) . '

';
}
}
}

К сожалению не помогло( Ошибка осталась, и кнопка исчезла(

Аватар пользователя BlackoJack BlackoJack 29 мая 2012 в 8:32

После часа ковыряния проблема была решена!
Во первых вот это:

<?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" например.. можно поменьше..

Правда все равно ошибка вылазиет, но ее можно скрыть.. А так работает, буду тестировать дальше.

Аватар пользователя geraubk geraubk 29 мая 2012 в 20:21

вот так надо:
function uc_onpay_form_alter(&$form, &$form_state, $form_id)

вроде эти изменения уже есть в текущем модуле на сайте.

$form = array(); - можешь раскомментировать обратно.

а высоты в 600 для меня даже много.. можно уменьшить до 500 и места для формочки хватит.

Аватар пользователя BlackoJack BlackoJack 30 мая 2012 в 7:27

"geraubk" wrote:
вот так надо:
function uc_onpay_form_alter(&$form, &$form_state, $form_id)

вроде эти изменения уже есть в текущем модуле на сайте.

$form = array(); - можешь раскомментировать обратно.

а высоты в 600 для меня даже много.. можно уменьшить до 500 и места для формочки хватит.

Увы, у меня таким макаром не работало.. Вы правы, изначально было так. А насчет высоты, зависит от того, сколько платежных систем подключено в личном кабинете, и, возможно, от темы. Лично мне и 1000 не хватило, поставил 1300.

Аватар пользователя jey7 jey7 7 июня 2012 в 9:19

Была таже проблема, что и у всех. Заменил части кода, все ок. Вот только теперь после нажатия кнопки оплатить, перебрасывает на uc_onpay/pay и пишет, что страница не найдена. Подскажите, что с этим делать???

Аватар пользователя BlackoJack BlackoJack 7 июня 2012 в 9:25

"jey7" wrote:
Была таже проблема, что и у всех. Заменил части кода, все ок. Вот только теперь после нажатия кнопки оплатить, перебрасывает на uc_onpay/pay и пишет, что страница не найдена. Подскажите, что с этим делать???

Попробуйте включить "Чистые ссылки".
admin/config/search/clean-urls

Возможно проблема в этом

Аватар пользователя BlackoJack BlackoJack 7 июня 2012 в 10:49

"jey7" wrote:

Неа, чистые ссылки у меня включены... Я вот сам в замешательстве, почему????

А где сам модуль лежит? У меня в /sites/all/modules/ubercart/payment/uc_onpay/

Аватар пользователя jey7 jey7 7 июня 2012 в 13:56

Вроде поправил, перезалил модуль в папку, которую ты говорил, почистил все что можно... работает... но - выдает Файл не найден, убедитесь в правильности адреса.
не помнишь как должен выглядеть урл для загрузки iframe?

Аватар пользователя geraubk geraubk 7 июня 2012 в 16:55

http://sitename/uc_onpay/pay
здесь должна открываться страничка с фрэймом

http://secure.onpay.ru/pay/sitename.....

если у вас там во фрэйме написано что не возможно что-то там отобразить... или как-то так.. то значит вы не настроили модуль uc_onpay и возможно не зарегистрировали сайт на onpay.ru

Аватар пользователя mslaud mslaud 15 июня 2012 в 22:41

"BlackoJack" wrote:
А насчет высоты, зависит от того, сколько платежных систем подключено в личном кабинете, и, возможно, от темы. Лично мне и 1000 не хватило, поставил 1300.

*  страница оплаты 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;
}
/**

в scrolling поставил значение auto и теперь появляется просто скрол... потому что когда стояло 1500px, то после выбора метода оплаты следующая страница тоже была такой длинной.. хотя там на самом деле всего пикселей 500 по высоте.

Аватар пользователя fantom84 fantom84 18 октября 2013 в 3:44

Попробую поднять тему. У меня ситуация такая: платеж проходит, пишет все ок, но потом идет автоматический возврат на страницу сайта-продавца (мой), и этот возврат рисуется в 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 в фрейме?