2016-05-19 5 views
1

私はこの質問の提案のいくつかを既に見てきましたが、どれもこれまで助けてくれていません。私はcURLコールを作成するためのこのシンプルな小さなクラスを持っています。これは間違いなく他のホスト呼び出しで試してみました。ここではクラスがある:PayPal curl call 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; 
    } 
} 

これは単に私がホストを指定することができることを意味し、それが応答何でも投稿する値の配列とPostメソッドの戻りがあります。

はその後、私のPayPalコールのために私は次のことをやっている:私の知る限り、この必要があり、少なくとも戻り何かを見ることができるように

$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)); 

?たとえそれがエラーだったとしても、私は絶対に何も得ません。

私はうんざりしましたか?

  • EDIT - グラーム・アリさんのコメントの後

、彼は私がポスト配列にCURLOPTパラメータを渡すのではなく、実際のカールオプションれたことを指摘しています。 PayPalのコール

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); 
    } 

$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); 

しかし残念ながら、私はまだSSLエラーを取得していますが

CurlHelperのポスト方法:だから私は、これらの変更を行いました。何が完璧な理にかなっているが、何とかまだあなたは間違って自分のクラスの関数にパラメータを送信している:(

+1

echo 'カールエラー:'。 curl_error($ ch);カールを閉じる前にコードを貼り付けるとエラーが発生する – JYoThI

+0

私はあなたがそれを行うことができるのを忘れていました...私は "SSL接続エラー"を受け取りました。これはおそらく私が "dev server"公的にアクセス可能であるか、それとも何の違いもありませんか? – Zephni

答えて

1

を働いていないと言われてきた。

CURLOPT_HEADER      => false, 
CURLOPT_SSL_VERIFYPEER    => false, 
CURLOPT_SSL_VERIFYHOST    => false, 

これらはカールのオプションではないポスト変数です。あなたはこれらを送信しています。ポスト変数などのオプションの一つの方法は、あなたのカールの機能を更新することです

return self::Call(array(
    CURLOPT_URL    => $URL, 
    CURLOPT_HEADER   => false, 
    CURLOPT_SSL_VERIFYPEER => false, 
    CURLOPT_SSL_VERIFYHOST => false, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_POST   => count($Fields), 
    CURLOPT_POSTFIELDS  => http_build_query($Fields) 
), $DieExplainError); 

そして、このようなあなたのクラスの関数を呼び出します。

$Response = CurlHelper::Post("https://api-3t.sandbox.paypal.com/nvp", array(
    "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" 
)); 
+0

こんにちはGhulamアリ、あなたの答えは完璧な意味を持って、ちょうど私が間違っているかを見るために自分の編集で私の編集を見てみることができますか? – Zephni

+0

私はコードをテストし、次のようなものを返しました:TIMESTAMP = ...&CORRELATIONID = ...&ACK = ...これはあなたが期待している応答ですか? –

+0

ああ!解決策は、あなたのコメントと他のものとのミックスです。ライブサーバーに変更をアップロードして、今は動作します。だから何らかの理由でSSLをやっていると、アクセスできないサーバーから問題が発生しているように見えます。ご助力ありがとうございます – Zephni

関連する問題