2016-10-03 86 views
0

我正在尝试将贝宝自适应付款集成到laravel中。在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 

     ]; 
    } 
} 
相关问题