Recently I tried to integrate Acapture processor gateway with my application. My application running on Java version 1.7. I got timeout exception for Acapture payment request:
java.util.concurrent.TimeoutException: Futures timed out after [20000 milliseconds]
But I got response on Java 1.6 and 1.8. It's not working on Java 1.7.
Java Version 1.7
Request:
{ "action":"payment",
"header":{"businessId":"877777","additionalProperties":{}},
"body":{"transaction":{"trackingCode":"4381-65-0734","type":"SINGLE","brandId":"1010","amount":"52","currencyCode":"USD","countryCode":"US","additionalProperties":{}},
"card":{"holderName":"Sharon ","number":"4000000000000002","expiryMonth":"02","expiryYear":"2020","cvv":"123","additionalProperties":{}},
"additionalProperties":{}
},"additionalProperties":{}}
java.util.concurrent.TimeoutException: Futures timed out after [20000 milliseconds] at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:96) at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:58) at scala.concurrent.Await$$anonfun$ready$1.apply(package.scala:86) at scala.concurrent.Await$$anonfun$ready$1.apply(package.scala:86) at akka.dispatch.MonitorableThreadFactory$AkkaForkJoinWorkerThread$$anon$3.block(ThreadPoolBuilder.scala:173) at scala.concurrent.forkjoin.ForkJoinPool.managedBlock(ForkJoinPool.java:2803) at akka.dispatch.MonitorableThreadFactory$AkkaForkJoinWorkerThread.blockOn(ThreadPoolBuilder.scala:171) at scala.concurrent.Await$.ready(package.scala:86) at play.api.libs.concurrent.PlayPromise.await(Promise.scala:134) at play.libs.F$Promise.get(F.java:213) at play.libs.F$Promise.get(F.java:224) at com.kachyng.payment.gateway.acapture.service.AcapturePaymentService.processPaymentService(AcapturePaymentService.java:115) at com.kachyng.payment.gateway.acapture.service.AcapturePaymentService.makePaymentRequest(AcapturePaymentService.java:63) at com.kachyng.processor.ProcessorGateway.process(ProcessorGateway.java:222) at controllers.PaymentGateway.process(PaymentGateway.java:28) at Routes$$anonfun$routes$1$$anonfun$applyOrElse$9$$anonfun$apply$9.apply(routes_routing.scala:145) at Routes$$anonfun$routes$1$$anonfun$applyOrElse$9$$anonfun$apply$9.apply(routes_routing.scala:145) at play.core.Router$HandlerInvoker$$anon$6$$anon$2.invocation(Router.scala:193) at play.core.Router$Routes$$anon$1.invocation(Router.scala:373) at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:50) at play.GlobalSettings$1.call(GlobalSettings.java:63) at play.core.j.JavaAction$$anon$2.apply(JavaAction.scala:80) at play.core.j.JavaAction$$anon$2.apply(JavaAction.scala:79) at play.libs.F$Promise$PromiseActor.onReceive(F.java:425) at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:159) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:425) at akka.actor.ActorCell.invoke(ActorCell.scala:386) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230) at akka.dispatch.Mailbox.run(Mailbox.scala:212) at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:502) at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262) at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975) at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478) at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Java version 1.6:
Response :
{ "result":"0",
"description":"Ok",
"header":{"requestTimestamp":"2016-11-08T07:23:49Z","requestCode":"FES.201.ea00df08-2868-42c5-a792-16c9c24f1651"},
"body":{"transaction":{"action":"payment","id":"996e7ed3-8a52-4dc4-bc0e-7fc15adb4a70","trackingCode":"7622-31-9702","amount":"5.00","currencyCode":"USD","brandId":"1010","descriptor":"0235.2924.3298 Kachyng CC 3D"},"card":{"firstSixDigits":"400000","lastFourDigits":"0002","expiryMonth":"02","expiryYear":"2020","holderName":"Sharon Jda"}}
}
Kindly help me to resolve this.
Got answer from Acapture technical support team. According to PCI new regulation Acapture should only support TLS 1.2 only. And Java 7 doesn’t support it. It is a java limitation. Acapture would suggest to use Java 8.