@Override public OSGIServiceRegistration<PaymentPluginApi> get() { final DefaultPaymentProviderPluginRegistry pluginRegistry = new DefaultPaymentProviderPluginRegistry(paymentConfig); // Make the external payment provider plugin available by default final OSGIServiceDescriptor desc = new OSGIServiceDescriptor() { @Override public String getPluginSymbolicName() { return null; } @Override public String getRegistrationName() { return ExternalPaymentProviderPlugin.PLUGIN_NAME; } }; pluginRegistry.registerService(desc, externalPaymentProviderPlugin); return pluginRegistry; } }
@Inject public DefaultNoOpPaymentProviderPlugin(final Clock clock) { this.clock = clock; clear(); }
@Override public PaymentMethodPlugin getPaymentMethodDetail(final UUID kbAccountId, final UUID kbPaymentMethodId, final TenantContext context) throws PaymentPluginApiException { return new DefaultNoOpPaymentMethodPlugin(kbPaymentMethodId, "unknown", false, Collections.<PaymentMethodKVInfo>emptyList()); }
@Override public PaymentInfoPlugin processPayment(final UUID kbAccountId, final UUID kbPaymentId, final UUID kbPaymentMethodId, final BigDecimal amount, final Currency currency, final CallContext context) throws PaymentPluginApiException { return new DefaultNoOpPaymentInfoPlugin(kbPaymentId, amount, currency, clock.getUTCNow(), clock.getUTCNow(), PaymentPluginStatus.PROCESSED, null); }
@Override protected void configure() { bind(DefaultNoOpPaymentProviderPlugin.class) .annotatedWith(Names.named(instanceName)) .toProvider(new NoOpPaymentProviderPluginProvider(instanceName)) .asEagerSingleton(); } }
private void setPaymentFailure(final FailureType failureType) { if (failureType == FailureType.PAYMENT_FAILURE) { mockPaymentProviderPlugin.makeNextPaymentFailWithError(); } else if (failureType == FailureType.PLUGIN_EXCEPTION) { mockPaymentProviderPlugin.makeNextPaymentFailWithException(); } }
@Override public RefundInfoPlugin processRefund(final UUID kbAccountId, final UUID kbPaymentId, final BigDecimal refundAmount, final Currency currency, final CallContext context) throws PaymentPluginApiException { return new DefaultNoOpRefundInfoPlugin(kbPaymentId, BigDecimal.ZERO, currency, clock.getUTCNow(), clock.getUTCNow(), RefundPluginStatus.PROCESSED, null); }
@Override protected void configure() { bind(MockPaymentProviderPlugin.class) .annotatedWith(Names.named(instanceName)) .toProvider(new MockPaymentProviderPluginProvider(instanceName, clock)) .asEagerSingleton(); } }
@Override public void addPaymentMethod(final UUID kbAccountId, final UUID kbPaymentMethodId, final PaymentMethodPlugin paymentMethodProps, final boolean setDefault, final CallContext context) throws PaymentPluginApiException { // externalPaymentMethodId is set to a random value final PaymentMethodPlugin realWithID = new TestPaymentMethodPlugin(kbPaymentMethodId, paymentMethodProps, UUID.randomUUID().toString()); paymentMethods.put(kbPaymentMethodId.toString(), realWithID); final PaymentMethodInfoPlugin realInfoWithID = new DefaultPaymentMethodInfoPlugin(kbAccountId, kbPaymentMethodId, setDefault, UUID.randomUUID().toString()); paymentMethodsInfo.put(kbPaymentMethodId.toString(), realInfoWithID); }
@Override public DefaultNoOpPaymentProviderPlugin get() { final DefaultNoOpPaymentProviderPlugin plugin = new DefaultNoOpPaymentProviderPlugin(clock); final OSGIServiceDescriptor desc = new OSGIServiceDescriptor() { @Override public String getPluginSymbolicName() { return null; } @Override public String getRegistrationName() { return instanceName; } }; registry.registerService(desc, plugin); return plugin; } }
@Inject public MockPaymentProviderPlugin(final Clock clock) { this.clock = clock; clear(); }
@Override protected void installPaymentProviderPlugins(final PaymentConfig config) { install(new MockPaymentProviderPluginModule(MockPaymentProviderPlugin.PLUGIN_NAME, clock)); }
@Override @BeforeMethod(groups = "fast") public void beforeMethod() throws Exception { super.beforeMethod(); plugin = new ExternalPaymentProviderPlugin(clock); }
@Override public MockPaymentProviderPlugin get() { final MockPaymentProviderPlugin plugin = new MockPaymentProviderPlugin(clock); final OSGIServiceDescriptor desc = new OSGIServiceDescriptor() { @Override public String getPluginSymbolicName() { return null; } @Override public String getRegistrationName() { return instanceName; } }; registry.registerService(desc, plugin); return plugin; } }
@Override public void addPaymentMethod(final UUID kbAccountId, final UUID kbPaymentMethodId, final PaymentMethodPlugin paymentMethodProps, final boolean setDefault, final CallContext context) throws PaymentPluginApiException { final PaymentMethodPlugin realWithID = new DefaultNoOpPaymentMethodPlugin(kbPaymentMethodId, paymentMethodProps); List<PaymentMethodPlugin> pms = paymentMethods.get(kbPaymentMethodId.toString()); if (pms == null) { pms = new LinkedList<PaymentMethodPlugin>(); paymentMethods.put(kbPaymentMethodId.toString(), pms); } pms.add(realWithID); }
@Override public PaymentInfoPlugin getPaymentInfo(final UUID kbAccountId, final UUID kbPaymentId, final TenantContext context) throws PaymentPluginApiException { return new DefaultNoOpPaymentInfoPlugin(kbPaymentId, BigDecimal.ZERO, null, clock.getUTCNow(), clock.getUTCNow(), PaymentPluginStatus.PROCESSED, null); }
public ExternalPaymentProviderPlugin getExternalPaymentProviderPlugin(final Account account, final InternalCallContext context) throws PaymentApiException { // Check if this account has already used the external payment plugin // If not, it's the first time - add a payment method for it if (getExternalPaymentMethod(account, context) == null) { final DefaultNoOpPaymentMethodPlugin props = new DefaultNoOpPaymentMethodPlugin(UUID.randomUUID().toString(), false, ImmutableList.<PaymentMethodKVInfo>of()); addPaymentMethod(ExternalPaymentProviderPlugin.PLUGIN_NAME, account, false, props, context); } return (ExternalPaymentProviderPlugin) getPaymentPluginApi(ExternalPaymentProviderPlugin.PLUGIN_NAME); }
@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(kbPaymentId, amount, currency, clock.getUTCNow(), clock.getUTCNow(), status, null); payments.put(kbPaymentId.toString(), result); return result; }
@Test(groups = "fast") public void testEquals() throws Exception { final String externalId = UUID.randomUUID().toString(); final boolean isDefault = false; final List<PaymentMethodKVInfo> props = ImmutableList.<PaymentMethodKVInfo>of(new PaymentMethodKVInfo(UUID.randomUUID().toString(), UUID.randomUUID().toString(), false)); final DefaultNoOpPaymentMethodPlugin paymentMethod = new DefaultNoOpPaymentMethodPlugin(externalId, isDefault, props); Assert.assertEquals(paymentMethod, paymentMethod); final DefaultNoOpPaymentMethodPlugin samePaymentMethod = new DefaultNoOpPaymentMethodPlugin(externalId, isDefault, props); Assert.assertEquals(samePaymentMethod, paymentMethod); final DefaultNoOpPaymentMethodPlugin otherPaymentMethod = new DefaultNoOpPaymentMethodPlugin(externalId, isDefault, ImmutableList.<PaymentMethodKVInfo>of()); Assert.assertNotEquals(otherPaymentMethod, paymentMethod); }
@BeforeMethod(groups = "fast") public void beforeMethod() throws Exception { super.beforeMethod(); final PaymentMethodPlugin paymentMethodInfo = new DefaultNoOpPaymentMethodPlugin(UUID.randomUUID().toString(), true, null); testHelper.addTestPaymentMethod(account, paymentMethodInfo); }