VOOZH about

URL: https://payum.gitbook.io/payum/symfony/storages

⇱ Storages | Payum


For the complete documentation index, see llms.txt. This page is also available as Markdown.

Doctrine ORM

Add token and payment details classes:

<?php
namespaceAcme\PaymentBundle\Entity;
use Doctrine\ORM\Mappingas ORM;
use Payum\Core\Model\Token;
/**
 * @ORM\Table
 * @ORM\Entity
*/
classPaymentTokenextendsToken
{
}
<?php
namespaceAcme\PaymentBundle\Entity;
use Doctrine\ORM\Mappingas ORM;
use Payum\Core\Model\ArrayObject;
/**
 * @ORM\Table
 * @ORM\Entity
*/
classPaymentDetailsextendsArrayObject
{
/**
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 *
 * @varinteger $id
*/
protected$id;
}

next, you have to add mapping of the basic entities you are extended, and configure payum's storages:

Doctrine MongoODM.

Token use custom mongo type called ObjectType, so you have to add it to the kernel boot method:

Now, add token and payment details classes:

next, you have to add mapping of the basic entities you are extended, and configure payum's storages:

Note: You should use commented path if you install payum/payum package.

Custom.

We have several built in storages which cover all your needs. Sometimes you need completely custom storage. To have a custom storage you have to implement StorageInterface from core:

Register it as a service:

When you are done you can use it like this:

Filesystem.

Attention: Use filesystem storage only for testing and never in production.

Add token and payment details classes:

next, you have to configure payum's storages:


Supporting Payum

Payum is an MIT-licensed open source project with its ongoing development made possible entirely by the support of community and our customers. If you'd like to join them, please consider:

Last updated

# app/config/config.yml
payum:
 security:
 token_storage:
 Acme\PaymentBundle\Entity\PaymentToken: { doctrine: orm }
 storages:
 Acme\PaymentBundle\Entity\PaymentDetails: { doctrine: orm }
<?php
// app\AppKernel.php
use Doctrine\ODM\MongoDB\Types\Type;
class AppKernel extends Kernel
{
 public function boot()
 {
 Type::addType('object', 'Payum\Core\Bridge\Doctrine\Types\ObjectType');
 parent::boot();
 }
<?php
namespace Acme\PaymentBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as Mongo;
use Payum\Core\Model\Token;
/**
 * @Mongo\Document
 */
class PaymentToken extends Token
{
}
<?php
namespace Acme\PaymentBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as Mongo;
use Payum\Core\Model\ArrayObject;
/**
 * @Mongo\Document
 */
class PaymentDetails extends ArrayObject
{
 /**
 * @Mongo\Id
 *
 * @var integer $id
 */
 protected $id;
}
# app/config/config.yml
doctrine_mongodb:
 document_managers:
 default:
 auto_mapping: true
 mappings:
 payum:
 is_bundle: false
 type: xml
 dir: %kernel.root_dir%/../vendor/payum/core/Payum/Core/Bridge/Doctrine/Resources/mapping
 # set this dir instead if you use `payum/payum` library
 #dir: %kernel.root_dir%/../vendor/payum/payum/src/Payum/Core/Bridge/Doctrine/Resources/mapping
 prefix: Payum\Core\Model
payum:
 security:
 token_storage:
 Acme\PaymentBundle\Entity\PaymentToken: { doctrine: mongodb }
 storages:
 Acme\PaymentBundle\Entity\PaymentDetails: { doctrine: mongodb }
<?php
namespace Acme\PaymentBundle\Payum\Storage;
use Payum\Core\Storage\StorageInterface;
class CustomStorage implements StorageInterface
{
 // implement interface methods.
}
# app/config/config.yml
services:
 acme.payment.payum.storage.custom:
 class: Acme\PaymentBundle\Payum\Storage\CustomStorage
# app/config/config.yml
payum:
 storages:
 Acme\PaymentBundle\Model\Foo:
 custom: acme.payment.payum.storage.custom
<?php
namespace Acme\PaymentBundle\Model;
use Payum\Core\Model\Token;
class PaymentToken extends Token
{
}
<?php
namespace Acme\PaymentBundle\Model;
use Payum\Core\Model\ArrayObject;
class PaymentDetails extends ArrayObject
{
 protected $id;
}
# app/config/config.yml
payum:
 security:
 token_storage:
 Acme\PaymentBundle\Model\PaymentToken:
 filesystem:
 storage_dir: %kernel.root_dir%/Resources/payments
 id_property: hash
 storages:
 Acme\PaymentBundle\Model\PaymentDetails:
 filesystem:
 storage_dir: %kernel.root_dir%/Resources/payments
 id_property: id