在laravel控制器中执行多个功能?

时间:2016-10-03 17:34:14

标签: php laravel paypal

我试图将Paypal自适应支付整合到laravel中。

我想使用类似于此代码的内容: http://proggblo.blogspot.ca/2013/04/paypal-adaptive-payments-parallel.html

问题是,我不太确定如何在laravel中做到这一点。我会使用控制器并通过邮寄请求吗?如果是这样,它会是什么样子?像这样的东西? 路线:

Route::post('/payment', [
'uses' => '\CommendMe\Http\Controllers\PaypalController@payment',
'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);      


  }
 }
}

等。等剩下的代码。 (你可以在上面的链接中找到它)

现在,如果支付功能中的功能会执行,那就没问题了。

在这种情况下我应该使用中间件而不是控制器吗?

1 个答案:

答案 0 :(得分:0)

与在标准PHP中执行多个方法没有什么不同。只需在控制器内创建方法,您就可以随时调用它们。

控制器中最大的问题是您的支付功能中嵌套了__construct方法。此外,如果您在POST请求中访问支付端点,则需要访问该方法中的$ data和$ call变量以便发送付款。因为您不显示数据来自哪些来源变量,我只能告诉你如何做到这一点

/^\/ashok(?:\/[a-z0-9]+)+$/i