【问题标题】:Laravel 4 Paypal IPN routing exampleLaravel 4 Paypal IPN 路由示例
【发布时间】:2013-06-28 17:57:20
【问题描述】:

我想使用以下 PHP IPN 包:

https://github.com/mike182uk/paypal-ipn-listener

现在这里是来自 github 的示例代码:

    $request = new PayPal\Ipn\Request\Curl();

$request->secure(true); //dont need to do this as its done by default, just demonstrating configuring the request component

$listener = new PayPal\Ipn\Listener($request);

$listener->setMode('sandbox');

try {
    $status = $listener->verifyIpn();
}
catch (Exception $e) {
    $error = $e->getMessage();
    $status = false;
}

if ($status) {
    // verified...
}
else {
    // invalid...
    $report = $listener->getReport();
}

既然请求和侦听器看起来是在同一个操作中执行的,那么这将如何与路由一起工作?我以为您会将帖子或数据变量 ipn_notification_url 设置为您的 ipn 所在的 url,但看起来如果我将其设置为与上述相同的路由,它会重新发送请求?

我只是看不到初始请求是如何提出的(通过表单/帖子?)我希望它可以与购物车一起使用,所以我想您会将其发送到为购物车提供数据的路线内容数组到数据字段以初始化 $request。但是对于上面的示例,ipn 侦听器似乎与初始请求在同一条路由中?

我很抱歉新手,但小例子可以帮助新手

【问题讨论】:

标签: php routing laravel laravel-4 paypal-ipn


【解决方案1】:

以下是我如何将此包添加到我的 L4 安装:

1:将包添加到站点根目录下的 composer.json 文件中。

"require" : {
... (existing requirements),
"mike182uk/paypal-ipn-listener": "dev-master"
}

"autoload" : {
... (existing autoload stuff, certainly the classmap array),
"psr-0": {"PayPal": "src/"}

2:从您的站点根目录运行 composer update 并让它完成它的工作。

3:将 POST 路由添加到您的 routes.php 文件,以便 PayPal 使用 IPN:

Route::post('payment/ipn.php', array('as' => 'paypal.payment-ipn', 'uses' => 'PaymentsController@paypal_ipn'));

4:在您的 PaymentsController(或您用来处理付款的任何控制器名称)中添加一个名为 paypal_ipn() 的函数。这就是问题中的示例代码所在:

/*
==================
    PayPal IPN Stuff
==================
*/

public function paypal_ipn(){

    $request = new PayPal\Ipn\Request\Curl();

    $listener = new PayPal\Ipn\Listener($request);

    $listener->setMode('sandbox');

    try {
        $status = $listener->verifyIpn();
    }
    catch (Exception $e) {
        $error = $e->getMessage();
        $status = false;
    }

    if ($status) {
        // verified...
        error_log('Verified');
    }
    else {
        // invalid...
        $report = $listener->getReport();
    }

}

这对我有用。请让我知道如果其中任何一个是错误的方式去。

【讨论】:

    猜你喜欢
    • 2010-10-15
    • 2013-01-15
    • 2016-01-06
    • 2013-05-22
    • 2013-05-27
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多