package Ġcom . github . luc as ls . kotlin sum mit demo 2 0 1 8 . backend reactive . repository Ċ Ċ import Ġmu . Kotlin Logging . logger Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġorg . springframework . web . reactive . function . client . Web Client Ċ import Ġorg . springframework . web . reactive . function . client . body To Mono Ċ import Ġreactor . core . publisher . Mono Ċ Ċ private Ġval Ġlog Ġ= Ġlogger Ġ{ Ġ} Ċ Ċ @ Component Ċ class ĠAnt if raud Repository ( ĊĠĠĠ Ġweb Client Builder : ĠWeb Client . Builder Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġweb Client Ġ= Ġweb Client Builder . build () ĊĊĠĠĠ Ġdata Ġclass ĠCard Info ( ĊĠĠĠĠĠĠĠ Ġval Ġbin : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġholder Name : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġc pf : ĠString ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠResult ( ĊĠĠĠĠĠĠĠ Ġval Ġstatus : ĠStatus ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġenum Ġclass ĠStatus Ġ{ ĊĠĠĠĠĠĠĠ ĠAP PRO VED , ĠRE PRO VED , ĠFAILED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvalidate ( payment Attempt Id : ĠString , Ġcard Info : ĠCard Info , Ġorder Items : ĠIterable < Any >): ĠMono < Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġmap Of < String , ĠAny ? >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" reference " Ġto Ġpayment Attempt Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" card Info " Ġto Ġcard Info , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" order Items " Ġto Ġorder Items ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġweb Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. post () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri (" http :// localhost : 3 0 0 0 / ant if raud / validate ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sync Body ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body To Mono < Result >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. onError Return ( Result ( Status . FAILED )) ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Error Ġcalling Ġant if raud ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMono . just ( Result ( Status . FAILED )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }