Details
diff --git a/api/src/main/java/com/ning/billing/payment/api/InvoicePayment.java b/api/src/main/java/com/ning/billing/payment/api/InvoicePayment.java
new file mode 100644
index 0000000..aaed6ff
--- /dev/null
+++ b/api/src/main/java/com/ning/billing/payment/api/InvoicePayment.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.payment.api;
+
+import java.math.BigDecimal;
+import java.util.UUID;
+
+import org.joda.time.DateTime;
+
+import com.ning.billing.catalog.api.Currency;
+
+public class InvoicePayment {
+ private final UUID invoiceId;
+ private final UUID paymentAttemptId;
+ private final DateTime paymentAttemptDate;
+ private final BigDecimal amount;
+ private final Currency currency;
+
+ public InvoicePayment(UUID invoiceId, BigDecimal amount, Currency currency, UUID paymentAttemptId, DateTime paymentAttemptDate) {
+ this.invoiceId = invoiceId;
+ this.paymentAttemptId = paymentAttemptId;
+ this.paymentAttemptDate = paymentAttemptDate;
+ this.amount = amount;
+ this.currency = currency;
+ }
+
+ public UUID getInvoiceId() {
+ return invoiceId;
+ }
+
+ public UUID getPaymentAttemptId() {
+ return paymentAttemptId;
+ }
+
+ public DateTime getPaymentAttemptDate() {
+ return paymentAttemptDate;
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public Currency getCurrency() {
+ return currency;
+ }
+
+ @Override
+ public String toString() {
+ return "InvoicePayment [invoiceId=" + invoiceId + ", paymentAttemptId=" + paymentAttemptId + ", paymentAttemptDate=" + paymentAttemptDate + ", amount=" + amount + ", currency=" + currency + "]";
+ }
+
+}
diff --git a/api/src/main/java/com/ning/billing/payment/api/PaymentAttempt.java b/api/src/main/java/com/ning/billing/payment/api/PaymentAttempt.java
new file mode 100644
index 0000000..c4b6bfd
--- /dev/null
+++ b/api/src/main/java/com/ning/billing/payment/api/PaymentAttempt.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.payment.api;
+
+import java.util.UUID;
+
+import org.joda.time.DateTime;
+import org.joda.time.DateTimeZone;
+
+import com.ning.billing.invoice.api.Invoice;
+
+public class PaymentAttempt {
+ private final UUID paymentAttemptId;
+ private final DateTime paymentAttemptDate;
+ private final Invoice invoice;
+
+ public PaymentAttempt(UUID paymentAttemptId, Invoice invoice) {
+ this.paymentAttemptId = paymentAttemptId;
+ this.paymentAttemptDate = new DateTime(DateTimeZone.UTC);
+ this.invoice = invoice;
+ }
+
+ public UUID getPaymentAttemptId() {
+ return paymentAttemptId;
+ }
+
+ public DateTime getPaymentAttemptDate() {
+ return paymentAttemptDate;
+ }
+
+ public Invoice getInvoice() {
+ return invoice;
+ }
+
+ @Override
+ public String toString() {
+ return "PaymentAttempt [paymentAttemptId=" + paymentAttemptId + ", paymentAttemptDate=" + paymentAttemptDate + ", invoice=" + invoice + "]";
+ }
+
+}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/api/MockInvoicePaymentApi.java b/invoice/src/test/java/com/ning/billing/invoice/api/MockInvoicePaymentApi.java
index 3a60656..4155745 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/api/MockInvoicePaymentApi.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/api/MockInvoicePaymentApi.java
@@ -25,6 +25,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
import org.joda.time.DateTime;
import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.payment.api.InvoicePayment;
public class MockInvoicePaymentApi implements InvoicePaymentApi
{
@@ -79,41 +80,4 @@ public class MockInvoicePaymentApi implements InvoicePaymentApi
}
invoicePayments.add(invoicePayment);
}
-
- private static class InvoicePayment {
- private final UUID invoiceId;
- private final UUID paymentAttemptId;
- private final DateTime paymentAttemptDate;
- private final BigDecimal amount;
- private final Currency currency;
-
- public InvoicePayment(UUID invoiceId, BigDecimal amount, Currency currency, UUID paymentAttemptId, DateTime paymentAttemptDate) {
- this.invoiceId = invoiceId;
- this.paymentAttemptId = paymentAttemptId;
- this.paymentAttemptDate = paymentAttemptDate;
- this.amount = amount;
- this.currency = currency;
- }
-
- public UUID getInvoiceId() {
- return invoiceId;
- }
-
- public UUID getPaymentAttemptId() {
- return paymentAttemptId;
- }
-
- public DateTime getPaymentAttemptDate() {
- return paymentAttemptDate;
- }
-
- public BigDecimal getAmount() {
- return amount;
- }
-
- public Currency getCurrency() {
- return currency;
- }
-
- }
}
diff --git a/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java b/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
index db5abcf..7fd23ad 100644
--- a/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
@@ -27,6 +27,7 @@ import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceCreationNotification;
import com.ning.billing.invoice.api.InvoicePaymentApi;
import com.ning.billing.payment.api.Either;
+import com.ning.billing.payment.api.PaymentAttempt;
import com.ning.billing.payment.api.PaymentError;
import com.ning.billing.payment.api.PaymentInfo;
import com.ning.billing.payment.provider.PaymentProviderPlugin;
diff --git a/payment/src/test/java/com/ning/billing/payment/api/TestMockPaymentApi.java b/payment/src/test/java/com/ning/billing/payment/api/TestMockPaymentApi.java
new file mode 100644
index 0000000..dc7a74b
--- /dev/null
+++ b/payment/src/test/java/com/ning/billing/payment/api/TestMockPaymentApi.java
@@ -0,0 +1,12 @@
+package com.ning.billing.payment.api;
+
+import org.testng.annotations.Guice;
+import org.testng.annotations.Test;
+
+import com.ning.billing.payment.setup.PaymentTestModule;
+
+@Guice(modules = PaymentTestModule.class)
+@Test(groups = "fast")
+public class TestMockPaymentApi extends TestPaymentApi {
+
+}
diff --git a/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java b/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java
new file mode 100644
index 0000000..4c22a3f
--- /dev/null
+++ b/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java
@@ -0,0 +1,84 @@
+package com.ning.billing.payment.api;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.commons.lang.RandomStringUtils;
+import org.joda.time.DateTime;
+import org.testng.annotations.Test;
+
+import com.google.inject.Inject;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.MockAccountUserApi;
+import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.invoice.api.MockInvoicePaymentApi;
+import com.ning.billing.invoice.model.DefaultInvoice;
+import com.ning.billing.invoice.model.DefaultInvoiceItem;
+
+public abstract class TestPaymentApi {
+ @Inject
+ protected MockInvoicePaymentApi invoicePaymentApi;
+ @Inject
+ protected MockAccountUserApi accountUserApi;
+ @Inject
+ protected PaymentApi paymentApi;
+
+ protected Account createAccount() {
+ String name = "First" + RandomStringUtils.random(5) + " " + "Last" + RandomStringUtils.random(5);
+ String externalKey = "12345";
+ return accountUserApi.createAccount(UUID.randomUUID(),
+ externalKey,
+ "user@example.com",
+ name,
+ name.length(),
+ "123-456-7890",
+ Currency.USD,
+ 1,
+ null,
+ BigDecimal.ZERO);
+ }
+
+ protected Invoice createInvoice(Account account,
+ DateTime targetDate,
+ Currency currency) {
+ Invoice invoice = new DefaultInvoice(account.getId(), targetDate, currency);
+
+ invoicePaymentApi.add(invoice);
+ return invoice;
+ }
+
+ @Test
+ public void testCreatePayment() {
+ final DateTime now = new DateTime();
+ final Account account = createAccount();
+ final Invoice invoice = createInvoice(account, now, Currency.USD);
+ final BigDecimal amount = new BigDecimal("10.00");
+ final UUID subscriptionId = UUID.randomUUID();
+
+ invoice.add(new DefaultInvoiceItem(invoice.getId(),
+ subscriptionId,
+ now,
+ now.plusMonths(1),
+ "Test",
+ amount,
+ new BigDecimal("1.0"),
+ Currency.USD));
+
+ List<Either<PaymentError, PaymentInfo>> results = paymentApi.createPayment(account.getExternalKey(), Arrays.asList(invoice.getId().toString()));
+
+ assertEquals(results.size(), 1);
+ assertTrue(results.get(0).isRight());
+
+ PaymentInfo paymentInfo = results.get(0).getRight();
+
+ assertNotNull(paymentInfo.getId());
+ assertEquals(paymentInfo.getAmount().doubleValue(), amount.doubleValue());
+ }
+}