Search in sources :

Example 11 with Order

use of org.olat.resource.accesscontrol.Order in project openolat by klemens.

the class PaypalManagerImpl method completeTransactionSucessfully.

private void completeTransactionSucessfully(PaypalTransaction trx, String trxStatus) {
    Order order = orderManager.loadOrderByNr(trx.getRefNo());
    if ("PENDING".equalsIgnoreCase(trxStatus)) {
        updateTransaction(trx, PaypalTransactionStatus.PENDING);
    } else {
        updateTransaction(trx, PaypalTransactionStatus.SUCCESS);
    }
    order = orderManager.save(order, OrderStatus.PAYED);
    PaypalAccessMethod method = getMethodSecure(trx.getMethodId());
    if (order.getKey().equals(trx.getOrderId())) {
        // make accessible
        Identity identity = order.getDelivery();
        for (OrderPart part : order.getParts()) {
            if (part.getKey().equals(trx.getOrderPartId())) {
                AccessTransaction transaction = transactionManager.createTransaction(order, part, method);
                transaction = transactionManager.save(transaction);
                for (OrderLine line : part.getOrderLines()) {
                    if (acService.allowAccesToResource(identity, line.getOffer())) {
                        log.audit("Paypal payed access granted for: " + buildLogMessage(line, method) + " to " + identity, null);
                        transaction = transactionManager.update(transaction, AccessTransactionStatus.SUCCESS);
                    } else {
                        log.error("Paypal payed access refused for: " + buildLogMessage(line, method) + " to " + identity, null);
                        transaction = transactionManager.update(transaction, AccessTransactionStatus.ERROR);
                    }
                }
            }
        }
    } else {
        log.error("Order not in sync with PaypalTransaction", null);
    }
}
Also used : Order(org.olat.resource.accesscontrol.Order) AccessTransaction(org.olat.resource.accesscontrol.AccessTransaction) OrderLine(org.olat.resource.accesscontrol.OrderLine) OrderPart(org.olat.resource.accesscontrol.OrderPart) Identity(org.olat.core.id.Identity) PaypalAccessMethod(org.olat.resource.accesscontrol.provider.paypal.model.PaypalAccessMethod)

Example 12 with Order

use of org.olat.resource.accesscontrol.Order in project openolat by klemens.

the class PaypalManagerImpl method request.

public PayResponse request(Identity delivery, OfferAccess offerAccess, String mapperUri, String sessionId) {
    StringBuilder url = new StringBuilder();
    url.append(Settings.createServerURI()).append(mapperUri);
    Offer offer = offerAccess.getOffer();
    Price amount = offer.getPrice();
    Order order = orderManager.saveOneClick(delivery, offerAccess, OrderStatus.PREPAYMENT);
    PaypalTransaction trx = createAndPersistTransaction(amount, order, order.getParts().get(0), offerAccess.getMethod());
    // !!!! make a trace of the process
    dbInstance.commit();
    ReceiverList list = new ReceiverList();
    Receiver rec1 = new Receiver();
    rec1.setAmount(amount.getAmount().doubleValue());
    rec1.setEmail(paypalModule.getPaypalFirstReceiverEmailAddress());
    rec1.setInvoiceId(order.getOrderNr());
    list.getReceiver().add(rec1);
    String returnURL = url.toString() + "/" + trx.getSecureSuccessUUID() + ".html;jsessionid=" + sessionId + "?status=success";
    String cancelURL = url.toString() + "/" + trx.getSecureCancelUUID() + ".html;jsessionid=" + sessionId + "?status=cancel";
    PayRequest payRequest = new PayRequest();
    payRequest.setCancelUrl(cancelURL);
    payRequest.setReturnUrl(returnURL);
    payRequest.setTrackingId(order.getOrderNr());
    payRequest.setCurrencyCode(amount.getCurrencyCode());
    payRequest.setClientDetails(getAppDetails());
    payRequest.setReceiverList(list);
    payRequest.setRequestEnvelope(getAppRequestEnvelope());
    payRequest.setActionType("PAY");
    payRequest.setIpnNotificationUrl(Settings.getServerContextPathURI() + "/paypal/ipn");
    PayResponse payResp = null;
    try {
        AdaptivePaymentsService ap = new AdaptivePaymentsService(getAccountProperties());
        payResp = ap.pay(payRequest);
        log.audit("Paypal send PayRequest: " + (payResp == null ? "no response" : payResp.getPayKey() + "/" + payResp.getPaymentExecStatus()));
        return payResp;
    } catch (SSLConfigurationException e) {
        log.error("Paypal error", e);
    } catch (InvalidCredentialException e) {
        log.error("Paypal error", e);
    } catch (UnsupportedEncodingException e) {
        log.error("Paypal error", e);
    } catch (HttpErrorException e) {
        log.error("Paypal error", e);
    } catch (InvalidResponseDataException e) {
        log.error("Paypal error", e);
    } catch (ClientActionRequiredException e) {
        log.error("Paypal error", e);
    } catch (MissingCredentialException e) {
        log.error("Paypal error", e);
    } catch (OAuthException e) {
        log.error("Paypal error", e);
    } catch (IOException | InterruptedException e) {
        log.error("Paypal error", e);
    } catch (Exception e) {
        log.error("Paypal error", e);
    } finally {
        if (payResp == null) {
            updateTransaction(trx, PaypalTransactionStatus.ERROR);
        } else {
            updateTransaction(payResp, trx);
        }
    }
    return null;
}
Also used : Order(org.olat.resource.accesscontrol.Order) ClientActionRequiredException(com.paypal.exception.ClientActionRequiredException) AdaptivePaymentsService(com.paypal.svcs.services.AdaptivePaymentsService) OAuthException(com.paypal.sdk.exceptions.OAuthException) Receiver(com.paypal.svcs.types.ap.Receiver) InvalidCredentialException(com.paypal.exception.InvalidCredentialException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) ReceiverList(com.paypal.svcs.types.ap.ReceiverList) IOException(java.io.IOException) OAuthException(com.paypal.sdk.exceptions.OAuthException) SSLConfigurationException(com.paypal.exception.SSLConfigurationException) InvalidResponseDataException(com.paypal.exception.InvalidResponseDataException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) InvalidCredentialException(com.paypal.exception.InvalidCredentialException) HttpErrorException(com.paypal.exception.HttpErrorException) MissingCredentialException(com.paypal.exception.MissingCredentialException) IOException(java.io.IOException) ClientActionRequiredException(com.paypal.exception.ClientActionRequiredException) PayRequest(com.paypal.svcs.types.ap.PayRequest) PaypalTransaction(org.olat.resource.accesscontrol.provider.paypal.model.PaypalTransaction) Offer(org.olat.resource.accesscontrol.Offer) Price(org.olat.resource.accesscontrol.Price) SSLConfigurationException(com.paypal.exception.SSLConfigurationException) MissingCredentialException(com.paypal.exception.MissingCredentialException) InvalidResponseDataException(com.paypal.exception.InvalidResponseDataException) PayResponse(com.paypal.svcs.types.ap.PayResponse) HttpErrorException(com.paypal.exception.HttpErrorException)

Example 13 with Order

use of org.olat.resource.accesscontrol.Order in project OpenOLAT by OpenOLAT.

the class PaypalManagerImpl method completeDeniedTransaction.

private void completeDeniedTransaction(PaypalTransaction trx) {
    updateTransaction(trx, PaypalTransactionStatus.DENIED);
    Order order = orderManager.loadOrderByNr(trx.getRefNo());
    order = orderManager.save(order, OrderStatus.ERROR);
    PaypalAccessMethod method = getMethodSecure(trx.getMethodId());
    if (order.getKey().equals(trx.getOrderId())) {
        // make accessible
        Identity identity = order.getDelivery();
        for (OrderPart part : order.getParts()) {
            if (part.getKey().equals(trx.getOrderPartId())) {
                AccessTransaction transaction = transactionManager.createTransaction(order, part, method);
                transaction = transactionManager.update(transaction, AccessTransactionStatus.ERROR);
                for (OrderLine line : part.getOrderLines()) {
                    acService.denyAccesToResource(identity, line.getOffer());
                    log.audit("Paypal payed access revoked for: " + buildLogMessage(line, method) + " to " + identity, null);
                    ResourceReservation reservation = reservationDao.loadReservation(identity, line.getOffer().getResource());
                    if (reservation != null) {
                        acService.removeReservation(identity, identity, reservation);
                        log.audit("Remove reservation after cancellation for: " + reservation + " to " + identity, null);
                    }
                }
            }
        }
    } else {
        log.error("Order not in sync with PaypalTransaction", null);
    }
}
Also used : Order(org.olat.resource.accesscontrol.Order) AccessTransaction(org.olat.resource.accesscontrol.AccessTransaction) OrderLine(org.olat.resource.accesscontrol.OrderLine) ResourceReservation(org.olat.resource.accesscontrol.ResourceReservation) OrderPart(org.olat.resource.accesscontrol.OrderPart) Identity(org.olat.core.id.Identity) PaypalAccessMethod(org.olat.resource.accesscontrol.provider.paypal.model.PaypalAccessMethod)

Example 14 with Order

use of org.olat.resource.accesscontrol.Order in project OpenOLAT by OpenOLAT.

the class PaypalManagerImpl method loadTransactions.

@Override
public List<PSPTransaction> loadTransactions(List<Order> orders) {
    if (orders == null || orders.isEmpty())
        return Collections.emptyList();
    StringBuilder sb = new StringBuilder();
    sb.append("select trx from ").append(PaypalTransaction.class.getName()).append(" as trx where ");
    sb.append("trx.orderId in (:orderIds)");
    List<Long> orderIds = new ArrayList<Long>(orders.size());
    for (Order order : orders) {
        orderIds.add(order.getKey());
    }
    List<PSPTransaction> transactions = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), PSPTransaction.class).setParameter("orderIds", orderIds).getResultList();
    return transactions;
}
Also used : Order(org.olat.resource.accesscontrol.Order) ArrayList(java.util.ArrayList) PSPTransaction(org.olat.resource.accesscontrol.model.PSPTransaction)

Example 15 with Order

use of org.olat.resource.accesscontrol.Order in project openolat by klemens.

the class ACOrderDAO method findOrdersByDelivery.

public List<Order> findOrdersByDelivery(Identity delivery, OrderStatus... status) {
    StringBuilder sb = new StringBuilder();
    sb.append("select order from ").append(OrderImpl.class.getName()).append(" order").append(" where order.delivery.key=:deliveryKey");
    if (status != null && status.length > 0) {
        sb.append(" and order.orderStatusStr in (:status)");
    }
    TypedQuery<Order> query = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Order.class).setParameter("deliveryKey", delivery.getKey());
    if (status != null && status.length > 0) {
        List<String> statusStr = new ArrayList<String>();
        for (OrderStatus s : status) {
            statusStr.add(s.name());
        }
        query.setParameter("status", statusStr);
    }
    List<Order> orders = query.getResultList();
    return orders;
}
Also used : Order(org.olat.resource.accesscontrol.Order) OrderStatus(org.olat.resource.accesscontrol.OrderStatus) OrderImpl(org.olat.resource.accesscontrol.model.OrderImpl) ArrayList(java.util.ArrayList)

Aggregations

Order (org.olat.resource.accesscontrol.Order)16 ArrayList (java.util.ArrayList)6 Identity (org.olat.core.id.Identity)6 AccessTransaction (org.olat.resource.accesscontrol.AccessTransaction)6 OrderLine (org.olat.resource.accesscontrol.OrderLine)6 OrderPart (org.olat.resource.accesscontrol.OrderPart)6 OrderStatus (org.olat.resource.accesscontrol.OrderStatus)4 ResourceReservation (org.olat.resource.accesscontrol.ResourceReservation)4 PaypalAccessMethod (org.olat.resource.accesscontrol.provider.paypal.model.PaypalAccessMethod)4 ClientActionRequiredException (com.paypal.exception.ClientActionRequiredException)2 HttpErrorException (com.paypal.exception.HttpErrorException)2 InvalidCredentialException (com.paypal.exception.InvalidCredentialException)2 InvalidResponseDataException (com.paypal.exception.InvalidResponseDataException)2 MissingCredentialException (com.paypal.exception.MissingCredentialException)2 SSLConfigurationException (com.paypal.exception.SSLConfigurationException)2 OAuthException (com.paypal.sdk.exceptions.OAuthException)2 AdaptivePaymentsService (com.paypal.svcs.services.AdaptivePaymentsService)2 PayRequest (com.paypal.svcs.types.ap.PayRequest)2 PayResponse (com.paypal.svcs.types.ap.PayResponse)2 Receiver (com.paypal.svcs.types.ap.Receiver)2