Search in sources :

Example 1 with Order

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

the class PaypalManagerImpl method cancelTransaction.

private synchronized void cancelTransaction(PaypalTransaction trx) {
    if (trx.getStatus() == PaypalTransactionStatus.SUCCESS || trx.getStatus() == PaypalTransactionStatus.CANCELED) {
        // already completed: if successed -> let it in this state
        return;
    }
    updateTransaction(trx, PaypalTransactionStatus.CANCELED);
    Order order = orderManager.loadOrderByNr(trx.getRefNo());
    orderManager.save(order, OrderStatus.CANCELED);
    // cancel the reservations
    Identity identity = order.getDelivery();
    for (OrderPart part : order.getParts()) {
        if (part.getKey().equals(trx.getOrderPartId())) {
            for (OrderLine line : part.getOrderLines()) {
                OLATResource resource = line.getOffer().getResource();
                ResourceReservation reservation = acService.getReservation(identity, resource);
                if (reservation != null) {
                    acService.removeReservation(identity, identity, reservation);
                    log.audit("Remove reservation after cancellation for: " + reservation + " to " + identity, null);
                }
            }
        }
    }
}
Also used : Order(org.olat.resource.accesscontrol.Order) OrderLine(org.olat.resource.accesscontrol.OrderLine) ResourceReservation(org.olat.resource.accesscontrol.ResourceReservation) OrderPart(org.olat.resource.accesscontrol.OrderPart) OLATResource(org.olat.resource.OLATResource) Identity(org.olat.core.id.Identity)

Example 2 with Order

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

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 3 with Order

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

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 4 with Order

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

the class ACFrontendManager method accessResource.

@Override
public AccessResult accessResource(Identity identity, OfferAccess link, Object argument) {
    if (link == null || link.getOffer() == null || link.getMethod() == null) {
        log.audit("Access refused (no offer) to: " + link + " for " + identity);
        return new AccessResult(false);
    }
    AccessMethodHandler handler = accessModule.getAccessMethodHandler(link.getMethod().getType());
    if (handler == null) {
        log.audit("Access refused (no handler method) to: " + link + " for " + identity);
        return new AccessResult(false);
    }
    if (handler.checkArgument(link, argument)) {
        if (allowAccesToResource(identity, link.getOffer())) {
            Order order = orderManager.saveOneClick(identity, link);
            AccessTransaction transaction = transactionManager.createTransaction(order, order.getParts().get(0), link.getMethod());
            transactionManager.save(transaction);
            dbInstance.commit();
            log.audit("Access granted to: " + link + " for " + identity);
            return new AccessResult(true);
        } else {
            log.audit("Access error to: " + link + " for " + identity);
        }
    } else {
        log.audit("Access refused to: " + link + " for " + identity);
    }
    return new AccessResult(false);
}
Also used : Order(org.olat.resource.accesscontrol.Order) AccessTransaction(org.olat.resource.accesscontrol.AccessTransaction) AccessResult(org.olat.resource.accesscontrol.AccessResult) AccessMethodHandler(org.olat.resource.accesscontrol.method.AccessMethodHandler)

Example 5 with Order

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

the class ACOrderDAO method findOrdersByResource.

public List<Order> findOrdersByResource(OLATResource resource, OrderStatus... status) {
    StringBuilder sb = new StringBuilder();
    sb.append("select distinct(o) from ").append(OrderImpl.class.getName()).append(" o").append(" inner join o.parts orderPart ").append(" inner join orderPart.lines orderLine ").append(" inner join orderLine.offer offer ").append(" where offer.resource.key=:resourceKey");
    if (status != null && status.length > 0) {
        sb.append(" and o.orderStatusStr in (:status)");
    }
    TypedQuery<Order> query = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Order.class).setParameter("resourceKey", resource.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);
    }
    return query.getResultList();
}
Also used : Order(org.olat.resource.accesscontrol.Order) OrderStatus(org.olat.resource.accesscontrol.OrderStatus) 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