diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
index 1241b7d..4521257 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
@@ -15,16 +15,21 @@
*/
package com.ning.billing.jaxrs.json;
+import java.math.BigDecimal;
import java.util.LinkedList;
import java.util.List;
+import java.util.UUID;
import org.codehaus.jackson.annotate.JsonCreator;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonView;
+import org.joda.time.DateTime;
import com.ning.billing.account.api.Account;
+import com.ning.billing.catalog.api.Currency;
import com.ning.billing.entitlement.api.timeline.BundleTimeline;
import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.payment.api.PaymentAttempt;
import com.ning.billing.payment.api.PaymentInfoEvent;
public class AccountTimelineJson {
@@ -52,7 +57,7 @@ public class AccountTimelineJson {
this.payments = payments;
}
- public AccountTimelineJson(Account account, List<Invoice> invoices, List<PaymentInfoEvent> payments, List<BundleTimeline> bundles) {
+ public AccountTimelineJson(Account account, List<Invoice> invoices, List<PaymentAttempt> payments, List<BundleTimeline> bundles) {
this.account = new AccountJsonSimple(account.getId().toString(), account.getExternalKey());
this.bundles = new LinkedList<BundleJsonWithSubscriptions>();
for (BundleTimeline cur : bundles) {
@@ -63,10 +68,13 @@ public class AccountTimelineJson {
this.invoices.add(new InvoiceJson(cur.getTotalAmount(), cur.getId().toString(), cur.getInvoiceDate(), Integer.toString(cur.getInvoiceNumber()), cur.getBalance()));
}
this.payments = new LinkedList<PaymentJson>();
- for (PaymentInfoEvent cur : payments) {
- // STEPH how to link that payment with the invoice ??
- this.payments.add(new PaymentJson(cur.getAmount(), null , cur.getPaymentNumber(), null, cur.getEffectiveDate(), cur.getStatus()));
- }
+ for (PaymentAttempt cur : payments) {
+ String status = cur.getPaymentId() != null ? "Success" : "Failed";
+ BigDecimal paidAmount = cur.getPaymentId() != null ? cur.getAmount() : BigDecimal.ZERO;
+
+ this.payments.add(new PaymentJson(cur.getAmount(), paidAmount, cur.getInvoiceId().toString(), cur.getPaymentId(), cur.getCreatedDate(), cur.getUpdatedDate(),
+ cur.getRetryCount(), cur.getCurrency().toString(), status));
+ }
}
public AccountTimelineJson() {
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJson.java
index 3a9fd4d..6799c74 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJson.java
@@ -27,37 +27,45 @@ import com.ning.billing.util.clock.DefaultClock;
public class PaymentJson {
- @JsonView(BundleTimelineViews.Base.class)
private final BigDecimal paidAmount;
-
- @JsonView(BundleTimelineViews.Base.class)
+
+ private final BigDecimal amount;
+
private final String invoiceId;
- @JsonView(BundleTimelineViews.Base.class)
private final String paymentId;
- @JsonView(BundleTimelineViews.Base.class)
private final DateTime requestedDate;
- @JsonView(BundleTimelineViews.Base.class)
private final DateTime effectiveDate;
- @JsonView(BundleTimelineViews.Base.class)
+ private final Integer retryCount;
+
+ private final String currency;
+
private final String status;
+
+
@JsonCreator
- public PaymentJson(@JsonProperty("paid_amount") BigDecimal paidAmount,
+ public PaymentJson(@JsonProperty("amount") BigDecimal amount,
+ @JsonProperty("paid_amount") BigDecimal paidAmount,
@JsonProperty("invoice_id") String invoiceId,
@JsonProperty("payment_id") String paymentId,
@JsonProperty("requested_dt") DateTime requestedDate,
@JsonProperty("effective_dt") DateTime effectiveDate,
+ @JsonProperty("retry_count") Integer retryCount,
+ @JsonProperty("currency") String currency,
@JsonProperty("status") String status) {
super();
+ this.amount = amount;
this.paidAmount = paidAmount;
this.invoiceId = invoiceId;
this.paymentId = paymentId;
this.requestedDate = DefaultClock.toUTCDateTime(requestedDate);
this.effectiveDate = DefaultClock.toUTCDateTime(effectiveDate);
+ this.currency = currency;
+ this.retryCount = retryCount;
this.status = status;
}
@@ -84,4 +92,16 @@ public class PaymentJson {
public String getStatus() {
return status;
}
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public Integer getRetryCount() {
+ return retryCount;
+ }
+
+ public String getCurrency() {
+ return currency;
+ }
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
index 80f8253..03ec3ba 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
@@ -65,6 +65,7 @@ import com.ning.billing.jaxrs.json.BundleJsonNoSubsciptions;
import com.ning.billing.jaxrs.util.Context;
import com.ning.billing.jaxrs.util.JaxrsUriBuilder;
import com.ning.billing.payment.api.PaymentApi;
+import com.ning.billing.payment.api.PaymentAttempt;
import com.ning.billing.payment.api.PaymentInfoEvent;
@@ -229,7 +230,7 @@ public class AccountResource implements BaseJaxrsResource {
Account account = accountApi.getAccountById(UUID.fromString(accountId));
List<Invoice> invoices = invoiceApi.getInvoicesByAccount(account.getId());
- List<PaymentInfoEvent> payments = Collections.emptyList();
+ List<PaymentAttempt> payments = new LinkedList<PaymentAttempt>();
if (invoices.size() > 0) {
Collection<String> tmp = Collections2.transform(invoices, new Function<Invoice, String>() {
@@ -240,8 +241,9 @@ public class AccountResource implements BaseJaxrsResource {
});
List<String> invoicesId = new ArrayList<String>();
invoicesId.addAll(tmp);
-
- payments = paymentApi.getPaymentInfo(invoicesId);
+ for (String curId : invoicesId) {
+ payments.addAll(paymentApi.getPaymentAttemptsForInvoiceId(curId));
+ }
}
List<SubscriptionBundle> bundles = entitlementApi.getBundlesForAccount(account.getId());