2017-05-05 9 views
0

내 프로젝트 중 하나에 대해 Symfony 3.2와 함께 Payum 번들을 사용하려고합니다. 여러 엔터티를 보유하고 있고 모두가 하나 이상의 미리 정의 된 지불 방법을 가지고 있기 때문에 지불 시스템이 상당히 복잡합니다. 모든 엔티티에는 고유 한 자격 증명이 있습니다. exaple에 대한 그래서 :Symfony Payum 번들은 데이터베이스에서 게이트웨이를 얻습니다.

엔티티 1 페이팔과 Strype 엔티티 2에만

그러나의 페이팔에 대한 자격 증명 엔티티 1과 2는 다른 페이팔 있습니다. 저를 위해 더 나은 관리 방법은 자격 증명을 삽입하고 편집 할 양식을 만들어 데이터베이스에 저장하는 것입니다.

Payum이 게이트웨이 설정의 데이터베이스 스토리지를 지원하지만 symfony를 올바르게 설정할 수 없다는 것을 알았습니다.

entitities 및 config 파일을 지금까지 추적하십시오. 내가 folling 엔티티를 생성하고 데이터베이스에 corrisponding 테이블을 생성 한 Payum 워드 프로세서 때라도

// /app/config/config.yml 
payum: 
    security: 
     token_storage: 
      AppBundle\Entity\PaymentToken: { doctrine: orm } 

    storages: 
     AppBundle\Entity\PaymentDetails: { doctrine: orm } 

는 :

내가 엔티티를 생성하고 내 데이터베이스에 지속 것보다
<?php 
// AppBundle/Entity/GatewayConfig.php 
namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Payum\Core\Model\GatewayConfig as BaseGatewayConfig; 

/** 
* @ORM\Table 
* @ORM\Entity 
*/ 
class GatewayConfig extends BaseGatewayConfig 
{ 
    /** 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    * 
    * @var integer $id 
    */ 
    protected $id; 
} 

는 다음 컨트롤러를 부엉 :

/** 
    * @Route("/testGateway", name="gateway") 
    */ 
    public function testGetawayCreationAction(){ 
     $gatewayConfig = new GatewayConfig(); 
     $gatewayConfig->setGatewayName('paypal'); 
     $gatewayConfig->setFactoryName('paypal_express_checkout_nvp'); 
     $gatewayConfig->setConfig(array(
      'username' => 'MY COOL USERNAME', 
      'password' => 'MY COOL PASSWORD', 
      'signature' => 'MY ELEGANT SIGNATURE', 
      'sandbox' => true, 
     )); 


     $em=$this->get('doctrine')->getManager(); 
     $em->persist($gatewayConfig); 
     $em->flush(); 
     return new Response("Gateway insered"); 
    } 
} 

지금은, 나는 데이터베이스에 데이터를 엔티티했습니다했지만 나는 payum의 transacion를 시작하려고하면 나는 FO 내부 토큰의 생성에이 오류가 제어기 :

/** 
    * @Route("/doPayment", name="doPayment") 
    */ 
    public function prepareAction() 
    { 
     $gatewayName = 'paypal'; 

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

     $payment = $storage->create(); 
     $payment->setNumber(uniqid()); 
     $payment->setCurrencyCode('EUR'); 
     $payment->setTotalAmount(123); // 1.23 EUR 
     $payment->setDescription('A description'); 
     $payment->setClientId('anId'); 
     $payment->setClientEmail('[email protected]'); 

     $storage->update($payment); 

     $captureToken = $this->get('payum')->getTokenFactory()->createCaptureToken(
      $gatewayName, 
      $payment, 
      'done' // the route to redirect after capture 
     ); 

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

오류 500 : 게이트웨이 "paypal"이 존재하지 않습니다.

이것은 정확하게 내가 Payum을 데이터베이스에서 Doctrine을 통해 게이트웨이를 검색하도록 구성 되었기 때문에 지원됩니다. 그러나 구성의 마지막 단계에 대해 모든 종류의 문서를 찾을 수 없습니다. 당신이 게시

답변

0

모든 설정의이 부분을 제외하고 좋아 보인다

#app/config/config.yml 

payum: 
    dynamic_gateways: 
     sonata_admin: true 
     config_storage: 
      Acme\PaymentBundle\Entity\GatewayConfig: { doctrine: orm }