2015-04-29 2 views
1

Я администратор сервера, и я не знаю каких-либо знаний PHP.Есть ли способ вставить команду curly в php curl

Может кто-нибудь, пожалуйста, помогите мне, чтобы преобразовать этот следующий завиток команду в PHP локон

curl -H "Content-Type: application/json" -X POST -d '{"SystemsTraceAuditNumber":"455690","RetrievalReferenceNumber":"405060908072","AcquiringBin":"409999","AcquirerCountryCode":"101","PrimaryAccountNumber":"4895070000008881"}' 
-v --ciphers RC4-SHA:RC4-MD5 https://sandbox.visa.com/rsrv_vpp/v1/acnl -u 72cdcdd2-9ccd-4adc-8827-0324324523423414a:f42342317-b62340-42343e-8234-e2342342341357b0 
--cacert ./SMCAroot.crt --cert /home/sourcecode/sandbox_cert.pem -k 

Я попытался преобразования кода, но испортил все, я получаю HTTP 500 ответ, который с помощью PHP.

но когда я выполнения завивки команды на Linux оболочки, его работы тонкой

следующий код, который я конвертируется в PHP

<?php 
$data = array(
    'SystemsTraceAuditNumber' => '455690', 
    'RetrievalReferenceNumber' => '405060908072', 
    'AcquiringBin' => '409999', 
    'AcquirerCountryCode' => '101', 
    'PrimaryAccountNumber' => '4895070000008881', 
); 
//echo $data; 
$data_string = json_encode($data); 

$handle=curl_init('https://sandbox.visa.com/rsrv_vpp/v1/acnl'); 

curl_setopt($handle, CURLOPT_VERBOSE, true); 
curl_setopt($handle, CURLOPT_SSL_CIPHER_LIST, 'RC4-SHA:RC4-MD5'); 
curl_setopt($handle, CURLOPT_USERPWD, 'xxxxxxxxx:xxxxxxxxxxxxxxxxxxx'); 
curl_setopt($handle, CURLOPT_SSLCERT, 'sandbox_cert.pem'); 
curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 

curl_setopt($handle, CURLOPT_CUSTOMREQUEST, "POST"); 

curl_setopt($handle, CURLOPT_POSTFIELDS, $data_string); 
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($handle, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json') 
); 
$handle; 

$content = curl_exec($handle); 

if(!curl_errno($handle)) 
{ 
    $info = curl_getinfo($handle); 
    echo "<pre>"; 
    print_r($info); 
    echo "</pre>"; 

    //echo '<br/> Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url']; 
} 
else 
{ 
    'Curl error: ' . curl_error($handle); 
} 
$content; 

?> 
+0

опция 'curl_setopt ($ ручка, CURLOPT_SSLCERT, 'sandbox_cert.pem');' это должно иметь тот же путь, я считаю: '/ дома/Исходник-/sandbox_cert.pem', так что он читает:' curl_setopt ($ handle, CURLO PT_SSLCERT, '/home/sourcecode/sandbox_cert.pem'); – Twisty

ответ

0

Может быть проще установить их так:

$defaults = array(
     CURLOPT_VERBOSE => 1, 
     CURLOPT_SSL_CIPHER_LIST => 'RC4-SHA:RC4-MD5', 
     CURLOPT_USERPWD => 'xxxxxxxxx:xxxxxxxxxxxxxxxxxxx', 
     CURLOPT_SSLCERT => '/home/sourcecode/sandbox_cert.pem', 
     CURLOPT_URL => 'https://sandbox.visa.com/rsrv_vpp/v1/acnl', 
     CURLOPT_HTTPAUTH => CURLAUTH_BASIC, 
     CURLOPT_POST => 1, 
     CURLOPT_RETURNTRANSFER => 1, 
     CURLOPT_SSL_VERIFYPEER => 0, 
     CURLOPT_POSTFIELDS => json_encode($data), 
     CURLOPT_HTTPHEADER => array('Content-Type: application/json') 
); 

$handle = curl_init(); 
curl_setopt_array($handle, ($options + $defaults)); 
if(! $content = curl_exec($handle)){ 
    trigger_error(curl_error($handle)); 
} 
curl_close($ch); 
echo $content;