Я работаю над приложением Laravel, в соответствии с которым я должен обратиться к платежному шлюзу и прослушивать статус платежа через 5 секунд в течение трех раз подряд. Я хочу передать данные из контроллера в код AJAX и использовать метод setInterval Js для выполнения функции. Для повторного обращения к API в течение 3 раз подряд перед остановкой транзакции. Я понятия не имею, как обойти это ..
Текущий контроллер, содержащий логику PHP
public function payFinal(Request $request)
{
//Convert to a JSON object
$data =(object)$request->all();
$quote = $request->session()->get('quoteID');
$all = array(
'phone' => $data->phone,
'quote_id' => $quote,
'payment_type' => $data->type,
);
//Post data to the payment gateway
$response = $this->global_Curl($all, 'api/payment/checkout');
//Get some data from the response from the API
$checkID = $response->data->CheckoutRequestID;
//Get another set of data
$type = $data->type;
//Add the data in an array and store in a variable ready for processing
$data = array(
'payment_reference' => $checkID,
'payment_type' => $type
);
//Reach out to another API to get status. This set of data is to be done repeatedly
$payStat = $this->global_Curl($data, 'api/payment/status')->data;
if ($payStat->status === 1) {
return 'true';
}
}
Код ниже взят из функции выше, и я хочу передать его в AJAX и использовать метод setInterval, чтобы повторить его
~ любезно помочь ..
//Reach out to another API to get status. This set of data is to be done repeatedly
$payStat = $this->global_Curl($data, 'api/payment/status')->data;
AJAX-код для извлечения данных из
$.ajax({
url: 'getquote',
type: 'get',
contentType: 'application/x-www-form-urlencoded',
data: '',
success: function success(response) {
console.log(response);
},
error: function error(data) {
console.log(data);
}
});
Данный код не ясен ..! Однако вы, вероятно, можете попробовать, как показано ниже.
Я полагаю, что вы вызываете действие контроллера как URL-адрес ajax из JavaScript и функции PHP payFinal()
вызывается в этом действии, тогда следующий код поможет вам ..!
Код JavaScript:
setInterval("AJAX Function to be invoked", 5000);
Приведенный выше код вызывает функцию ajax каждые 5 секунд.
Других решений пока нет …