Lo que estoy tratando de hacer es llamar a la función del servidor y validar los datos en la función javascript, pero la declaración de devolución del servidor hace la redirección antes de la response.complete("success")
button.onclick = async function handlePurchase() { const payment = new PaymentRequest(methods, details, options); try { const response = await payment.show(); // Call server logic here and validate response if OK continue // But server response redirect here so code not completed $('#checkout-form').submit(); $.ajax({ url: '{{route("apple-pay")}}', type: 'post', data: $('#checkout-form').serialize(), success: function(data){ console.log('data :>> ', data); } }); await response.complete("success"); // redirect to success page } catch (err) { console.error("Uh oh, something bad happened", err.message); } }Función del servidor:
public function pay(Request $request) { $merchant_id = env('CREDIMAX_MERCHANT_ID'); $password = env('CREDIMAX_INTEGRATION_PASSWORD'); $response = Http::withBasicAuth('merchant.'.$merchant_id, $password)->put ('https://example.com/api/rest/merchant/'.$merchant_id.'/order/1530/transaction/1', $data); return $respone->json(); }Separe la solicitud que está realizando a la aplicación de terceros y la respuesta que está enviando a su llamada ajax. Esto es lo que quiero decir:
public function pay(Request $request) { $merchant_id = env('CREDIMAX_MERCHANT_ID'); $password = env('CREDIMAX_INTEGRATION_PASSWORD'); $response = Http::withBasicAuth('merchant.'.$merchant_id, $password)->put ('https://example.com/api/rest/merchant/'.$merchant_id.'/order/1530/transaction/1', $data); return response()->json([ 'success' => $response->ok() ? 1 : 0, ... ]); }Verifique la última línea en el controlador que dice "return $respone->json();" y debería ser "return $response->json();" -- Falta la "s" en respuesta.