Подтвердить что ты не робот

Magento: простой способ удалить шаг "paypal/express/review"

При заказе с использованием paypal в magento он берет вас на paypal, paypal уже отображает подтверждение, вы подтверждаете, что вы перенаправляетесь на другую страницу подтверждения (/paypal/express/review), это дополнительный шаг, который не нужен для пользовательский интерфейс, я хотел бы удалить его и сделать заказ автоматически размещенным, когда пользователь подтвердит на странице PayPal, после того, как выйдете в PayPal, если заказ будет успешным, клиент должен увидеть страницу успеха.

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

4b9b3361

Ответ 1

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

edit: теперь он настраивается в 1.9, все еще отсталый, но выполнимый.

Ответ 2

Фактически, Express Checkout может справиться с этим без проблем, и я лично рекомендую придерживаться его.

После запроса SetExpressCheckout вы перенаправляете пользователя на PayPal. Вы можете добавить useraction = commit к этому URL-адресу, чтобы инициировать подтверждение с страниц PayPal.

Это приведет к тому, что кнопка "Продолжить" в PayPal переключится на кнопку "Оплатить" и сообщит пользователю, что это их окончательное подтверждение... щелчок "Pay" отправит платеж.

Вам все равно придется вызвать DoExpressCheckoutPayment на вашем сервере, чтобы завершить процесс, но GetExpressCheckoutDetails является необязательным на данный момент. При использовании useraction = commit вы вернете PayerID в качестве параметра URL в вашем возврате, так что вам не нужно вызывать GECD, если вам это не нужно.

Вы можете выполнить эту настройку дальше и использовать API обратного вызова (также известный как API мгновенного обновления) для подачи информации о налогах с продаж и продаж на страницу обзора PayPal. Это позволяет вам заполнить выпадающие значения на странице обзора PayPal с вашими данными о доставке на основе адреса доставки, выбранного на странице обзора PayPal.

Введение этих функций состояло в том, чтобы сделать именно то, что вы указали... устранить дополнительный процесс обзора.

Все сказанное, если модуль Magento для Express Checkout не предоставляет варианты для всего этого, вам нужно будет его расширить и построить самостоятельно. Хотя я все равно.

Ответ 3

Фактически все решения, упомянутые здесь, необходимы для редактирования ядра Magento. Это называется плохой практикой и не позволяет обновлять ваш магазин.

Что вам нужно сделать для чистого решения:

  • Создайте модуль (в моем примере: Avoe_Paypal), чтобы включить изменения.
  • Переписать конфигурацию Paypal
  • Перенаправление на этапе экспресс-проверки Paypal, который http://yourdomain.com/paypal/express/review/

1) Создайте свой модуль

Avoe/Paypal/и т.д. /config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Avoe_Paypal>
            <version>0.1.0</version>
        </Avoe_Paypal>
    </modules>

    <global>
        <models>
            <Avoe_Paypal>
                <class>Avoe_Paypal_Model</class>
            </Avoe_Paypal>
            <paypal>
                <rewrite>
                    <config>Avoe_Paypal_Model_Config</config>
                </rewrite>
            </paypal>
        </models>
        <events>
            <controller_action_predispatch_paypal_express_review>
                <observers>
                    <avoe_paypal_predispatch>
                        <type>singleton</type>
                        <class>Avoe_Paypal_Model_Observer</class>
                        <method>paypalExpressReturnPredispatch</method>
                    </avoe_paypal_predispatch>
                </observers>
            </controller_action_predispatch_paypal_express_review>
        </events>
    </global>
</config>

приложение/и т.д. /Avoe _Paypal.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Avoe_Paypal>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Paypal />
            </depends>
        </Avoe_Paypal>
    </modules>
</config>

2) Перепишите конфигурацию, добавьте useraction 'commit':

<?php
class Avoe_Paypal_Model_Config extends Mage_Paypal_Model_Config {

    /**
     * Get url for dispatching customer to express checkout start
     * Added useraction 'commit' to remove PayPal Express Checkout review page
     *
     * @param string $token
     * @return string
     */
    public function getExpressCheckoutStartUrl($token)
    {
        return $this->getPaypalUrl(array(
            'cmd'   => '_express-checkout',
            'useraction' => 'commit',
            'token' => $token,
        ));
    }
}

3) Создайте наблюдателя для перенаправления:

<?php

class Avoe_Paypal_Model_Observer {

    function paypalExpressReturnPredispatch($observer) {
        Mage::app()->getResponse()->setRedirect(Mage::getUrl('*/*/placeOrder'));
    }
}

Существует также небольшое расширение Magento, которое было только что выпущено вчера, чтобы удалить шаг обзора:

https://github.com/tim-bezhashvyly/Sandfox_RemovePaypalExpressReviewStep

Ответ 4

Итак, правильная сделка там, которая отлично работает (для меня), является суммой выше:

1. Перейти к:\app\code\core\Mage\Paypal\Controller\Express\Abstract.php

и выполните поиск в returnAction() для:

$this->_redirect('*/*/review'); 

Там вы должны изменить:

$this->_redirect('*/*/review');

в

$this->_redirect('*/*/placeOrder');

2. Перейти к:\app\code\core\Mage\Paypal\Model\Config.php и измените:

public function getExpressCheckoutStartUrl($token)
{
    return $this->getPaypalUrl(array(
        'cmd'   => '_express-checkout',
        'token' => $token,
    ));
}

в

public function getExpressCheckoutStartUrl($token)
{
    return $this->getPaypalUrl(array(
        'cmd'   => '_express-checkout',
        'useraction' => 'commit',
        'token' => $token,
    ));
}

С 2 приведенными выше изменениями я выясню, как Пропустить страницу отзывов в Paypal Express Checkout от Magento.

Ответ 5

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

В любом случае правильный способ сделать это \ app\code\core\Mage\Paypal\Model\Config.php, чтобы getExpressCheckoutEditUrl($token) метод и изменение

'useraction' => 'continue',

к

'useraction' => 'commit’.

Чтобы просмотреть страницу подтверждения aviod в Paypal Express, вам нужно только изменить одну строку в действии контроллера. Перейдите в Mage/Paypal/Controller/Express/Abstract.php и найдите $this->_redirect('*/*/review'); в returnAction(). Там вам нужно изменить

$this->_redirect('\*/\*/review');

к

$this->_redirect('\*/\*/placeOrder');

Таким образом, когда paypal возвращается к возврату, вы избегаете показывать всю страницу обзора, и платеж автоматически подтверждается. Таким образом, Paypal перенаправляет снова страницы успеха так же, как метод PayPal Standard.

Ответ 6

@Toni. Ссылка на URL-адрес перенаправления отлично работает, спасибо! Однако изменение "continue" на "commit" не изменило кнопки на веб-сайте PayPal. Тем не менее, я смог исправить это, выполнив следующее: прямо над функцией getExpressCheckoutEditUrl, где Тони дал указание изменить продолжение на фиксацию, есть funciton getExpressCheckoutStartUrl. Если вы добавите переменную useraction, она будет работать. Исходная функция:

public function getExpressCheckoutStartUrl($token)
{
'return $this->getPaypalUrl(array(
'cmd'   => '_express-checkout',
'token' => $token,
));
}

Новая функция:

public function getExpressCheckoutStartUrl($token)
{
'return $this->getPaypalUrl(array(
'cmd'   => '_express-checkout',
'useraction' => 'commit',
'token' => $token,
));
}

Обратите внимание, что 'useraction' = > 'commit' добавлено в новую функцию. Это должно работать!

Ответ 7

Произошел один шаг, и я снова подведу итог всему процессу.

1. Перейти к:\app\code\core\Mage\Paypal\Controller\Express\Abstract.php

и выполните поиск в returnAction() для:

$this->_redirect('*/*/review'); 

Там вы должны изменить:

$this->_redirect('*/*/review');

в

$this->_redirect('*/*/placeOrder');

2. Перейдите в:\app\code\core\Mage\Paypal\Model\Config.php и измените:

public function getExpressCheckoutStartUrl($token)
{
    return $this->getPaypalUrl(array(
        'cmd'   => '_express-checkout',
        'token' => $token,
    ));
}

в

public function getExpressCheckoutStartUrl($token)
{
    return $this->getPaypalUrl(array(
        'cmd'   => '_express-checkout',
        'useraction' => 'commit',
        'token' => $token,
    ));
}

3.. При указанных двух изменениях вы все равно попадете на страницу обзора и должны согласиться с условиями, чтобы избежать этого:

/app/code/core/Mage/Paypal/Controller/Express/Abstract.php Поиск:

public function placeOrderAction()
{
try {
$requiredAgreements = Mage::helper(‘checkout’)->getRequiredAgreementIds();
if ($requiredAgreements) {
$postedAgreements = array_keys($this->getRequest()->getPost(‘agreement’, array()));
if (array_diff($requiredAgreements, $postedAgreements)) {
Mage::throwException(Mage::helper(‘paypal’)->__(‘Please agree to all the terms and conditions before placing the order.’));
}
}

Прокомментируйте следующие строки с простым//в начале:

//if (array_diff($requiredAgreements, $postedAgreements)) {
// Mage::throwException(Mage::helper(‘paypal’)->__(‘Please agree to all the terms and conditions before placing the order.’));
// }

Единственный раз, когда вы будете принимать участие на странице обзора, является то, что клиенты paypal возвращают отклоненную ошибку.

Ответ 8

Magento 1.9 имеет встроенную поддержку для этого, опцию Пропустить процедуру просмотра, но она имеет тонкое предостережение. Функция не работает с кнопками "Ярлык", которые вы можете отображать на страницах продукта и в корзине.

Мое предложение, отключите кнопки быстрого доступа и включите опцию Пропустить процедуру просмотра. Для дополнительного кредита вы можете перестроить поток Onepage Checkout, чтобы клиенты не могли дважды вводить платежную информацию (один раз на Magento и снова на PayPal).

Более подробная информация доступна в этом сообщении в блоге.