com.paypal.core.rest.PayPalRESTException:读取超时

Ris*_*edi 5 scala paypal payment-gateway paypal-sandbox

我在我的项目中使用paypal付款.它适用于签证卡万事达卡,付款成功完成.

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 
}
Run Code Online (Sandbox Code Playgroud)

但是使用美国运通发现卡,它给了我以下例外:

EXCEPTION IN DO FINAL PAYMENT METHOD  
com.paypal.core.rest.PayPalRESTException:Read timed out
Read timed out
Run Code Online (Sandbox Code Playgroud)

我正在使用这些库依赖......

"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"
Run Code Online (Sandbox Code Playgroud)

Pay*_*ert 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'
    )
);
Run Code Online (Sandbox Code Playgroud)

http.ConnectionTimeOut 字段是您要查看的位置。将其设置为 60 或更高。