如何用Laravel设置Omnipay?

时间:2016-02-12 14:04:48

标签: paypal laravel-5 omnipay

我正在使用此数据包:

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 conf文件:

<?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是有效的回调,   class'Onnipay \ Common \ GatewayFactory'没有方法   '购买'

任何人都可以帮我设置这个吗? 我在paypal上创建了应用程序,并提供了有关它的详细信息,但不知道如何使用此API进行设置...

2 个答案:

答案 0 :(得分:1)

您可以使用

use Omnipay\Omnipay; 
在控制器中

,将其更改为

use Omnipay;

答案 1 :(得分:0)

我建议您从PayPal Express切换到PayPal REST。它更新,文档更好。

我查看了laravel-omnipay包,但我看不到它的用例。我只是直接编码到omnipay包。

我建议您为每个事务创建一个唯一的事务ID,并将其作为returnUrl和cancelUrl的URL的一部分提供,以便您可以在return和cancel处理程序中识别要处理的事务。

我认为你在laravel-omnipay包中的例子太字面了。你不需要或想要那些echo语句。您应该从purchase()获取响应,即使它是redirectResponse并对其执行getTransactionReference()检查,因为您稍后需要该事务引用,例如用于事务查找。您应该将它存储在您调用purchase()之前创建的事务记录中。