Magento создать заказ программно с PayPal методом оплаты

11

В настоящее время у нас есть два независимых от magento сайта. Один ведет себя как витрина, а другой как бэкэнд. Пользователь может разместить заказ на переднем конце.

Такой же порядок я пытаюсь создать программно на бэкэнде. Когда пользователь платит через checkmoспособ оплаты, это работает. Но когда пользователь платит через PayPal, он не работает. Кто-нибудь знает, как мы можем создать заказ программно, используя способы оплаты PayPal? Это возможно или нет?

$quote->getPayment()->importData(array(3) {
    [method] => paypal_express
    [last_trans_id] => 65Y31421KL2753028
    [additional_information] => Array
    (
        [paypal_express_checkout_shipping_method] => 
        [paypal_payer_id] => 5LX84SUFY39L4
        [paypal_payer_email] => abbas-buyer-2@bluewisesoft.com
        [paypal_payer_status] => verified
        [paypal_address_status] => Confirmed
        [paypal_correlation_id] => b78b4e5e6e527
        [paypal_express_checkout_payer_id] => 5LX84SUFY39L4
        [paypal_express_checkout_token] => EC-7P402752023166448
        [paypal_express_checkout_redirect_required] => 
        [paypal_protection_eligibility] => Eligible
        [paypal_payment_status] => pending
        [paypal_pending_reason] => authorization
    )
});

Ошибка: шлюз PayPal отклонил запрос. Для этого токена уже завершена успешная транзакция (# 10415: транзакция отклонена из-за неверного аргумента. Дополнительные сведения см. В дополнительных сообщениях об ошибках).

Аббас
источник
На аналогичный вопрос ответили здесь: magento.stackexchange.com/questions/211783/…
Сриджит Гопинатх,

Ответы:

4

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

Поскольку на самом деле вам не нужен второй платеж, но он нужен для ведения учета (насколько я могу прочитать), было бы разумно создать поддельный метод оплаты PayPal для другого экземпляра Magento и установить его в качестве метода оплаты при передаче приказ.

Как Inchoo уже объяснил это подробно (это не так сложно, как кажется, так как вам нужно будет только реализовать часть Magento), я не буду здесь копировать / вставлять, а только дам вам ссылку; http://inchoo.net/magento/how-to-create-magento-payment-module/

Просто назовите его «paypal_proxy_payment» или что-то в этом роде, и используйте этот метод, и все готово!

Питер Яап Блакмер
источник
2

Я делюсь одной ссылкой в ​​своем ответе, просмотрите ее и скопируйте, вставьте код в свой пользовательский контроллер, затем вам нужно изменить способ оплаты.

внутри

$this->orderData = array(
    'session'       => array(
        'customer_id'   => $this->_sourceCustomer->getId(),
        'store_id'      => $this->_storeId,
        ),
    'payment'       => array(
        'method'    => 'checkmo',
         ),
    );

вместо checkmoвы можете написать свой способ оплаты.

Пожалуйста, проверьте это.

Ашеем Патро
источник