2014-04-22 167 views
5

我在我的項目中使用paypal進行支付。它適用於簽證卡萬事達卡和付款已成功完成。com.paypal.core.rest.PayPalRESTException:讀取超時

private def doFinalPayment(payment: Payment, payer: Payer, accessToken: String): Payment = {  
val apiContext = new APIContext(accessToken) 
var objPay=payment 
apiContext.setConfigurationMap(sdkConfig) 
try { 
     objPay = objPay.create(apiContext)//Exception Occur here 
     // some code here........... 

     } catch { 
    case e: PayPalRESTException => { 
     println("EXCEPTION IN DO FINAL PAYMENT METHOD") 
     val msg = e.getMessage 
     println(e) 
     println(msg) 
    } 
    }  
objPay 
} 

但隨着美國運通 & 發現卡它使我有以下異常:

EXCEPTION IN DO FINAL PAYMENT METHOD 
com.paypal.core.rest.PayPalRESTException:Read timed out 
Read timed out 

我使用這些庫的依賴......

"com.paypal.sdk" % "paypal-core" % "1.5.2", 
    "com.paypal.sdk" % "rest-api-sdk" % "0.7.1", 
    "com.paypal.sdk" % "invoicesdk" % "2.4.106", 
    "com.paypal.sdk" % "adaptivepaymentssdk" % "2.5.106", 
    "com.paypal.sdk" % "adaptiveaccountssdk" % "2.4.106", 
    "com.paypal.sdk" % "permissionssdk" % "2.3.106", 
    "com.stripe" % "stripe-java" % "1.7.1", 
    "com.sparkjava" % "spark-core" % "1.1.1", 
    "com.paypal.sdk" % "merchantsdk" % "2.1.96" 
+0

你能提供更多細節嗎? (完整的錯誤消息?有關例外情況的更多詳細信息?) 是否在[Paypal API文檔] [1]中列出了錯誤? 爲什麼選擇圖書館?從你使用的標籤(和代碼片段),我假設你使用Scala和Play框架。 [1]:https://developer.paypal.com/docs/classic/api/errorcodes/%20%22Paypal%20API%20error%20codes – Peanut

+0

該網址已混合。這應該工作:https://developer.paypal.com/docs/classic/api/errorcodes/ – Peanut

+0

直到現在我沒有得到任何人的任何新的答案或想法 –

回答

2

美國運通和Discover有時會有更長的處理時間。如果您使用REST SDK作爲您的基礎,http.connectiontimeout變量設置爲30秒。你應該增加到至少60(如果你仍然超時,可能會更高)。

在Scala中,您可以設置http.setRequestTimeoutInMs(6000)將超時時間增加到60秒。

SDK示例包括一個設置APIContext的bootstrap.php文件。

// Use an ApiContext object to authenticate 
// API calls. The clientId and clientSecret for the 
// OAuthTokenCredential class can be retrieved from 
// developer.paypal.com 

$apiContext = new ApiContext(
    new OAuthTokenCredential(
     '...', 
     '...' 
    ) 
); 



// #### SDK configuration 

// Comment this line out and uncomment the PP_CONFIG_PATH 
// 'define' block if you want to use static file 
// based configuration 

$apiContext->setConfig(
    array(
     'mode' => 'sandbox', 
     'http.ConnectionTimeOut' => 30, 
     'log.LogEnabled' => true, 
     'log.FileName' => '../PayPal.log', 
     'log.LogLevel' => 'FINE' 
    ) 
); 

http.ConnectionTimeOut字段是你想要看的地方。將其設置爲60或更高。

+0

@PayPal_MSI_Robert我更新了我的問題 –

+0

@PayPal_MSI_Robert我使用「com.paypal.sdk」%「rest-api-sdk」%「0.7.1」,其中必須改變http.connectiontimeout,我沒有得到哪個文件夾和文件,我會得到這個變量。 –

+0

編輯答案包括例子。 @RishiDwivedi –