@Override public void onEvent(Event event, Object source, Object data) { final Order order = (Order) source; Map<String, Object> payload = Maps.newHashMap(); payload.put("customer", order.getCustomer().getEmail()); payload.put("order", order.getSlug()); webhooks.notifyHook(new OrderPaid(), payload); } }
@POST @Path("{orderId}/payment") public Object internalPayment(@PathParam("orderId") UUID orderId, MultivaluedMap<String, String> data) { try { Order order = orderStore.get().findById(orderId); Map<PaymentData, Object> paymentData = Maps.newHashMap(); paymentData.put(BasePaymentData.CURRENCY, order.getCurrency()); paymentData.put(BasePaymentData.ORDER_ID, order.getId()); paymentData.put(BasePaymentData.CUSTOMER, order.getCustomer()); if (order.getBillingAddress() != null) { paymentData.put(BasePaymentData.BILLING_ADDRESS, order.getBillingAddress()); } paymentData.put(BasePaymentData.DELIVERY_ADDRESS, order.getDeliveryAddress()); paymentData.put(BasePaymentData.ORDER, order); if (data.containsKey("cardNumber")) { paymentData.put(CreditCardPaymentData.CARD_NUMBER, data.getFirst("cardNumber")); paymentData.put(CreditCardPaymentData.HOLDER_NAME, data.getFirst("holderName")); paymentData.put(CreditCardPaymentData.EXPIRATION_MONTH, data.getFirst("expiryMonth")); paymentData.put(CreditCardPaymentData.EXPIRATION_YEAR, data.getFirst("expiryYear")); paymentData.put(CreditCardPaymentData.VERIFICATION_CODE, data.getFirst("cvv")); } PaymentRequest paymentRequest = paymentProcessor.requestPayment(order, paymentData); CheckoutResponse response = new CheckoutResponse(order, paymentRequest); return generateCheckoutResponse(response); } catch (Exception e) { return renderError(e.getMessage()); } }
@GET @Path(PAYMENT_RETURN_PATH + "/{order}") public WebView returnFromPaymentService(@Context UriInfo uriInfo, @PathParam("order") String orderId) { Map<String, Object> bindings = new HashMap<>(); if (StringUtils.isNotBlank(orderId)) { Order order = orderStore.get().findById(UUID.fromString(orderId)); if (order != null) { Optional<Address> da = order.getDeliveryAddress() != null ? Optional.fromNullable(order.getDeliveryAddress()) : Optional.<Address>absent(); Optional<Address> ba = order.getBillingAddress() != null ? Optional.fromNullable(order.getBillingAddress()) : Optional.<Address>absent(); bindings.putAll( prepareContext(order, order.getCustomer(), ba, da, webContext.getTenant(), configurationService.getSettings(GeneralSettings.class).getLocales().getMainLocale() .getValue())); } } return new WebView().template("checkout/success.html").with(WebView.Option.FALLBACK_ON_DEFAULT_THEME) .data(bindings); }
Customer customer = order.getCustomer();
prepareContext( response.getOrder(), response.getOrder().getCustomer(), Optional.fromNullable(response.getOrder().getBillingAddress()), Optional.fromNullable(response.getOrder().getDeliveryAddress()),
public OrderRepresentation(DateTimeZone tenantZone, Order order) { this.slug = order.getSlug(); if (order.getCreationDate() != null) { this.creationDate = new DateTime(order.getCreationDate().getTime(), tenantZone); } if (order.getUpdateDate() != null) { this.updateDate = new DateTime(order.getUpdateDate().getTime(), tenantZone); } this.currency = order.getCurrency(); this.numberOfItems = order.getNumberOfItems(); this.itemsTotal = order.getItemsTotal(); this.shipping = order.getShipping(); this.grandTotal = order.getGrandTotal(); this.status = order.getStatus(); this.additionalInformation = order.getAdditionalInformation(); this.data = order.getOrderData(); if (order.getBillingAddress() != null) { this.setBillingAddress(new AddressRepresentation(order.getBillingAddress())); } if (order.getDeliveryAddress() != null) { this.setDeliveryAddress(new AddressRepresentation(order.getDeliveryAddress())); } if (order.getCustomer() != null) { this.setCustomer(new CustomerRepresentation(order.getCustomer())); } }
result.put("order", orderWebObject); if (order.getCustomer() != null) { CustomerWebObject customerWebObject = new CustomerWebObject(); customerWebObject.withCustomer(order.getCustomer()); if (order.getDeliveryAddress() != null) { customerWebObject.withDeliveryAddress(order.getDeliveryAddress());