private boolean startVoucher(TransactionBean tab) throws Exception { LOG.debug("# SendMoneyPage.startVoucher()"); StartVoucher request = getNewMobiliserRequest(StartVoucher.class); StartVoucherResponse response = null; request.setAmount(tab.getAmount()); request.setAutoCapture(tab.isAutoCapture()); request.setOrderChannel(tab.getOrderChannel()); request.setOrderID(tab.getOrderId()); request.setPayee(tab.getPayee()); request.setPayer(tab.getPayer()); request.setText(tab.getText()); request.setUsecase(tab.getUsecase()); response = wsStartVoucherClient.startvoucher(request); transaction = response.getTransaction(); if (!evaluateMobiliserResponse(response)) { LOG.warn("# Error during start voucher preauthorization"); return false; } LOG.info( "# start voucher preauthorise transaction[{}] money successfully finished", tab.getModule()); // Calculate fees and amounts long payeeFee = 0; long payerFee = 0; for (MoneyFeeType mft : response.getMoneyFee()) { if (mft.isPayee()) { payeeFee += mft.getValue(); payeeFee += mft.getVat(); } else { // isPayer payerFee += mft.getValue(); payerFee += mft.getVat(); } } tab.setFeeAmount(payerFee + payeeFee); tab.setDebitAmount(tab.getAmount().getValue() + payerFee); tab.setCreditAmount(tab.getAmount().getValue() - payeeFee); tab.setAuthenticationMethodPayee( Integer.valueOf(response.getAuthenticationMethods().getAuthMethodPayee().getId())); tab.setAuthenticationMethodPayer( Integer.valueOf(response.getAuthenticationMethods().getAuthMethodPayer().getId())); tab.setPreAuthFinished(true); tab.setRefTransaction(response.getTransaction()); return true; }
private void sendMoneyNext() { LOG.debug("#SendMoneyPage.sendMoneyNext()"); if (getTxnText().length() > Integer.valueOf(Constants.MAX_LENGTH_SEND_MONEY_TXN_TEXT)) { error(getLocalizer().getString("sendMoney.text.length.error", this)); return; } PhoneNumber pn = new PhoneNumber(getRecipient(), getConfiguration().getCountryCode()); com.sybase365.mobiliser.util.tools.wicketutils.security.Customer loggedInCustomer = getMobiliserWebSession().getLoggedInCustomer(); convertAmount(); TransactionBean tab = new TransactionBean(); VatAmount vatAmnt = new VatAmount(); SVA sva = null; try { WalletEntry wallet = getSvaPI(getMobiliserWebSession().getLoggedInCustomer().getCustomerId()); if (PortalUtils.exists(wallet)) sva = wallet.getSva(); if (PortalUtils.exists(sva)) { vatAmnt.setCurrency( PortalUtils.exists(sva.getCurrency()) ? sva.getCurrency() : getConfiguration().getCurrency()); } else { vatAmnt.setCurrency(getConfiguration().getCurrency()); } } catch (Exception e1) { LOG.error("# Error while getting SVA's payment instrument", e1); } vatAmnt.setValue(amount); tab.setAmount(vatAmnt); tab.setAutoCapture(true); tab.setUsecase(Integer.valueOf(Constants.USE_CASE_SEND_MONEY)); tab.setText(txnText); TransactionParticipant payer = new TransactionParticipant(); Identifier payerId = new Identifier(); payerId.setType(Constants.IDENT_TYPE_CUST_ID); payerId.setValue(String.valueOf(loggedInCustomer.getCustomerId())); payer.setIdentifier(payerId); tab.setPayer(payer); TransactionParticipant payee = new TransactionParticipant(); Identifier payeeId = new Identifier(); payeeId.setType(Constants.IDENT_TYPE_MSISDN); payeeId.setValue(pn.getInternationalFormat()); payee.setIdentifier(payeeId); tab.setPayee(payee); tab.setModule(Constants.MODULE_SEND_MONEY); Customer payeeCustomer = getCustomerByIdentification(Constants.IDENT_TYPE_MSISDN, pn.getInternationalFormat()); try { if (PortalUtils.exists(payeeCustomer)) { if (handleTransaction(tab)) setResponsePage(new SendMoneyFriendConfirmPage(tab, false)); } else { if (startVoucher(tab)) setResponsePage(new SendMoneyFriendConfirmPage(tab, true)); } } catch (Exception e) { LOG.error("# An error occurred during Preauthorization", e); error(getLocalizer().getString("preauthorization.error", this)); return; } }