2014-01-21 4 views
1

PayumBundle을 symfony2에서 구성했지만 작동하지 않습니다.PayumBundle 보안 헤더가 유효하지 않습니다

페이팔 사이트로 리디렉션되지 않았습니다.

오류가 발생했습니다. '오류', '결제 실패'정보를 찾을 수 있습니까? =이> 문자열 '보안 오류'(길이 = 14) 'L_LONGMESSAGE0'=> 문자열 '보안 헤더가 위해서 var_dump에서 ($ 상태)

'L_SHORTMESSAGE0 '업데이트 1

내가 오류를 foud 유효하지 않음 '(길이 = 28)

내가 설정 샌드 박스에서 작동하지 않을 때 메신저가 페이팔로 리디렉션되지만 금액, 지불 이름을 채우지 않았습니다 - 구성 방법은 무엇입니까?

내가이 예에서이를 구성 http://payum.forma-dev.com/documentation/0.8/PayumBundle/simple_purchase_examples/paypal_express_checkout

설정 :

payum: 
    security: 
     token_storage: 
      ed\partnerBundle\Entity\PayumSecurityToken: 
       doctrine: 
        driver: orm 
    contexts: 
     frei_payment: 
      paypal_express_checkout_nvp: 
       api: 
        options: 
         username: 'myusername' 
         password: 'mypass' 
         signature: 'mysing' 
         sandbox: true 
      storages: 
       ed\partnerBundle\Entity\PaymentDetails: 
        doctrine: 
         driver: orm 

라우팅 : 지불 컨트롤러에서

payment_start: 
    pattern: /payment 
    defaults: { _controller: edpartnerBundle:Payment:preparePaypalExpressCheckoutPayment } 

edpartner_payment_done: 
    pattern: /payment/done 
    defaults: { _controller: edpartnerBundle:Payment:done } 

행동 :

public function doneAction(){ 

     $request = $this->getRequest(); 

     $token = $this->get('payum.security.http_request_verifier')->verify($request); 

     $payment = $this->get('payum')->getPayment($token->getPaymentName()); 

     $status = new BinaryMaskStatusRequest($token); 
     $payment->execute($status); 

     if ($status->isSuccess()) { 
      $this->getUser()->addCredits(100); 
      $this->getRequest()->getSession()->getFlashBag()->set(
       'notice', 
       'Payment success. Credits were added' 
      ); 
     } else if ($status->isPending()) { 
      $this->getRequest()->getSession()->getFlashBag()->set(
       'notice', 
       'Payment is still pending. Credits were not added' 
      ); 
     } else { 
      $this->getRequest()->getSession()->getFlashBag()->set('error', 'Payment failed'); 
     } 

     return $this->redirect('homepage'); 



    } 

    /** 
    */ 
    public function preparePaypalExpressCheckoutPaymentAction(){ 

     $paymentName = 'my_payment'; 

     $storage = $this->get('payum')->getStorageForClass(
      'ed\partnerBundle\Entity\PaymentDetails', 
      $paymentName 
     ); 

     /** @var \ed\partnerBundle\Entity\PaymentDetails $paymentDetails */ 
     $paymentDetails = $storage->createModel(); 
     $paymentDetails['PAYMENTREQUEST_0_CURRENCYCODE'] = 'USD'; 
     $paymentDetails['PAYMENTREQUEST_0_AMT'] = 1.23; 
     $storage->updateModel($paymentDetails); 

     $captureToken = $this->get('payum.security.token_factory')->createCaptureToken(
      $paymentName, 
      $paymentDetails, 
      'edpartner_payment_done' // the route to redirect after capture; 
     ); 

     $paymentDetails['INVNUM'] = $paymentDetails->getId(); 
     $paymentDetails['RETURNURL'] = $captureToken->getTargetUrl(); 
     $paymentDetails['CANCELURL'] = $captureToken->getTargetUrl(); 
     $storage->updateModel($paymentDetails); 


     return $this->redirect($captureToken->getTargetUrl()); 



    } 

전 브라우저에서/지불 URL로 이동하고 메신저 홈페이지로 리디렉션 됨 - 데이터베이스에 새 레코드가 표시됩니다.하지만 지불을하지 않습니다. 왜 페이팔로 리디렉션되지 않았습니까?

답변

2

확인 오류 - 이것은 샌드 박스 오류입니다 - 정상 API 키 - 샌드 박스 모드 허용 안 함 - 번들 설치 매뉴얼에 설명되어 있지 않은 것과 같은 불쌍한 점과 불편 함없이 어떤 예외도 발생시키지 않습니다 - 간단한 리다이렉션 (정보없이). ..

+0

여기에 여러 번 묻습니다. 실제로 payum은 세부 정보 모델에 모든 정보를 저장합니다. 거기에 L_ERRORLONG0 (이와 비슷한 것) 텍스트 "보안 헤더 유효하지 않은"필드를 찾아야합니다. –

+0

문제가있을 때마다 세부 사항을 확인하십시오. Payum이 게이트웨이에서 가져올 수있는 모든 세부 사항을 포함해야합니다. –

+0

예를 들어이 질문을 확인할 수 있습니다. http://stackoverflow.com/questions/18548701/payum-symfony2-bundle-not-redirecting-me-to-paypal-on-paypal-express-checkout –