내 프로젝트 중 하나에 대해 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을 통해 게이트웨이를 검색하도록 구성 되었기 때문에 지원됩니다. 그러나 구성의 마지막 단계에 대해 모든 종류의 문서를 찾을 수 없습니다. 당신이 게시