返信先: クレジット決済ゼウスを導入した所、最終画面でエラーがでます。

フォーラム バグ報告 クレジット決済ゼウスを導入した所、最終画面でエラーがでます。 返信先: クレジット決済ゼウスを導入した所、最終画面でエラーがでます。

#83324
digichro_sakai
参加者

SSL の異常ではなく、バグになります。

usc-e-shop/functions/admin_func.php の function usces_get_xml に以下のソースがありますが、PHP 5.6 でSSLの検証方法に変更があるためエラーになります。

	//$fp = fsockopen('tls://'.$interface['host'],443,$errno,$errstr,30);
	$fp = @stream_socket_client( 'tlsv1.2://'.$interface['host'].':443', $errno, $errstr, 30 );
	if( !$fp ){
		usces_log('zeus API : TLS(v1.2) Error', 'acting_transaction.log');
		$fp = fsockopen('ssl://'.$interface['host'],443,$errno,$errstr,30);
		if( !$fp ){
			usces_log('zeus API : SSL Error', 'acting_transaction.log');
		}
	}

参考:PHP 5.6.x における OpenSSL 関連の変更
http://php.net/manual/ja/migration56.openssl.php

取り急ぎ、以下のように修正することで改善されます。

	$caFile = 'client.pem"';
	$context = stream_context_create(array('ssl' => array(
		'verify_peer' => false,
		'verify_peer_name' => false,
		'allow_self_signed' => false,
		'cafile' => $caFile,
	)));
	$fp = stream_socket_client('ssl://'.$interface['host'] . ':443',$errno,$errstr,30,STREAM_CLIENT_CONNECT,$context);
	if( !$fp )
	{
		//$fp = fsockopen('tls://'.$interface['host'],443,$errno,$errstr,30);
		$fp = @stream_socket_client( 'tlsv1.2://'.$interface['host'].':443', $errno, $errstr, 30 );
		if( !$fp ){
			usces_log('zeus API : TLS(v1.2) Error', 'acting_transaction.log');
			$fp = fsockopen('ssl://'.$interface['host'],443,$errno,$errstr,30);
			if( !$fp ){
				usces_log('zeus API : SSL Error', 'acting_transaction.log');
			}
		}
	}

Welcart の最新のバージョン(1.9.2)でも改善されておりませんので、
今後の新バージョンでの改善をお願い致します。