我有一个测试支付网关,我在localhost环境中使用它。
我写了一个函数,检查主机名是否为localhost,然后其他测试主机继续重定向到该网关。
现在的问题是来自生产环境的人使用该测试网关购买产品。
我的银行控制器:
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>
我的测试:
我将选择值从inspect elemnt更改为zarinpal(测试网关)然后我点击提交btn。 它发送了zarinpal但重定向到另一个网关。(似乎没有错误)
有人可以帮我找到他是如何使用该网关的吗?!