问题描述
我正在使用银行付款网关在我的网站上进行用户付款。
它基于PHP和SOAP。
最近,在最新版本的chrome(84.x)和回调函数中,它在状态栏中反复显示“等待缓存”。
FF和IE以及以前版本的chrome都没有问题。
如果我删除浏览缓存和Cookie,则可以解决一笔付款的Chrome问题。但是问题再次出现在第二笔付款上。
这是一个很烦人的问题。
function call() {
ini_set ( "soap.wsdl_cache_enabled","0" );
$PIN = '1111';
$wsdl_url = "https://URL/NewIPGServices/Sale/SaleService.asmx?WSDL";
$site_call_back_url = "http://URL1/confirm.PHP";
$amount = $_POST['Amount'] ? $_POST['Amount'] : "1000" ;
$order_id = $_POST['OrderId'] ? $_POST['OrderId'] : "500";
$params = array (
"LoginAccount" => $PIN,"Amount" => $amount,"OrderId" => $order_id,"CallBackUrl" => $site_call_back_url
);
$client = new SoapClient ( $wsdl_url );
try {
$result = $client->SalePaymentRequest ( array (
"requestData" => $params
) );
if ($result->SalePaymentRequestResult->Token && $result->SalePaymentRequestResult->Status === 0) {
header ( "Location: https://URL/NewIPG/?Token=" . $result->SalePaymentRequestResult->Token ); /* Redirect browser */
exit ();
}
elseif ( $result->SalePaymentRequestResult->Status != '0') {
$err_msg = "(<strong> error : " . $result->SalePaymentRequestResult->Status . "</strong>) " .
$result->SalePaymentRequestResult->Message ;
}
} catch ( Exception $ex ) {
$err_msg = $ex->getMessage() ;
}
}
function callback() {
$PIN = '1111';
$wsdl_url = "https://URL/NewIPGServices/Confirm/ConfirmService.asmx?WSDL";
$Token = $_REQUEST ["Token"];
$status = $_REQUEST ["status"];
$OrderId = $_REQUEST ["OrderId"];
$TerminalNo = $_REQUEST ["TerminalNo"];
$Amount = $_REQUEST ["Amount"];
if ( $status == 0) {
$params = array (
"LoginAccount" => $PIN,"Token" => $Token
);
$client = new SoapClient ( $wsdl_url );
try {
$result = $client->ConfirmPayment ( array (
"requestData" => $params
) );
if ($result->ConfirmPaymentResult->Status != '0') {
$err_msg = "(<strong> error : " . $result->ConfirmPaymentResult->Status . "</strong>) " .
$result->ConfirmPaymentResult->Message ;
}
} catch ( Exception $ex ) {
$err_msg = $ex->getMessage() ;
}
}elseif($status) {
$err_msg = "status " . $status;
}else {
$err_msg = "no response " ; echo $err_msg;
}
}
编辑:我注意到付款完成后,chrome浏览到最后一个else
并显示“无响应”,但所有其他浏览器均成功返回。
重要编辑:这是因为从银行网址的“ https ”协议从银行网址转移到了我网站的“ http ”协议。看来,这是新的chrome更新中的错误,或者他们想强制网站使用SSL。 几分钟前我已经与银行核对过,并且有很多网站都存在此问题。 我不知道是否有解决方案,还是应该等待下一个chrome版本,还是必须使用SSL
编辑:我将网站更改为https协议,但是chrome仍然存在问题!
解决方法
我从多个站点收到 waiting for cache
消息,直到它们最终超时。
尽管很荒谬,但我的解决方案是使用 safari 直到 chrome 随机修复自身。