2012-06-26 25 views
3

我正在設置Magento安裝(使用bitnami magento圖像1.7.0),無法使PayPal支付工作。我已經成立了一切如圖this video,而是試圖完成訂單,在payment_payflow_advanced.log後,我看到以下內容:Magento PayPal支付高級版:未經測試的代碼在發佈中滑落?

[結果] =>陣列

[RESPONSE_CODE] => -1
[response_reason_code] => 0
[response_reason_text] =>無法讀取響應,或響應是空

我已經通過論壇瀏覽和試過這個:
1)DNS問題 - 我試過wget https://payflowlink.paypal.com/ - 它的工作原理。
2)捲曲已啓用SSL

我還能檢查什麼?

更新:我已經將URL添加到zend異常,拋出日誌中記錄的消息,所以它試圖訪問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/'; 

這一點我覺得應該告訴Magento的向何處發送數據的安全ID生成。事情是,這個常數沒有在magento代碼中的任何地方使用,這個鏈接也沒有在其他地方使用,這就是爲什麼我認爲它記錄請求到payflowpro,而不是payflowlink,我想知道這個代碼是否被任何人測試過。

更新4

在1.7.0.1版本貌似相同的問題更新3

,我想知道如果任何人有任何的成功在Magento設立PayPal付款高級如果提及是,哪個版本的Magento在那裏?

magento settings magento settings paypal settings paypal settings

paypal status

更新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] => [email protected] 
      [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 

只要沒有意見,這項工作,可能有人會建議,以確保最簡單的方法,即08104732高級帳戶是一切還好嗎?

+1

幾個問題: 這是生產模式嗎?或者你是否通過沙箱測試?您是否將Secure Token設置爲On?您是否在manager.paypal.com上配置了正確的URL/configs?如果可以,請根據您的最佳知識分享信息。上次成功設置Paypal Payments Advanced的時間大概是1.5+,1.6.2.0 –

+0

我已經更新了設置屏幕截圖,我試圖在沒有成功的情況下進行生產和測試。 – Giedrius

+0

我檢查過1.6.2.0源代碼,它也沒有在任何地方使用TRANSACTION_PAYFLOW_URL常量。 – Giedrius

回答

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或服務器端的錯誤配置。我想驗證卷曲已正確安裝和通過方法以外工作完全Magento的,例如:

在try catch塊的$response之前,我想補充一個日誌(mage::log)或轉儲(zend_debug::dump$client對象以獲取有關如何形成和發送請求的更多詳細信息。

您應該能夠在/lib/Varien/Http/Client.phpAdapter/Curl.php的傾銷或登錄中找到更多信息。

隨意發佈上面提到的任何調試結果。

希望這會有所幫助!

+0

我會嘗試,但正如我所說我使用bitnami magento圖像,所以我對php/curl配置非常有信心,到目前爲止,我對它的配置有很深的印象。 – Giedrius

+0

我更新了問題 - 使用https鏈接測試了curl,它工作正常。關於異常 - Zend http客戶端在異常情況下保存請求,我也將其添加到問題 – Giedrius

+0

雖然您的答案沒有提供確切的解決方案 - 您是對的 - 這是捲曲問題。 – Giedrius

1

所以我做了什麼,我從這裏拿到了Payflow樣本https://www.x.com/node/2749,放在magento目錄下。
我已經運行它,並注意到,雖然它沒有失敗時獲得安全的令牌,它只需要1分鐘執行請求,帶來了想法,它超時,所以我已經試過,在我的電腦和花了不到一秒鐘,並生成安全的ID。 所以問題是,那curl.exec超時,問題是爲什麼?

我已經開始膩子,並試圖在上面的鏈接從例如同一個請求,它給了我

捲曲:在連接(35)未知的SSL協議錯誤payflowpro.paypal.com:443

現在它是一些東西! 我在很多年前曾經有過類似的問題,但它太痛苦了,我仍然記得那個有幫助的解決方案 - 所以我試圖通過另一個版本的SSL,並且版本3通過了!

我只需要爲Varien Http Client添加SSL版本選項,並且一切正常。

+0

X.com不再活躍,你能解釋你做了什麼嗎?謝謝 – Brad

+0

對不起,很久以前,我偶爾碰到Magento。 – Giedrius