public DefaultCallContext( final UUID tenantId, final String userName, final CallOrigin callOrigin, final UserType userType, final UUID userToken, final Clock clock) { super(tenantId, userName, callOrigin, userType, userToken); this.createdDate = clock.getUTCNow(); this.updateDate = createdDate; }
@Override public PaymentInfoPlugin processPayment( final UUID kbAccountId, final UUID kbPaymentId, final UUID kbPaymentMethodId, final BigDecimal amount, final Currency currency, final CallContext context) throws PaymentPluginApiException { if (makeNextInvoiceFailWithException.getAndSet(false)) { throw new PaymentPluginApiException("", "test error"); } final PaymentPluginStatus status = (makeAllInvoicesFailWithError.get() || makeNextInvoiceFailWithError.getAndSet(false)) ? PaymentPluginStatus.ERROR : PaymentPluginStatus.PROCESSED; final PaymentInfoPlugin result = new DefaultNoOpPaymentInfoPlugin( amount, currency, clock.getUTCNow(), clock.getUTCNow(), status, null); payments.put(kbPaymentId.toString(), result); return result; }
@Override public RefundInfoPlugin processRefund( final UUID kbAccountId, final UUID kbPaymentId, final BigDecimal refundAmount, final Currency currency, final CallContext context) throws PaymentPluginApiException { final PaymentInfoPlugin paymentInfoPlugin = getPaymentInfo(kbAccountId, kbPaymentId, context); if (paymentInfoPlugin == null) { throw new PaymentPluginApiException( "", String.format( "No payment found for payment id %s (plugin %s)", kbPaymentId.toString(), PLUGIN_NAME)); } BigDecimal maxAmountRefundable = paymentInfoPlugin.getAmount(); for (final RefundInfoPlugin refund : refunds.get(kbPaymentId.toString())) { maxAmountRefundable = maxAmountRefundable.add(refund.getAmount().negate()); } if (maxAmountRefundable.compareTo(refundAmount) < 0) { throw new PaymentPluginApiException( "", String.format( "Refund amount of %s for payment id %s is bigger than the payment amount %s (plugin %s)", refundAmount, kbPaymentId.toString(), paymentInfoPlugin.getAmount(), PLUGIN_NAME)); } final DefaultNoOpRefundInfoPlugin refundInfoPlugin = new DefaultNoOpRefundInfoPlugin( refundAmount, currency, clock.getUTCNow(), clock.getUTCNow(), RefundPluginStatus.PROCESSED, null); refunds.put(kbPaymentId.toString(), refundInfoPlugin); return refundInfoPlugin; }