У меня есть тестовый платежный шлюз, который я использую в локальной среде.
Я написал функцию, которая проверяет, является ли имя хоста localhost, а другие тестовые хосты затем перенаправляют на этот шлюз.
Теперь проблема в том, что человек из производственного отдела использовал этот тестовый шлюз для покупки продукта.
Мой BankController:
function request($bankName, $price,$user = null)
{
switch (strtoupper($bankName)) {
case Bank::MELLAT:
return $this->redirectTo(new Mellat(), $price,$user);
//ZARINPAL is my test gateway
case Bank::ZARINPAL:
if (is_testing_host())
return $this->redirectTo(new Zarinpal(), $price,$user);
case Bank::SAMAN:
return $this->redirectTo(new Saman(), $price,$user);
case Bank::SAMANKISH:
return $this->redirectTo(new SamanKish(), $price,$user);
// other banks here...
}
throw new \Exception('Gateway not found');
}
is_testing_host функция:
function is_testing_host()
{
return in_array(@$_SERVER['REMOTE_ADDR'], ['localhost', '127.0.0.1','::1'])
|| request()->getHost() == 'site.test';
}
Html выбрать шлюз:
<select class="form-control" style="padding:5px;" name="bank" id="bank">
@if(is_testing_host())
<option value="zarinpal" selected="selected">Zarinpal</option>
@else
<option value="saman">درگاه پرداخت سامان کیش</option>
@endif
</select>
Мой тест:
Я изменил выбранное значение на zarinpal (тестовый шлюз) с inspect elemnt, затем щелкнул submit btn.Он отправил zarinpal, но перенаправил на другой шлюз. (Похоже, что ошибки нет)
Может кто-нибудь помочь мне найти, как он использовал этот шлюз?!