2016-10-03 13 views
0

私はlaravel内でペイパルの適応支払いを統合しようとしています。ララベルコントローラで複数の機能を実行していますか?

私は、このコードに似たものを使用したい: http://proggblo.blogspot.ca/2013/04/paypal-adaptive-payments-parallel.html

問題は、私は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 

     ]; 
    } 
} 
関連する問題