@Override public PaymentMethod apply(final PaymentMethodPlugin paymentMethodPlugin) { if (paymentMethodPlugin.getKbPaymentMethodId() == null) { // Garbage from the plugin? log.debug("Plugin {} returned a payment method without a kbPaymentMethodId for searchKey {}", pluginName, searchKey); return null; } final PaymentMethodModelDao paymentMethodModelDao = paymentDao.getPaymentMethodIncludedDeleted(paymentMethodPlugin.getKbPaymentMethodId(), internalTenantContext); if (paymentMethodModelDao == null) { log.warn("Unable to find payment method id " + paymentMethodPlugin.getKbPaymentMethodId() + " present in plugin " + pluginName); return null; } return new DefaultPaymentMethod(paymentMethodModelDao, paymentMethodPlugin); } }
@Override public PaymentMethod apply(final PaymentMethodModelDao paymentMethodModelDao) { PaymentMethodPlugin paymentMethodPlugin = null; try { paymentMethodPlugin = pluginApi.getPaymentMethodDetail(paymentMethodModelDao.getAccountId(), paymentMethodModelDao.getId(), tenantContext); } catch (final PaymentPluginApiException e) { log.warn("Unable to find payment method id " + paymentMethodModelDao.getId() + " in plugin " + pluginName); // We still want to return a payment method object, even though the plugin details are missing } return new DefaultPaymentMethod(paymentMethodModelDao, paymentMethodPlugin); } }
public Pagination<PaymentMethod> getPaymentMethods(final Long offset, final Long limit, final String pluginName, final TenantContext tenantContext, final InternalTenantContext internalTenantContext) throws PaymentApiException { final PaymentPluginApi pluginApi = getPaymentPluginApi(pluginName); return getEntityPagination(limit, new SourcePaginationBuilder<PaymentMethodModelDao, PaymentApiException>() { @Override public Pagination<PaymentMethodModelDao> build() { // Find all payment methods for all accounts return paymentDao.getPaymentMethods(pluginName, offset, limit, internalTenantContext); } }, new Function<PaymentMethodModelDao, PaymentMethod>() { @Override public PaymentMethod apply(final PaymentMethodModelDao paymentMethodModelDao) { PaymentMethodPlugin paymentMethodPlugin = null; try { paymentMethodPlugin = pluginApi.getPaymentMethodDetail(paymentMethodModelDao.getAccountId(), paymentMethodModelDao.getId(), tenantContext); } catch (final PaymentPluginApiException e) { log.warn("Unable to find payment method id " + paymentMethodModelDao.getId() + " in plugin " + pluginName); // We still want to return a payment method object, even though the plugin details are missing } return new DefaultPaymentMethod(paymentMethodModelDao, paymentMethodPlugin); } } ); }
return new DefaultPaymentMethod(paymentMethodModelDao, paymentMethodPlugin);
final PaymentMethod input = new DefaultPaymentMethod(paymentMethodId, account.getId(), pluginName); final PaymentMethodModelDao pmModel = new PaymentMethodModelDao(input.getId(), input.getCreatedDate(), input.getUpdatedDate(), input.getAccountId(), input.getPluginName(), input.isActive()); @Override public PaymentMethod apply(final PaymentMethodModelDao input) { return new DefaultPaymentMethod(input, null);
final PaymentMethod input = new DefaultPaymentMethod(paymentMethodId, account.getId(), pluginName); final PaymentMethodModelDao pmModel = new PaymentMethodModelDao(input.getId(), input.getCreatedDate(), input.getUpdatedDate(), input.getAccountId(), input.getPluginName(), input.isActive()); @Override public PaymentMethod apply(final PaymentMethodModelDao input) { return new DefaultPaymentMethod(input, null);
public UUID addPaymentMethod(final String paymentPluginServiceName, final Account account, final boolean setDefault, final PaymentMethodPlugin paymentMethodProps, final InternalCallContext context) throws PaymentApiException { final UUID tenantId = nonEntityDao.retrieveIdFromObject(context.getTenantRecordId(), ObjectType.TENANT); return new WithAccountLock<UUID>().processAccountWithLock(locker, account.getExternalKey(), new WithAccountLockCallback<UUID>() { @Override public UUID doOperation() throws PaymentApiException { PaymentMethod pm = null; PaymentPluginApi pluginApi = null; try { pluginApi = getPaymentPluginApi(paymentPluginServiceName); pm = new DefaultPaymentMethod(account.getId(), paymentPluginServiceName, paymentMethodProps); pluginApi.addPaymentMethod(account.getId(), pm.getId(), paymentMethodProps, setDefault, context.toCallContext(tenantId)); final PaymentMethodModelDao pmModel = new PaymentMethodModelDao(pm.getId(), pm.getCreatedDate(), pm.getUpdatedDate(), pm.getAccountId(), pm.getPluginName(), pm.isActive()); paymentDao.insertPaymentMethod(pmModel, context); if (setDefault) { accountInternalApi.updatePaymentMethod(account.getId(), pm.getId(), context); } } catch (PaymentPluginApiException e) { log.warn("Error adding payment method " + pm.getId() + " for plugin " + paymentPluginServiceName, e); // STEPH all errors should also take a pluginName throw new PaymentApiException(ErrorCode.PAYMENT_ADD_PAYMENT_METHOD, account.getId(), e.getErrorMessage()); } catch (AccountApiException e) { throw new PaymentApiException(e); } return pm.getId(); } }); }
private PaymentMethod buildDefaultPaymentMethod(final PaymentMethodModelDao paymentMethodModelDao, final boolean withPluginInfo, final InternalTenantContext context) throws PaymentApiException { final PaymentMethodPlugin paymentMethodPlugin; if (withPluginInfo) { try { final PaymentPluginApi pluginApi = getPaymentPluginApi(paymentMethodModelDao.getPluginName()); paymentMethodPlugin = pluginApi.getPaymentMethodDetail(paymentMethodModelDao.getAccountId(), paymentMethodModelDao.getId(), buildTenantContext(context)); } catch (PaymentPluginApiException e) { log.warn("Error retrieving payment method " + paymentMethodModelDao.getId() + " from plugin " + paymentMethodModelDao.getPluginName(), e); throw new PaymentApiException(ErrorCode.PAYMENT_GET_PAYMENT_METHODS, paymentMethodModelDao.getAccountId(), paymentMethodModelDao.getId()); } } else { paymentMethodPlugin = null; } return new DefaultPaymentMethod(paymentMethodModelDao, paymentMethodPlugin); }
@Override public UUID doOperation() throws PaymentApiException { PaymentMethod pm = null; PaymentPluginApi pluginApi = null; try { pluginApi = getPaymentPluginApi(paymentPluginServiceName); pm = new DefaultPaymentMethod(account.getId(), paymentPluginServiceName, paymentMethodProps); pluginApi.addPaymentMethod(account.getId(), pm.getId(), paymentMethodProps, setDefault, context.toCallContext(tenantId)); final PaymentMethodModelDao pmModel = new PaymentMethodModelDao(pm.getId(), pm.getCreatedDate(), pm.getUpdatedDate(), pm.getAccountId(), pm.getPluginName(), pm.isActive()); paymentDao.insertPaymentMethod(pmModel, context); if (setDefault) { accountInternalApi.updatePaymentMethod(account.getId(), pm.getId(), context); } } catch (PaymentPluginApiException e) { log.warn("Error adding payment method " + pm.getId() + " for plugin " + paymentPluginServiceName, e); // STEPH all errors should also take a pluginName throw new PaymentApiException(ErrorCode.PAYMENT_ADD_PAYMENT_METHOD, account.getId(), e.getErrorMessage()); } catch (AccountApiException e) { throw new PaymentApiException(e); } return pm.getId(); } });