@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);
throw new PaymentApiException(ErrorCode.PAYMENT_ADD_PAYMENT_METHOD, account.getId(), e.getErrorMessage());
} catch (AccountApiException e) {
throw new PaymentApiException(e);
}
return pm.getId();
}
});