2017-05-05 7 views
0

私は自分のプロジェクトの1つとしてSymfony 3.2でPayum Bundleを使用します。 私は複数のエンティティを持っており、誰もが1つ以上の事前定義された支払方法を持っているため、支払いシステムはかなり複雑です。 すべてのエンティティには独自の資格があります。だから、exapleのために:Symfony Payum Bundleはデータベースからゲートウェイを取得します

エンティティ1は、ペイパルとザ・ストライプス エンティティ2は、エンティティ1のペイパルと2のペイパルのみ

しかし、資格情報が異なってきています。 それを管理するより良い方法は、資格情報を挿入して編集するためのフォームを作成し、それらのすべてをデータベースに格納することです。

Payumがゲートウェイ設定のデータベースストレージをサポートしていますが、私はsymfonyを適切に設定できません。

今までentititiesとconfigファイルに続いています。私はfollingエンティティを作成し、データベース上corrispondingテーブルを生成したPayumドキュメントFollwoing

// /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 } 
関連する問題