簡體   English   中英

payum symfony 2捆綁包-基本配置-存儲

[英]payum symfony 2 bundle - basic configuration - storage

我需要配置payum捆綁包,以便讓客戶處理Paypal付款。

我只是遵循了入門的正式建議,但我想還需要配置更多功能(也許我缺少在某些地方為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;

這是我獲取doneAction()網址時出現的錯誤,這是

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

有什么幫助或建議嗎? 先感謝您

剛剛改變了這一行

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

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

現在可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM