2016-10-03 2 views
0

나는 laravel 내에서 페이팔 적응 지불을 통합하려고합니다. http://proggblo.blogspot.ca/2013/04/paypal-adaptive-payments-parallel.htmllaravel 컨트롤러에서 여러 기능을 실행 하시겠습니까?

문제는, 내가 laravel 내에서 그렇게하는 방법도 확인되지 않을 것 :

는이 코드와 유사한 무언가를 사용하고 싶습니다. 컨트롤러를 사용하고 게시물 요청을 통과합니까? 그렇다면 어떻게 생겼을까요? 이 같은? 경로 :

Route::post('/payment', [ 
'uses' => '\CommendMe\Http\Controllers\[email protected]', 
'as' => 'quote.payment', 
]); 

컨트롤러 :

class PaypalController extends Controller { 
    public function payment(Request $request) { 


    $apiUrl = "https://svcs.sandbox.paypal.com/AdaptivePayments/"; 

    $paypalUrl = "https://www.sandbox.paypal.com/webscr?cmd=_ap-payment&paykey="; 


    function __construct() { 

     $this->headers = array(

      "X-PAYPAL-SECURITY-USERID: ".API_USER, 

      "X-PAYPAL-SECURITY-PASSWORD: ".API_PASS, 

      "X-PAYPAL-SECURITY-SIGNATURE: ".API_SIG, 

      "X-PAYPAL-REQUEST-DATA-FORMAT: JSON", 

      "X-PAYPAL-RESPONSE-DATA-FORMAT: JSON", 

      "X-PAYPAL-APPLICATION-ID: ".APP_ID 

    ); 

    } 
    function _paypalSend($data,$call) { 

    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL, $this->apiUrl.$call); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 

    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); 

    curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers); 

    return json_decode(curl_exec($ch), TRUE);  


    } 
} 
} 

등 등 밖으로 코드의 나머지 부분을 떠난다. (위의 링크에서 찾을 수 있습니다)

이제 지불 기능 내의 기능이 실행되면 좋을 것입니다.

컨트롤러 대신 미들웨어를 사용해야합니까?

답변

0

표준 PHP에서 여러 가지 메소드를 실행하는 것과 다를 바 없습니다. 컨트롤러 내부에 메소드를 생성하면 원하는 때에 언제든지 호출 할 수 있습니다.

귀하의 컨트롤러에서 가장 큰 문제는 지불 기능에 중첩 된 __construct 메소드가 있다는 것입니다. 또한 POST 요청에서 지불 엔드 포인트를 치는 경우 지불을 보내려면 해당 메소드의 $ data 및 $ call 변수에 액세스해야합니다. 해당 변수의 데이터가 어디서 왔는지 표시하지 않기 때문에, 나는 이론적으로 너에게 이것을 보여줄 수있는 방법을 보여줄 수있다.

class PaypalController extends Controller 
{ 
    private $apiUrl; 
    private $paypalUrl; 

    public function payment(Request $request) 
    { 
     $this->apiUrl = "https://svcs.sandbox.paypal.com/AdaptivePayments/"; 
     $this->paypalUrl = "https://www.sandbox.paypal.com/webscr?cmd=_ap-payment&paykey="; 

     $this->send($data, $call); 
    } 

    private function send($data, $call) 
    { 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $this->apiUrl . $call); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, $this->getHeaders()); 
     return json_decode(curl_exec($ch), TRUE);  
    } 


    private function getHeaders() 
    { 
     return [ 

      "X-PAYPAL-SECURITY-USERID: ".API_USER, 

      "X-PAYPAL-SECURITY-PASSWORD: ".API_PASS, 

      "X-PAYPAL-SECURITY-SIGNATURE: ".API_SIG, 

      "X-PAYPAL-REQUEST-DATA-FORMAT: JSON", 

      "X-PAYPAL-RESPONSE-DATA-FORMAT: JSON", 

      "X-PAYPAL-APPLICATION-ID: ".APP_ID 

     ]; 
    } 
} 
관련 문제