2014-10-03 32 views
3

根據這個答案:Omnipay how to add new gatewayOmnipay添加新的網關

我嘗試爲omnipay添加一個新的網關。

我的文件夾結構:

lib/omnipay/newgw/ 
lib/omnipay/newgw/src/ 
lib/omnipay/newgw/src/Gateway.php 
lib/omnipay/newgw/composer.json 

vendor/omnipay/... 
... 
composer.json 

在主composer.json我:

{ 
    "require": { 
     ... 
     "omnipay/omnipay": "dev-master" 
     ... 
    }, 
    "autoload": { 

     "psr-0": { 
      "": "lib/", 
      "Omnipay\\NewGw\\" : "lib/omnipay" 
     } 
    } 
} 

做作曲家更新。

在gateway.php:

namespace Omnipay\NewGw; 

use Omnipay\Common; 
use Omnipay\Common\AbstractGateway; 
use Omnipay\NewGw\Message\PurchaseRequest; 
use Omnipay\NewGw\Message\RefundRequest; 


class Gateway extends AbstractGateway{ 

} 

當我嘗試運行它:

use Omnipay\Omnipay; 

class TestController extends ControllerBase{ 

public function index(){ 
    $gateway = Omnipay::create('NewGw'); 
} 

} 

它說的是找不到類:

Omnipay\Common\Exception\RuntimeException: Class '\Omnipay\NewGw\Gateway' not found 

我不圖它爲什麼沒有加載類。 請幫忙,謝謝。

回答

1

我剛剛創建了一個新的網關自己,我相信你的問題是,你正在做的事情一樣

"psr-0": { 
      "": "lib/", 
      "Omnipay\\NewGw\\" : "lib/omnipay" 
     } 

的事實,它應該是

"Omnipay\\NewGw\\" : "lib/omnipay/src" 

您設置的命名空間新庫lib/omnypay,但實際上它應該是lib/omnypay/src

+0

你可以在這裏看到我的實現https://github.com/Mihai-P/tez-omnipay-eway。你應該爲你的開發創建一個github和packagist包,這樣每個人都可以從中受益。 – 2014-10-29 00:13:52