2014-10-17 113 views
0

我需要配置payum bundle以便讓客戶端處理paypal付款。payum symfony 2 bundle - 基本配置 - 存儲

我只是遵循getting started正式推薦,但需要配置更多的東西,我猜(也許我錯過了爲某個地方的PaymentDetails配置存儲)。

我的配置文件如下:

**app/config.yml** 
    doctrine:  

     orm: 
      auto_generate_proxy_classes: true 
      entity_managers: 
       default: 
        mappings: 
         WebsiteDeviceBundle: ~ 
         WebsiteOnePageBundle: ~ 
         payum: 
          is_bundle: false 
          type: xml 
          dir: %kernel.root_dir%/../vendor/payum/payum/src/Payum/Core/Bridge/Doctrine/Resources/mapping 
          prefix: Payum\Core\Model 
    payum: 
     security: 
      token_storage: 
       Website\Bundle\DeviceBundle\Entity\PaymentToken: { doctrine: orm } 
     storages: 
      Website\Bundle\DeviceBundle\Entity\PaymentDetails: { doctrine: orm } 

     contexts: 
      express_euro: 
       paypal_express_checkout_nvp: 
        username: '' 
        password: '' 
        signature: '' 
        sandbox: true 

這是我的控制器操作來啓動付款過程

public function prepareAction(){ 
     $paymentName = 'express_euro'; 

     $storage = $this->get('payum')->getStorage('Website\DeviceBundle\Entity\PaymentDetails'); 

     $order = $storage->createModel(); 
     $order->setNumber(uniqid()); 
     $order->setCurrencyCode('EUR'); 
     $order->setTotalAmount($this->view['user']->money); 
     $order->setDescrizione('annual account subscription'); 
     $order->setUser($this->view['user']->getId()); 
     $order->setCreatedAt(new \DateTime()); 
     $order->setClientEmail($this->view['user']->getEmail()); 

     $storage->updateModel($order); 

     $captureToken = $this->get('payum.security.token_storage')->createCaptureToken(
      $paymentName, 
      $order, 
      'done' // the route to redirect after capture; 
     ); 

     return $this->redirect($captureToken->getTargetUrl()); 
    } 

,這是PaymentDetails類

<?php 

namespace Website\Bundle\DeviceBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Payum\Core\Model\ArrayObject; 

/** 
* PaymentDetails 
* 
* @ORM\Table(name="PaymentDetails", indexes={@ORM\Index(name="user", columns={"user"})}) 
* @ORM\Entity(repositoryClass="Website\Bundle\DeviceBundle\Entity\PaymentsDetailsRepository") 
*/ 
class PaymentDetails extends ArrayObject 
{ 
    /** 
    * @var string 
    * 
    * @ORM\Column(name="currency_code", type="string", length=255, nullable=false) 
    */ 
    private $currencyCode; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="description", type="text", nullable=true) 
    */ 
    private $description; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="created_at", type="datetime", nullable=true) 
    */ 
    private $createdAt; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="number", type="integer", nullable=false) 
    */ 
    private $number; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="total_amount", type="integer", nullable=false) 
    */ 
    private $totalAmount; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="client_email", type="text", nullable=false) 
    */ 
    private $clientEmail; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="bigint") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var \Website\Bundle\DeviceBundle\Entity\Users 
    * 
    * @ORM\ManyToOne(targetEntity="Website\Bundle\DeviceBundle\Entity\Users") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="user", referencedColumnName="id") 
    * }) 
    */ 
    private $user; 

和錯誤它來的時候,我GET GETAction()網址,這是

A storage for model Website\DeviceBundle\Entity\PaymentDetails was not registered. There are storages for next models: Website\Bundle\DeviceBundle\Entity\PaymentDetails. 

任何幫助或建議? 預先感謝您

回答

1

只是改變了這一行

$storage = $this->get('payum')->getStorage('Website\DeviceBundle\Entity\PaymentDetails'); 

$storage = $this->get('payum')->getStorage('Website\Bundle\DeviceBundle\Entity\PaymentDetails'); 

,現在它的工作原理。