私は自分のプロジェクトの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経由でゲートウェイに接続するようにしているのですが、最後のコンフィグレーションに関するドキュメントを見つけることができません。あなたが投稿