Как настроить Omnipay с Laravel?

Я использую этот пакет:

https://github.com/barryvdh/laravel-omnipay

В моем контроллере я добавил:

$params = [
            'amount' => '10',
            'issuer' => 22,
            'description' => 'desc',
            'returnUrl' => URL::action('PurchaseController@returnApi', [43]),
        ];
        $response = Omnipay::purchase($params)->send();

        if ($response->isSuccessful()) {
            // payment was successful: update database
            print_r($response);
        } elseif ($response->isRedirect()) {
            // redirect to offsite payment gateway
            return $response->getRedirectResponse();
        } else {
            // payment failed: display message to customer
            echo $response->getMessage();
        }

Вот мой файл конфигурации omnipay.php:

<?php

return array(

    /** The default gateway name */
    'gateway' => 'PayPal_Express',

    /** The default settings, applied to all gateways */
    'defaults' => array(
        'testMode' => true,
    ),

    /** Gateway specific parameters */
    'gateways' => array(
        'PayPal_Express' => array(
            'username' => '',
            'landingPage' => array('billing', 'login'), 
        ),
    ),

);

Но получите эту ошибку:

call_user_func_array() ожидает, что параметр 1 будет допустимым обратным вызовом, класс «Omnipay\Common\GatewayFactory» не имеет метода «покупка»

Кто-нибудь может помочь мне установить это? Я создал приложение в PayPal, и у меня есть подробности о нем, но я не знаю, как установить его с помощью этого API...


person Vladimir Djukic    schedule 12.02.2016    source источник


Ответы (2)


Вы можете использовать

use Omnipay\Omnipay; 

в вашем контроллере измените его на

use Omnipay;
person Germey    schedule 21.10.2016

Я рекомендую вам перейти с PayPal Express на PayPal REST. Он новее и имеет лучшую документацию.

Я просмотрел пакет laravel-omnipay и не вижу для него варианта использования. Я бы просто кодировал пакет omnipay напрямую.

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

Я думаю, что вы слишком буквально воспринимаете примеры из пакета laravel-omnipay. Вам не нужны или не нужны эти операторы эха. Вы должны захватить ответ от Purchase(), даже если это redirectResponse, и выполнить проверку getTransactionReference(), потому что вам понадобится эта ссылка на транзакцию позже, например. для поиска транзакций. Вы должны сохранить его в записи транзакции, которую вы создали перед вызовом функции buy().

person delatbabel    schedule 15.02.2016