2016-10-17 3 views
0

나는 magento 2 지불 모듈에서 작업하고 있지만, 여러 클래스가 클래스 a, 클래스처럼 선언 된 타사 지불 게이트웨이 PHP 파일을 포함해야 할 시점에 처박혀있다. b, class.php 파일의 클래스 c require_once ('magento_path/class.php');를 사용하고 있습니다. 하지만 작동하지 않는 것 같습니다 도와주세요!Magento 2 모듈에 복수 클래스 PHP 파일 추가

여기 --Updated--는
참고 gateway--하는 요청을 배치하는 코드의 내 샘플입니다 : 모든 변수는 모든 지불 게이트웨이 클래스가 Paymentsystem.php에 정의되어

 public function placeRequest(TransferInterface $transferObject) 
      { 
       require_once ("ThePaymentGateway/PaymentSystem.php"); 
       $rgeplRequestGatewayEntryPointList = new RequestGatewayEntryPointList(); 
$rgeplRequestGatewayEntryPointList->add("gw1.".$PaymentProcessorFullDomain, 100, 1); 
       $rgeplRequestGatewayEntryPointList->add("https://gw2.".$PaymentProcessorFullDomain, 200, 1); 
       $rgeplRequestGatewayEntryPointList->add("https://gw3.".$PaymentProcessorFullDomain, 300, 1); 
      $cdtCardDetailsTransaction = new CardDetailsTransaction($rgeplRequestGatewayEntryPointList); 

      $cdtCardDetailsTransaction->getMerchantAuthentication()->setMerchantID($MerchantID); 
      $cdtCardDetailsTransaction->getMerchantAuthentication()->setPassword($Password); 

      $cdtCardDetailsTransaction->getTransactionDetails()->getMessageDetails()->setTransactionType("SALE"); 

      $cdtCardDetailsTransaction->getTransactionDetails()->getAmount()->setValue($Amount); 
      $cdtCardDetailsTransaction->getTransactionDetails()->setOrderID($OrderID); 
      $cdtCardDetailsTransaction->getTransactionDetails()->setOrderDescription($OrderDescription); 

      $cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getEchoCardType()->setValue(true); 
      $cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getEchoAmountReceived()->setValue(true); 
      $cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getEchoAVSCheckResult()->setValue(true); 
      $cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getEchoCV2CheckResult()->setValue(true); 
      $cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getThreeDSecureOverridePolicy()->setValue(true); 
      $cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getDuplicateDelay()->setValue(60); 

      $cdtCardDetailsTransaction->getTransactionDetails()->getThreeDSecureBrowserDetails()->getDeviceCategory()->setValue(0); 
      $cdtCardDetailsTransaction->getTransactionDetails()->getThreeDSecureBrowserDetails()->setAcceptHeaders("*/*"); 
      $cdtCardDetailsTransaction->getTransactionDetails()->getThreeDSecureBrowserDetails()->setUserAgent($_SERVER["HTTP_USER_AGENT"]); 

      $cdtCardDetailsTransaction->getCardDetails()->setCardName($CardName); 
      $cdtCardDetailsTransaction->getCardDetails()->setCardNumber($CardNumber); 
      $cdtCardDetailsTransaction->getCardDetails()->setIssueNumber($IssueNumber); 
      $cdtCardDetailsTransaction->getCardDetails()->setCV2($CV2); 
      $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setAddress1($Address1); 
      $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setAddress2($Address2); 
      $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setAddress3($Address3); 
      $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setAddress4($Address4); 
      $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setCity($City); 
      $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setState($State); 
      $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setPostCode($PostCode); 
      $cdtCardDetailsTransaction->getCustomerDetails()->setEmailAddress("[email protected]"); 
      $cdtCardDetailsTransaction->getCustomerDetails()->setPhoneNumber("123456789"); 
      $cdtCardDetailsTransaction->getCustomerDetails()->setCustomerIPAddress($_SERVER["REMOTE_ADDR"]); 

      $boTransactionProcessed = $cdtCardDetailsTransaction->processTransaction($cdtrCardDetailsTransactionResult, $todTransactionOutputData); 
      if ($boTransactionProcessed == false) 
       { 
        // could not communicate with the payment gateway 
        $NextFormMode = "PAYMENT_FORM"; 
        $Message = "Couldn't communicate with payment gateway"; 
        PaymentFormHelper::reportTransactionResults($OrderID, 30, $Message, null); 
       } 
       else 
       { 
       echo "Payment Success"; 
       } 
     } 

예를 들어 있습니다 payzone에서 제공하지만 여기서는 require_once가 작동하지 않는 것 같습니다.

답변

1

Magento에는 사용자 정의 모듈을 개발할 수있는 방법이 있습니다. 이 방법을 따르지 않는다면, 말하고있는 것과 같은 경로 오류가있을 것입니다. 특히 많은 검증과 보안 매너가있는 지불 모듈에서 그렇습니다.

이 페이지를 확인하시기 바랍니다.

http://alanstorm.com/category/magento-2/page/3/ 그는 http://alanstorm.com/magento2_pestle_code_generation/

을 확인 너무 쉽게 사용자 정의 모듈을 생성 할 수있는 프레임 워크라는 방앗 공이를했다.

+0

예, 맞춤 결제 모듈 가이드를 만들었습니다 – user3719134

+0

payzone 지불 게이트웨이에 연결하기 위해 맞춤 결제 모듈을 만들었지 만 payzone은 연결을 위해 제 모듈에 포함해야하는 PHP 라이브러리를 제공하지만 라이브러리에 정의 된 클래스가 너무 많습니다 하나의 PHP 파일 그래서 내 질문은 내 모듈에이 파일을 포함시킬 수 있습니까? – user3719134

+0

알았어. 그럼 그 클래스들을 제 블록 파일에 추가 할 것입니다. 동일한 PHP 파일 내에서 클래스를 만들 수 있습니다. $ newClass = new Class A ... 그런 다음이 객체의 메소드를 사용하고 싶다면 $ newClass-> method()를 사용하면된다. ; 네임 스페이스에 대해 배우려면 블록 __construct에 의존성 삽입을 통해이 클래스를 추가 할 수 있으므로 Magento 방식을 따를 수 있습니다. 동일한 Block 파일 내의 새로운 클래스를 네임 스페이스로 만듭니다. –