use of org.olat.resource.accesscontrol.provider.paypal.model.PaypalTransaction in project openolat by klemens.
the class PaypalManagerImpl method updateTransactionByNotification.
@Override
public void updateTransactionByNotification(Map<String, String> values, boolean verified) {
if (verified) {
// CREATED - The payment request was received; funds will be transferred
// COMPLETED - The payment was successful
// INCOMPLETE - Some transfers succeeded and some failed for a parallel payment or, for a delayed chained payment, secondary receivers have not been paid
// ERROR - The payment failed and all attempted transfers failed or all
// REVERSALERROR - One or more transfers failed when attempting to
// PROCESSING - The payment is in progress
// PENDING - The payment is awaiting processing
// String status = values.get("status");
// if("COMPLETED".equals(status))
String invoiceId = values.get("transaction[0].invoiceId");
PaypalTransaction trx = loadTransactionByInvoiceId(invoiceId);
if (trx != null) {
completeTransaction(trx, values);
} else {
log.error("Paypal IPN Transaction not found: " + values, null);
}
} else {
String invoiceId = values.get("transaction[0].invoiceId");
log.error("Paypal IPN Transaction not verified: " + invoiceId + " raw values: " + values, null);
}
}
use of org.olat.resource.accesscontrol.provider.paypal.model.PaypalTransaction 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;
}
use of org.olat.resource.accesscontrol.provider.paypal.model.PaypalTransaction in project openolat by klemens.
the class PaypalTransactionStatusRenderer method render.
@Override
public void render(Renderer renderer, StringOutput sb, Object cellValue, int row, FlexiTableComponent source, URLBuilder ubu, Translator translator) {
if (cellValue instanceof PaypalTransaction) {
PaypalTransaction trx = (PaypalTransaction) cellValue;
PaypalMergedState mState = PaypalMergedState.value(trx);
sb.append("<i class='o_icon o_icon-fw ").append(mState.cssClass()).append("'> </i>");
}
}
use of org.olat.resource.accesscontrol.provider.paypal.model.PaypalTransaction in project openolat by klemens.
the class PaypalTransactionsController method formInnerEvent.
@Override
protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
if (source == backLink) {
if (detailsController != null) {
flc.remove(detailsController.getInitialComponent());
removeAsListenerAndDispose(detailsController);
}
addSearchToHistory(ureq);
} else if (source == tableEl) {
if (event instanceof SelectionEvent) {
SelectionEvent se = (SelectionEvent) event;
PaypalTransaction row = dataModel.getObject(se.getIndex());
if (CMD_SELECT.equals(se.getCommand())) {
doSelectTransaction(ureq, row);
}
} else if (event instanceof FlexiTableSearchEvent) {
FlexiTableSearchEvent se = (FlexiTableSearchEvent) event;
doSearch(ureq, se.getSearch());
}
}
super.formInnerEvent(ureq, source, event);
}
use of org.olat.resource.accesscontrol.provider.paypal.model.PaypalTransaction in project openolat by klemens.
the class PaypalTransactionsController method activate.
@Override
public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
if (state instanceof StateMapped) {
StateMapped map = (StateMapped) state;
String transactionId = map.getDelegate().get("transactionId");
if (StringHelper.containsNonWhitespace(transactionId)) {
tableEl.quickSearch(ureq, transactionId);
}
}
if (entries == null || entries.isEmpty())
return;
Long trxId = entries.get(0).getOLATResourceable().getResourceableId();
PaypalTransaction trx = dataModel.getTransaction(trxId);
if (trx != null) {
doSelectTransaction(ureq, trx);
}
}
Aggregations