Laravel envía datos al controlador y luego envía los datos a la URL de acción
- 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
delPaymentController
en Laravel. Elcontroller
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