Ich habe einige der Vorschläge für diese Frage schon gesehen, aber keiner von ihnen hat bisher geholfen. Ich habe diese einfache kleine Klasse für cURL Anrufe, die definitiv funktioniert, weil ich es mit anderen Host-Anrufen versucht habe. Hier ist die Klasse:PayPal Curl Anruf keine Antwort mit PHP
class CurlHelper
{
public static function Post($URL, $Fields = array(), $DieExplainError = false)
{
return self::Call(array(
CURLOPT_URL => $URL,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => count($Fields),
CURLOPT_POSTFIELDS => http_build_query($Fields)
), $DieExplainError);
}
public static function Call($Array, $DieExplainError = false)
{
$ch = curl_init();
curl_setopt_array($ch, $Array);
$Result = curl_exec($ch);
if($DieExplainError && curl_error($ch))
die(curl_error($ch));
curl_close($ch);
return $Result;
}
}
Dies bedeutet einfach, ich einen Host und ein Array von Werten angeben kann, schreiben und die Post-Methode zurückkehrt, was es Antwort ist ist.
Dann für mein PayPal-Anruf, den ich tue folgendes:
$Response = CurlHelper::Post("https://api-3t.sandbox.paypal.com/nvp", array(
CURLOPT_HEADER => false,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
"USER" => "user",
"PWD" => "pass",
"SIGNATURE" => "sig",
"METHOD" => "SetExpressCheckout",
"VERSION" => 86,
"PAYMENTREQUEST_0_PAYMENTACTION" => "SALE",
"PAYMENTREQUEST_0_AMT" => 19,
"PAYMENTREQUEST_0_CURRENCYCODE" => "GBP",
"cancelUrl" => "myurl",
"returnUrl" => "myurl"
), true);
die("test: ".print_r($Response));
Soweit ich dies sollte zumindest Rückkehr etwas sehen kann? Auch wenn es ein Fehler war, aber ich bekomme absolut nichts.
Habe ich getäuscht?
- EDIT -
Nach Ghulam Ali Kommentar hat er darauf hingewiesen, dass ich CURLOPT Parameter in die Post-Array, anstatt den tatsächlichen curl Optionen vorging. So habe ich diese Änderungen vorgenommen:
Die Post-Methode von CurlHelper:
public static function Post($URL, $Fields = array(), $DieExplainError = false)
{
return self::Call(array(
CURLOPT_URL => $URL,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_POST => count($Fields),
CURLOPT_POSTFIELDS => http_build_query($Fields)
), $DieExplainError);
}
Der PayPal Aufruf:
$Response = CurlHelper::Post("https://api-3t.sandbox.paypal.com/nvp", array(
"USER" => "",
"PWD" => "",
"SIGNATURE" => "",
"METHOD" => "SetExpressCheckout",
"PAYMENTREQUEST_0_PAYMENTACTION" => "SALE",
"PAYMENTREQUEST_0_AMT" => 19,
"PAYMENTREQUEST_0_CURRENCYCODE" => "GBP",
"cancelUrl" => "",
"returnUrl" => ""
), true);
Aber leider bin ich immer noch ein SSL-Fehler. Was gesagt wurde, macht durchaus Sinn, aber irgendwie immer noch nicht funktioniert :(
echo 'Curl Fehler:'. curl_error ($ ch); füge den code vor dem curl close ein und erkenne den fehler – JYoThI
Ooo, ich habe vergessen du könntest das tun ... ich bekomme "SSL connect error" .. könnte das möglicherweise sein, weil ich das von einem "dev server" mache der das nicht ist öffentlich zugänglich oder würde das keinen Unterschied machen? – Zephni