@Override public BookingInfo payWithStripe(@Named("token") String token, BookingInfo bookingInfo) { ObjectifyService.begin(); logger.info("payWithStripe" + bookingInfo.getPaidPrice()); Profil profil = bookingServiceManager.getProfil(); logger.info("payWithStripe" + bookingInfo.getPaidPrice()); Route route = ofy().load().type(Route.class).id(bookingInfo.getRouteId()).now(); ContractorInfo contractorInfo = bookingServiceManager.getContractor(bookingInfo); Agent agent = ofy().load().type(Agent.class).id(contractorInfo.getAgentId()).now(); Long orderCount = agent.getOrderCount(); String orderRef = orderCount + "_" + bookingInfo.getName(); String refusal = stripePayment.charge(token, bookingInfo, profil.getStripeSecret(), orderRef); if (refusal == null) { bookingInfo = bookingServiceManager.setPayed(profil, bookingInfo, OrderStatus.PAID, orderRef); if (bookingInfo != null) { AgentInfo agentInfo = bookingServiceManager.getAgent(contractorInfo); Mailer.sendConfirmation(bookingInfo, profil, agentInfo, contractorInfo); financeManager.addPayment(bookingInfo, new Date()); ofy().save().entity(agent).now(); } } else { bookingInfo.setStripeRefusalReason(refusal); } return bookingInfo; }