2016-09-10 13 views
0

私はfopenを使用してポストリクエストをしようとしていますが、リクエスト用のヘッダーを変更できず、完了できません。私は私が間違って何をやっている残りのコンソールChrome拡張機能を使用して、この設定をテストし、 うまく働いfopenを使用してポストリクエストを行うことができません

$data_array = array(
    'MerchantOrderId'=>'2014111703', 
    'Customer'=>array( 
     'Name'=>'Comprador Teste'  
    ), 
    'Payment'=>array( 
    'Type'=>'CreditCard', 
    'Amount'=> '100', 
    'Provider'=>'Simulado', 
    'Installments'=>1, 
    'CreditCard'=>array( 
     'CardNumber'=>'4461561220666711', 
     'Holder'=>'Pablo Pablo', 
     'ExpirationDate'=>'01/2019', 
     'SecurityCode'=>'101', 
     'Brand'=>'Master' 
    ) 
    ) 
); 

$data = json_encode($data_array); 

$header = 'Content-Type : application/json\r\n'. 
      'Content-Length :'. strlen($data).'\r\n'. 
      'MerchantId : 3a361c55-2feb-4c8d-a0e9-1cf24fb31242\r\n'. 
      'MerchantKey : VXXIKMBOZHBZACKKJHHTYLECTACKIYQXAXYHOJNI\r\n'. 
      'RequestId : 4e361c55-2feb-4c8d-a0e9-1cf24fb31244'; 

$context_opt = array(
    'https' => array (
     'method' => "POST", 
    'header' => $header, 
    'content' => $data 
    ) 
); 

$url = 'https://apisandbox.braspag.com.br/v2/sales'; 

$fp = fopen(
    $url, 
    'r', 
    false, 
    stream_context_create($context_opt) 
); 

if (!$fp) 
{ 
    throw new Exception('Problem with $url, $php_errormsg'); 
} 

$result = stream_get_contents($fp); 

fclose($fp); 

print_r($result); 

:私は助けを必要と私のコードを参照してください?

+0

'header'引数は、私が思うに、配列ではなく、私はあなたが彼らは本物であれば、あなたの質問からMerchantIDとMerchantKeyを削除し、いくつかのランダムな値を入れて助言するコンテキスト – RamRaider

+0

のための文字列でなければなりません。また、クレジットカードの詳細(私は本当のことを望む!) – rmcsharry

答えて

0

コンテキストオプションの配列では、ではなくhttpsのキーを使用する必要があります。 httpsは独自のラッパーではなく、httpラッパー+ sslラッパーを組み合わせたものです。

$context_opt = array(
    'http' => array (
     'method' => "POST", 
     'header' => $header, 
     'content' => $data 
    ) 
); 

さらに、ヘッダー定義を修正する必要があります。まず、二重引用符で囲まれた文字列を使用して、\r\nエスケープが新しい行を作成する必要があります。一重引用符を使用すると、リテラル'\r\n'がヘッダを区切ります。次に、ヘッダー名とコロンの間のスペースを削除する必要がありますが、ヘッダー名にスペースは使用できません。

$header = "Content-Type: application/json\r\n". 
      "Content-Length: ". strlen($data)."\r\n". 
      "MerchantId: 3a361c55-2feb-4c8d-a0e9-1cf24fb31242\r\n". 
      "MerchantKey: VXXIKMBOZHBZACKKJHHTYLECTACKIYQXAXYHOJNI\r\n". 
      "RequestId: 4e361c55-2feb-4c8d-a0e9-1cf24fb31244"; 
関連する問題