Nasıl php kullanarak HTTPS mesajları göndermek için

5 Cevap php

Ben özel bir e-ticaret çözümü kuruyorum, ve ben kullanıyorum ödeme sistemi HTTPS DİREKLERİ göndermek beni gerektirir.

Nasıl bu kullanarak php yapmak (ve CURL?), Http gönderilirken herhangi bir farklı olabilir?

UPDATE:

Cevaplar için teşekkürler, çok yararlı oldum. Ben bu iş için bir SSL sertifikası satın almak, ve ben açıkçası nihai site için yapacak gerekir varsayıyorum, ama bana bir tane satın almadan bunu test etmek için herhangi bir yolu var mı?

Teşekkürler, Nico

5 Cevap

PHP / Curl https isteği sadece iyi idare edecek. Bir dev sunucusuna karşı oluyor, özellikle yapmanız gerekebilir, ne CURLOPT_SSL_VERIFYPEER kapatmak olur. Bir dev sunucu kendinden imzalı olmalı ve kontrol testi başarısız olabilir, çünkü bu.

$postfields = array('field1'=>'value1', 'field2'=>'value2');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://foo.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, 1);
// Edit: prior variable $postFields should be $postfields;
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$result = curl_exec($ch);

Eğer kıvırmak kullanıyorsanız, sizin parametreler için-d anahtarı iletebilirsiniz. Bu, bir HTTP yazı ile sonuçlanır. Gibi bir şey

curl http://foo.com -d bar=baz -d bat=boo

uygun parametrelerle http://foo.com için bir HTTP post neden olacaktır

Hayır, çok fark var. Curl kendisi gerekli her şeyi yapar.

Nasıl yapıldığını user comments on the curl_setopt başvuru sayfası örneklere bakın.

Benzer bir soru: POST to URL with PHP and Handle Response

Kabul çözümü kullanarak (Snoopy PHP Class), size aşağıdaki gibi bir şey yapabilirsiniz:

<?php

  $vars = array("fname"=>"Jonathan","lname"=>"Sampson");
  $snoopy = new Snoopy();

  $snoopy->curl_path = "/usr/bin/curl";  # Or whatever your path to curl is - 'which curl' in terminal will give it to you.  Needed because snoopy uses standalone curl to deal with https sites, not php_curl builtin.

  $snoopy->httpmethod = "POST";
  $snoopy->submit("https://www.somesite.com", $vars);
  print $snoopy->results;

?>

Ayrıca dere API kullanmak ve http/https context options olabilir

$postdata = http_build_query(
  array(
    'FieldX' => '1234',
    'FieldY' => 'yaddayadda'
  )
);

$opts = array(
  'http' => array(
    'method'  => 'POST',
    'header'  => 'Content-type: application/x-www-form-urlencoded',
    'content' => $postdata
  )
);
$context  = stream_context_create($opts);
$result = file_get_contents('http://...', false, $context);

Hala ssl şifreleme sağlayan bir uzantısı gerekir. Bu php_openssl olabilir ya php_curl (if bu şekilde derlenmiş) ya.