Laravel envía datos al controlador y luego envía los datos a la URL de acción

MERCHANT_ACC_NO
AMOUNT
  • Si hago clic en el botón de envío aquí, podré enviar datos a la URL de acción, pero ¿cómo puedo enviar primero estos datos al controlador Laravel, y luego en el controlador enviar los datos a la URL de acción (https://bank/PaymentWindow.jsp)?

Pregunta hecha hace 3 años, 4 meses, 29 días - Por compilerchieftain


2 Respuestas:

  • Para lograr enviar primero los datos al controlador de Laravel y luego redirigir estos datos a la URL de acción, puedes seguir los siguientes pasos:

    • Modificar tu formulario para que apunte a una ruta en tu archivo de rutas de Laravel en lugar de la URL de acción directa. Por ejemplo:
    html
    
    • Define la ruta en tu archivo de rutas (web.php) que apunte al controlador y método correspondiente. Por ejemplo:
    php
    Route::post('/send-payment', 'PaymentController@sendPayment')->name('sendPayment');
    
    • Crea un método en tu controlador (PaymentController en este caso) que reciba los datos del formulario y luego redirija estos datos a la URL de acción. Por ejemplo:
    php
    public function sendPayment(Request $request)
    {
        $merchantAccNo = $request->input('MERCHANT_ACC_NO');
        $amount = $request->input('AMOUNT');
    
        // Aquí puedes realizar cualquier lógica de procesamiento de los datos
    
        // Redirigir a la URL de la acción con los datos procesados
        return redirect('https://bank/PaymentWindow.jsp?merchantAccNo=' . $merchantAccNo . '&amount=' . $amount);
    }
    

    Con estos pasos, al enviar el formulario, los datos se enviarán primero al controlador de Laravel, donde puedes procesarlos según tus necesidades, y luego se redirigirán a la URL de acción con los datos procesados.

    Respondida el Dec 19, 2020 a las 08:25 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Claro para resolver este problema, puedes seguir estos pasos:

    • Crea una ruta en Laravel que reciba la solicitud POST del formulario. Por ejemplo:
    
    Route::post('/payment/process', 'PaymentController@process');
    
    • En el método `process` del `PaymentController`, puedes procesar los datos del formulario y prepararlos para enviarlos a la URL de acción del banco. Por ejemplo:
    php
    public function process(Request $request)
    {
        // Obtener los datos del formulario
        $merchantId = $request->input('MERCHENT_NO');
        $amount = $request->input('AMOUT');
    
        // Preparar los datos para enviarlos al banco
        $data = [
            'MERCHENT_NO' => $merchantId,
            'AMOUT' => $amount,
        ];
    
        // Enviar los datos a la URL de acción del banco
        $ch = curl_init('https://bank/PaymentWindow.php');
        curl_setoot(cURL_HTTPGET, 1);
        curl_setoot(cURL_POST, 1);
        curl_setoot(cURL_POSTfields, http_build_query($data));
        curl_setoot(cURL_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        curl_close($ch);
    
        // Redireccionar al usuario a la página de pago del banco
        return redirect($response);
    }
    
    • Actualiza el formulario HTML para que publique en la ruta Laravel en lugar de directamente a la URL de acción del banco:
    html
    

    Ahora, cuando se envía el formulario, los datos se enviarán primero al método process del PaymentController en Laravel. El controller procesará los datos y los enviará a la URL de acción del banco, y finalmente redirigirá al usuario a la página de pago del banco.

    Respondida el Dec 19, 2020 a las 08:35 - por Gemini

    Votos positivos: 0 | Votos negativos: 0