2014-11-13 6 views
0

Я не знаю, возможно ли это, или если это полное безумие, но я пытаюсь выполнить метод PHP из вызова AJAX, используя OctoberCMS Ajax Framework (я предполагаю, что это использует jQuery за ним) и не работает, потому что я никогда не получаю перенаправить на сайт PayPal. PHP код, который я пытаюсь получить работу не это одна:Как вызвать метод внутри компонента в OctoberCMS?

protected function onExecutePurchaseMethod() 
{ 
    Omnipay::gateway('PayPal_Express'); 

    $params = [ 
     'username' => $this->username, 
     'password' => $this->password, 
     'signature' => $this->signature, 
     'testMode' => $this->sandboxMode, 
     'amount' => Session::get('amountToReload'), 
     'cancelUrl' => url('payment/step4', "", $secure = null), 
     'returnUrl' => url('payment/step2', "", $secure = null), 
     'currency' => 'USD' 
    ]; 

    $response = Omnipay::purchase($params)->send(); 

    if ($response->isSuccessful()) { 
     var_dump($response); 
    } else { 
     var_dump($response->getMessage()); 
    } 
} 

Что происходит, так как никто не перенаправлять на PayPal выполняется и страница застревать много раз заставляет меня закрыть браузер и открыть снова, ни один метод выполняется и видимых ошибок нет. Можно делать то, что я пытаюсь сделать? Разве это не безумие? Если возможно, где моя ошибка?

Как дополнительная информация Я использую Barryvdh Laravel-omnipay пакет для обработки Omnipay изнутри Laravel.

+0

Я использую Omnipay, но Express Checkout потребует перенаправления на paypal, так как вы справляетесь с этим в своем AJAX? XMLHTTPRequest не будет следовать перенаправлению HTTP. – prodigitalson

+0

@prodigitalson, и это именно то, что происходит «нет перенаправления на PayPal», так как я должен справиться с этим? Как я могу вставить этот код в жизненный цикл страницы OctoberCMS? Это то, что я переживаю через Ajax, а не как обычный способ. – ReynierPM

+0

Я ничего не знаю о OctoberCMS, но обычно вы не будете выполнять экспресс-запрос по ajax. Требуется ли ajax из-за CMS или вы можете обрабатывать метод экспресс-платежей с прямым POST? – prodigitalson

ответ

0

Просматривая документацию, я думаю, что у вас отсутствует обязательное поле для метода purchase(). Я считаю, что вам нужен параметр card (даже если он является недопустимым), чтобы заставить его обрабатывать.

+0

[This] (http: /stackoverflow.com/a/20779741/719427) ответ говорит, что не обязательно, где вы его читали? Почему, если я буду платить через PayPal, я должен использовать CC, даже если это подделка? – ReynierPM

+0

Ах, ты прав. 'card' не требуется, извините. Вот необходимые поля, которые я сделал найти [здесь] (https://github.com/thephpleague/omnipay) в шлюзовых методах: 'маркер, суммы, валюты, описания, TransactionID, ClientIP, ReturnUrl, отменаUrl'. Извиняюсь. – cchapman

+0

Хммм Я не думаю, что это проблема, поскольку не все эти параметры требуются. Взгляните [здесь] (https://github.com/thephpleague/omnipay-paypal/blob/master/src/ProGateway.php#L17-L25), вы увидите только несколько, а также есть этот комментарий 'All методы gateway принимают массив $ options в качестве аргумента. Каждый шлюз отличается тем, какие параметры требуются, и шлюз будет вызывать InvalidRequestException, если вы опустите какие-либо требуемые параметры. 'At docs и я не получаю никакого' InvalidRequestException' – ReynierPM

Смежные вопросы