3

Magentoのインストールをセットアップしています(bitnami magento image 1.7.0を使用)が、PayPalの支払いを機能させることができません。このビデオに示されているようにすべてを設定しましたが、注文を完了しようとした後、payment_payflow_advanced.logに次のように表示されます。

[結果]=>配列

[response_code] => -1
[response_reason_code] => 0
[response_reason_text] =>応答を読み取ることができないか、応答が空です

私はフォーラムを閲覧してこれを試しました:
1)DNSの問題-私は試しましたwget https://payflowlink.paypal.com/-それは機能します。
2)CurlでSSLが有効になっている

他に何を確認できますか?

更新:zend例外にURLを追加しました。これは、ログに記録されたメッセージをスローするため、にアクセスしようとしますhttps://payflowpro.paypal.com:443/transaction。このリンクをブラウザで開こうとすると、324net::ERR_EMPTY_RESPONSEが表示されます。

アップデート2:同じ問題であるPayFlowLinkメソッドも試しました。

アップデート3:何か奇妙なことに気づきました。

\magento\htdocs\app\code\core\Mage\Paypal\Model\Payflowlink.php

行があります:

const TRANSACTION_PAYFLOW_URL = 'https://payflowlink.paypal.com/';

これは、安全なID生成のためにデータを送信する場所をmagentoに指示する必要があると思います。つまり、この定数はmagentoコードのどこでも使用されておらず、このリンクは他の場所でも使用されていないため、payflowlinkではなくpayflowproへのリクエストがログに記録されると思います。このコードは、誰かによってテストされたのではないかと思います。

アップデート4

バージョン1.7.0.1では、アップデート3で説明したのと同じ問題のように見えます

MagentoでPayPalPaymentsAdvancedを設定することに成功した人はいないかと思います。成功した場合、どのバージョンのMagentoがありましたか?

Magentoの設定 Magentoの設定 ペイパル設定 ペイパル設定

ペイパルステータス

アップデート6:私は次のようなカールテストを行いました:

<?php

   $ch = curl_init("https://www.google.com/");
   $fp = fopen("example_homepage.txt", "w");

   curl_setopt($ch, CURLOPT_FILE, $fp);
   curl_setopt($ch, CURLOPT_HEADER, 0);

   curl_exec($ch);
   curl_close($ch);
   fclose($fp);
 ?>

そして、それは期待通りにファイルを書きました、httpsで問題がありませんでした。

アップデート7

Request log:

 [request] => Array
        (
            [user] => ****
            [vendor] => me****
            [partner] => PayPal
            [pwd] => ****
            [verbosity] => HIGH
            [tender] => C
            [cancelurl] => http://mydomain.com/index.php/paypal/payflow/cancelPayment
            [errorurl] => http://mydomain.com/index.php/paypal/payflow/returnUrl
            [silentpost] => TRUE
            [silentposturl] => http://mydomain.com/index.php/paypal/payflow/silentPost
            [returnurl] => http://mydomain.com/index.php/paypal/payflow/returnUrl
            [template] => minLayout
            [disablereceipt] => TRUE
            [cscrequired] => TRUE
            [cscedit] => TRUE
            [emailcustomer] => FALSE
            [urlmethod] => GET
            [createsecuretoken] => Y
            [securetokenid] => 7ebabf98872aee2ff84be75d1483e453
            [trxtype] => S
            [amt] => 150.00
            [currency] => USD
            [invnum] => 100000006
            [custref] => 100000006
            [ponum] => 39
            [firstname] => Gxxx
            [lastname] => Bxxx
            [street] => Vxxx
            [city] => Kxxx
            [state] => Lxxx
            [zip] => 4xxx
            [country] => LT
            [email] => gxxx@xxx.com
            [shiptofirstname] => Gxxx
            [shiptolastname] => Bxxx
            [shiptostreet] => Vxxx
            [shiptocity] => Kxxx
            [shiptostate] => Lxxx
            [shiptozip] => 4xxx
            [shiptocountry] => LT
            [user1] => 1
            [user2] => 48a9896a17493d6b97de838c4b40026d
        )

    [result] => Array
        (
            [response_code] => -1
            [response_reason_code] => 0
            [response_reason_text] => Unable to read response, or response is empty. Uri:https://payflowpro.paypal.com:443/transaction
        )

    [__pid] => 31628

提案がない限り、その仕事は、誰かが確実にする最も簡単な方法を提案することができるかもしれません、ペイパル支払いで高度なアカウントはすべて大丈夫ですか?

4

2 に答える 2

3

Magento は、変数/定数を設定し、決して使用しないことで知られています。

そうは言ってapp/code/core/Mage/Paypal/Model/Payflowpro.phpも、メソッドを調べて 、オブジェクトとオブジェクト_postRequest()の周りにデバッグを追加します。$client$result

また、以下ではcatch (Exception $e)、元のエラー メッセージのソースに気付くでしょう。これは、例外が 内で発生している場合だからですVarien_Http_Client

    try {
       /**
        * we are sending request to payflow pro without url encoding
        * so we set up _urlEncodeBody flag to false
        */
        $response = $client->setUrlEncodeBody(false)->request();
    }
    catch (Exception $e) {
        $result->setResponseCode(-1) 
            ->setResponseReasonCode($e->getCode())
            ->setResponseReasonText($e->getMessage());

        $debugData['result'] = $result->getData();
        $this->_debug($debugData);
        throw $e;
    }

上記のコードでは、問題は Curl 自体に起因する可能性が高いか、magento またはサーバー側の構成ミスに起因する可能性があります。Curl がインストールされ、Magento 以外の方法で適切に動作していることを確認します。たとえば、次のようになります。

$responsetry catch ブロックの前に、オブジェクトにログ ( mage::log) またはダンプ ( ) を追加して、リクエストがどのように形成され、送信されるかについての詳細を取得します。 zend_debug::dump$client

/lib/Varien/Http/Client.php内部およびAdapter/Curl.phpダンプまたはログによって、詳細情報を見つけることができるはずです。

上記のデバッグの結果を自由に投稿してください。

お役に立てれば!

于 2012-06-29T15:33:13.260 に答える
1

そこで、私が行ったことは、ここhttps://www.x.com/node/2749からPayflowサンプルを取得し、magentoディレクトリに配置したことです。
私はそれを実行し、安全なトークンを取得するときに失敗しなかったが、要求を実行するのにちょうど1分かかったことに気づきました。それは、タイムアウトするという考えをもたらしたので、私のPCでそれを試しました。 1秒未満で、生成されたセキュアID。問題は、curl.execがタイムアウトすることでしたが、質問はなぜですか?

私はパテを始めて、上のリンクの例から同じリクエストを試しました、そしてそれは私に与えました

curl:(35)payflowpro.paypal.com:443に関連する不明なSSLプロトコルエラー

今それは何かです!私は何年も前に同様の問題を抱えていましたが、それは非常に苦痛だったので、助けになった解決策をまだ覚えていました-それで私はSSLの別のバージョンを渡そうとしました、そしてバージョン3は合格しました!

私がしなければならなかったのは、SSLバージョンオプションをVarienHttpクライアントに追加してやるだけです-すべてが機能します。

于 2012-07-02T09:06:19.180 に答える