【问题标题】:Executing multiple functions in a laravel controller?在 laravel 控制器中执行多个功能?
【发布时间】:2017-02-11 17:34:14
【问题描述】:

我正在尝试在 laravel 中集成 Paypal 自适应支付。

我想使用类似于此代码的内容: 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);      


  }
 }
}

等等。等等。留下其余的代码。 (您可以在上面的链接中找到它)

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

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

【问题讨论】:

    标签: php laravel paypal


    【解决方案1】:

    这与在标准 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  
    
            ];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-12
      • 2019-07-20
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多