Firstdata の API と統合する支払いフォームを構築しようとしています。XML 文字列をサーバーに投稿する必要があります。また、クライアント側の証明書と http 認証も必要です。現在、私の CURL セットアップは次のようになっています。
function firstdata_send($config_param, $data) {
$config_default = array(
'test' => FALSE,
);
// settings in $config_param will overwrite settings in $config_default
$config = (object)array_merge($config_default, $config_param);
if($config->test) {
$url = 'https://ws.merchanttest.firstdataglobalgateway.com/fdggwsapi/services/order.wsdl';
}
else {
$url = 'https://ws.firstdataglobalgateway.com/fdggwsapi/services/order.wsdl';
}
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "{$config->username}:{$config->password}");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSLCERT, $config->pemfile);
curl_setopt($ch, CURLOPT_SSLKEY, $config->keyfile);
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, $config->keypass);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
$result = curl_exec($ch);
$result .= curl_error($ch);
return $result;
}
彼らのサーバーはHTTP/1.1 401 Unauthorized
. しかし、投稿オプションをコメントアウトすると:
//curl_setopt($ch, CURLOPT_POST, TRUE);
//curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
私は得るHTTP/1.1 200 OK
。何が起こっているのかを完全に誤解していない限り、投稿を使用すると認証ヘッダーが何らかの形で干渉するようです。何が欠けているのかわからない。
解決済み:
テスト アカウントが生成した ssl 証明書が不良であることが判明しました。私は彼らの技術サポートに電話する必要があり、システムが証明書を受け入れる前に証明書を 3 回再生成する必要がありました。お時間を無駄にして申し訳ありません。私は最初にそれらを呼び出す必要がありました。興味のある方は、テクニカル サポートの電話番号 (888) 477-3611 に電話してください。私は NomikOS が正しいことに最も近いと思うので、彼を回答としてマークし、残りの人に賛成票を投じます。再度、感謝します。