diff --git a/README.md b/README.md index 2ab18296a9d..3368dee081d 100644 --- a/README.md +++ b/README.md @@ -17,14 +17,14 @@ Add this dependency to your project's POM: com.stripe stripe-java - 1.0.9 + RELEASE ### Others You'll need to manually install the following JARs: -* The Stripe JAR from https://code.stripe.com/stripe-java-1.0.9.jar +* The Stripe JAR from https://code.stripe.com/stripe-java-latest.jar * [Google Gson](http://code.google.com/p/google-gson/) from . Usage diff --git a/VERSION b/VERSION index 66c4c2263e5..59e9e60491a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.9 +1.0.11 diff --git a/pom.xml b/pom.xml index 200c4b5cbe6..1793f971e2d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.stripe stripe-java jar - 1.0.9 + 1.0.11 stripe-java https://github.com/stripe/stripe-java diff --git a/src/main/java/com/stripe/Stripe.java b/src/main/java/com/stripe/Stripe.java index 60956b710b5..c76bde49370 100644 --- a/src/main/java/com/stripe/Stripe.java +++ b/src/main/java/com/stripe/Stripe.java @@ -3,6 +3,6 @@ public abstract class Stripe { public static final String API_BASE = "https://api.stripe.com/v1"; - public static final String VERSION = "1.0.9"; + public static final String VERSION = "1.0.11"; public static String apiKey; } diff --git a/src/main/java/com/stripe/model/Charge.java b/src/main/java/com/stripe/model/Charge.java index 597daee0a43..92a69891e54 100644 --- a/src/main/java/com/stripe/model/Charge.java +++ b/src/main/java/com/stripe/model/Charge.java @@ -10,7 +10,7 @@ public class Charge extends APIResource { Long created; String currency; String id; - String livemode; + Boolean livemode; Boolean paid; Boolean refunded; Integer fee; @@ -50,11 +50,11 @@ public void setCurrency(String currency) { this.currency = currency; } - public String getLivemode() { + public Boolean getLivemode() { return livemode; } - public void setLivemode(String livemode) { + public void setLivemode(Boolean livemode) { this.livemode = livemode; } diff --git a/src/main/java/com/stripe/model/Coupon.java b/src/main/java/com/stripe/model/Coupon.java index 7ba3f6c7253..a4a6699545b 100644 --- a/src/main/java/com/stripe/model/Coupon.java +++ b/src/main/java/com/stripe/model/Coupon.java @@ -9,7 +9,7 @@ public class Coupon extends APIResource { Integer percentOff; String duration; String id; - String livemode; + Boolean livemode; Integer durationInMonths; Integer maxRedemptions; Integer redeemBy; @@ -54,11 +54,11 @@ public void setId(String id) { this.id = id; } - public String getLivemode() { + public Boolean getLivemode() { return livemode; } - public void setLivemode(String livemode) { + public void setLivemode(Boolean livemode) { this.livemode = livemode; } diff --git a/src/main/java/com/stripe/model/Customer.java b/src/main/java/com/stripe/model/Customer.java index bf91ffb87b0..07c98ece03f 100644 --- a/src/main/java/com/stripe/model/Customer.java +++ b/src/main/java/com/stripe/model/Customer.java @@ -8,7 +8,7 @@ public class Customer extends APIResource { Long created; String id; - String livemode; + Boolean livemode; String description; Card activeCard; String email; @@ -34,11 +34,11 @@ public void setId(String id) { this.id = id; } - public String getLivemode() { + public Boolean getLivemode() { return livemode; } - public void setLivemode(String livemode) { + public void setLivemode(Boolean livemode) { this.livemode = livemode; } diff --git a/src/main/java/com/stripe/model/Event.java b/src/main/java/com/stripe/model/Event.java new file mode 100644 index 00000000000..199ec223d91 --- /dev/null +++ b/src/main/java/com/stripe/model/Event.java @@ -0,0 +1,63 @@ +package com.stripe.model; + +import java.util.Map; + +import com.stripe.exception.StripeException; +import com.stripe.net.APIResource; + +public class Event extends APIResource { + String id; + String type; + Boolean livemode; + Long created; + EventData data; + + public static Event retrieve(String id) throws StripeException { + return request(RequestMethod.GET, instanceURL(Event.class, id), null, Event.class); + } + + public static EventCollection all(Map params) throws StripeException { + return request(RequestMethod.GET, classURL(Event.class), params, EventCollection.class); + } + + public EventData getData() { + return data; + } + + public void setData(EventData data) { + this.data = data; + } + + public Long getCreated() { + return created; + } + + public void setCreated(Long created) { + this.created = created; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String name) { + this.type = name; + } + + public Boolean getLivemode() { + return livemode; + } + + public void setLivemode(Boolean livemode) { + this.livemode = livemode; + } + +} \ No newline at end of file diff --git a/src/main/java/com/stripe/model/NotificationCollection.java b/src/main/java/com/stripe/model/EventCollection.java similarity index 56% rename from src/main/java/com/stripe/model/NotificationCollection.java rename to src/main/java/com/stripe/model/EventCollection.java index 43814616eaf..8d2c64db3a9 100644 --- a/src/main/java/com/stripe/model/NotificationCollection.java +++ b/src/main/java/com/stripe/model/EventCollection.java @@ -2,14 +2,14 @@ import java.util.List; -public class NotificationCollection extends StripeObject { - List data; +public class EventCollection extends StripeObject { + List data; Integer count; - public List getData() { + public List getData() { return data; } - public void setData(List data) { + public void setData(List data) { this.data = data; } public Integer getCount() { diff --git a/src/main/java/com/stripe/model/EventData.java b/src/main/java/com/stripe/model/EventData.java new file mode 100644 index 00000000000..fd6f589656b --- /dev/null +++ b/src/main/java/com/stripe/model/EventData.java @@ -0,0 +1,24 @@ +package com.stripe.model; + +import java.util.Map; + +public class EventData extends StripeObject { + Map previousAttributes; + StripeObject object; + + public Map getPreviousAttributes() { + return previousAttributes; + } + + public void setPreviousAttributes(Map previousAttributes) { + this.previousAttributes = previousAttributes; + } + + public StripeObject getObject() { + return object; + } + + public void setObject(StripeObject object) { + this.object = object; + } +} diff --git a/src/main/java/com/stripe/model/EventDataDeserializer.java b/src/main/java/com/stripe/model/EventDataDeserializer.java new file mode 100644 index 00000000000..bfb95a02e2b --- /dev/null +++ b/src/main/java/com/stripe/model/EventDataDeserializer.java @@ -0,0 +1,49 @@ +package com.stripe.model; + +import java.lang.reflect.Type; +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.reflect.TypeToken; +import com.stripe.net.APIResource; + +public class EventDataDeserializer implements JsonDeserializer { + + static Map objectMap = new HashMap(); + static { + objectMap.put("charge", Charge.class); + objectMap.put("discount", Discount.class); + objectMap.put("customer", Customer.class); + objectMap.put("invoice", Invoice.class); + objectMap.put("invoiceitem", InvoiceItem.class); + objectMap.put("plan", Plan.class); + objectMap.put("subscription", Subscription.class); + objectMap.put("token", Token.class); + } + + public EventData deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) + throws JsonParseException { + EventData eventData = new EventData(); + JsonObject jsonObject = json.getAsJsonObject(); + for(Map.Entry entry: jsonObject.entrySet()) { + String key = entry.getKey(); + JsonElement element = entry.getValue(); + if("previous_attributes".equals(key)) { + Type typeOfPrevAttrs = new TypeToken>(){}.getType(); + eventData.setPreviousAttributes( + (Map) APIResource.gson.fromJson(element, typeOfPrevAttrs)); + } else if ("object".equals(key)) { + String type = element.getAsJsonObject().get("object").getAsString(); + Class cl = objectMap.get(type); + StripeObject object = APIResource.gson.fromJson(entry.getValue(), cl); + eventData.setObject(object); + } + } + return eventData; + } +} \ No newline at end of file diff --git a/src/main/java/com/stripe/model/InvoiceItem.java b/src/main/java/com/stripe/model/InvoiceItem.java index a747dfef4d8..dcf93a6ee3c 100644 --- a/src/main/java/com/stripe/model/InvoiceItem.java +++ b/src/main/java/com/stripe/model/InvoiceItem.java @@ -11,7 +11,7 @@ public class InvoiceItem extends APIResource { String currency; String description; Long date; - String livemode; + Boolean livemode; public Integer getAmount() { return amount; @@ -53,11 +53,11 @@ public void setDate(Long date) { this.date = date; } - public String getLivemode() { + public Boolean getLivemode() { return livemode; } - public void setLivemode(String livemode) { + public void setLivemode(Boolean livemode) { this.livemode = livemode; } diff --git a/src/main/java/com/stripe/model/NextRecurringCharge.java b/src/main/java/com/stripe/model/NextRecurringCharge.java index 3ce5de584da..153dcae1a87 100644 --- a/src/main/java/com/stripe/model/NextRecurringCharge.java +++ b/src/main/java/com/stripe/model/NextRecurringCharge.java @@ -7,12 +7,15 @@ public class NextRecurringCharge extends StripeObject { public Integer getAmount() { return amount; } + public void setAmount(Integer amount) { this.amount = amount; } + public String getDate() { return date; } + public void setDate(String date) { this.date = date; } diff --git a/src/main/java/com/stripe/model/Notification.java b/src/main/java/com/stripe/model/Notification.java deleted file mode 100644 index 0bd2485cc3d..00000000000 --- a/src/main/java/com/stripe/model/Notification.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.stripe.model; - -import java.util.Map; - -import com.stripe.exception.StripeException; -import com.stripe.net.APIResource; - -public class Notification extends APIResource { - String id; - String event; - String livemode; - Long created; - Map data; - - public static Notification retrieve(String id) throws StripeException { - return request(RequestMethod.GET, instanceURL(Notification.class, id), null, Notification.class); - } - - public static NotificationCollection all(Map params) throws StripeException { - return request(RequestMethod.GET, classURL(Notification.class), params, NotificationCollection.class); - } - - public Map getData() { - return data; - } - - public void setData(Map data) { - this.data = data; - } - - public Long getCreated() { - return created; - } - - public void setCreated(Long created) { - this.created = created; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getEvent() { - return name; - } - - public void setEvent(String name) { - this.event = name; - } - - public String getLivemode() { - return livemode; - } - - public void setLivemode(String livemode) { - this.livemode = livemode; - } - -} \ No newline at end of file diff --git a/src/main/java/com/stripe/model/Plan.java b/src/main/java/com/stripe/model/Plan.java index fb2f1c683a2..e32421d98eb 100644 --- a/src/main/java/com/stripe/model/Plan.java +++ b/src/main/java/com/stripe/model/Plan.java @@ -11,7 +11,7 @@ public class Plan extends APIResource { String id; String interval; String name; - String livemode; + Boolean livemode; Integer trialPeriodDays; public static Plan create(Map params) throws StripeException { @@ -74,11 +74,11 @@ public void setName(String name) { this.name = name; } - public String getLivemode() { + public Boolean getLivemode() { return livemode; } - public void setLivemode(String livemode) { + public void setLivemode(Boolean livemode) { this.livemode = livemode; } diff --git a/src/main/java/com/stripe/model/Subscription.java b/src/main/java/com/stripe/model/Subscription.java index c79270d72a3..7e265d07f9c 100644 --- a/src/main/java/com/stripe/model/Subscription.java +++ b/src/main/java/com/stripe/model/Subscription.java @@ -1,7 +1,9 @@ package com.stripe.model; +import com.stripe.net.APIResource; -public class Subscription extends StripeObject { + +public class Subscription extends APIResource { Long currentPeriodEnd; Long currentPeriodStart; String customer; diff --git a/src/main/java/com/stripe/model/Token.java b/src/main/java/com/stripe/model/Token.java index cb62cdf43b7..7fe765235b1 100644 --- a/src/main/java/com/stripe/model/Token.java +++ b/src/main/java/com/stripe/model/Token.java @@ -10,7 +10,7 @@ public class Token extends APIResource { Long created; String currency; String id; - String livemode; + Boolean livemode; Boolean used; Card card; @@ -46,11 +46,11 @@ public void setId(String id) { this.id = id; } - public String getLivemode() { + public Boolean getLivemode() { return livemode; } - public void setLivemode(String livemode) { + public void setLivemode(Boolean livemode) { this.livemode = livemode; } diff --git a/src/main/java/com/stripe/net/APIResource.java b/src/main/java/com/stripe/net/APIResource.java index 5c707c39e59..f56e09550ec 100644 --- a/src/main/java/com/stripe/net/APIResource.java +++ b/src/main/java/com/stripe/net/APIResource.java @@ -25,6 +25,8 @@ import com.stripe.exception.CardException; import com.stripe.exception.InvalidRequestException; import com.stripe.exception.StripeException; +import com.stripe.model.EventData; +import com.stripe.model.EventDataDeserializer; import com.stripe.model.StripeObject; import com.stripe.util.Base64; @@ -38,9 +40,11 @@ public abstract class APIResource extends StripeObject { protected enum RequestMethod { GET, POST, DELETE } - private static final Gson gson = new GsonBuilder().setFieldNamingPolicy( - FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); - + public static final Gson gson = new GsonBuilder().setFieldNamingPolicy( + FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).registerTypeAdapter( + EventData.class, new EventDataDeserializer()).create(); + + private static String base64(String in) { return new String(Base64.encodeToString(in.getBytes(), false)); } diff --git a/src/test/java/com/stripe/StripeTest.java b/src/test/java/com/stripe/StripeTest.java index f0aefaddf3e..0ce42d989c2 100644 --- a/src/test/java/com/stripe/StripeTest.java +++ b/src/test/java/com/stripe/StripeTest.java @@ -23,6 +23,7 @@ import com.stripe.model.DeletedPlan; import com.stripe.model.Invoice; import com.stripe.model.InvoiceItem; +import com.stripe.model.Event; import com.stripe.model.Plan; import com.stripe.model.Subscription; import com.stripe.model.Token; @@ -68,7 +69,7 @@ static Customer createDefaultCustomerWithPlan(Plan plan) throws StripeException return customer; } - @BeforeClass public static void setUp() { + @BeforeClass public static void setUp() { Stripe.apiKey = "vtUQeOtUnYr7PGCLQ96Ul4zqpDUO4sOE"; //stripe public test key defaultCardParams.put("number", "4242424242424242"); @@ -186,7 +187,6 @@ public void testInvalidCard() throws StripeException { @Test public void testPlanUpdate() throws StripeException { Plan createdPlan = Plan.create(getUniquePlanParams()); - System.out.println(createdPlan); Map updateParams = new HashMap(); updateParams.put("name", "Updated Plan Name"); Plan updatedplan = createdPlan.update(updateParams); @@ -354,10 +354,25 @@ public void testInvalidCard() throws StripeException { } @Test public void testCustomerCreateWithCoupon() throws StripeException { - Coupon coupon = Coupon.create(getUniqueCouponParams()); + Coupon coupon = Coupon.create(getUniqueCouponParams()); Map customerWithCouponParams = new HashMap(); customerWithCouponParams.put("coupon", coupon.getId()); Customer customer = Customer.create(customerWithCouponParams); assertEquals(customer.getDiscount().getCoupon().getId(), coupon.getId()); } -} + + @Test public void testEventRetrieve() throws StripeException { + Map listParams = new HashMap(); + listParams.put("count", 1); + Event event = Event.all(listParams).getData().get(0); + Event retrievedEvent = Event.retrieve(event.getId()); + assertEquals(event.getId(), retrievedEvent.getId()); + } + + @Test public void testEventList() throws StripeException { + Map listParams = new HashMap(); + listParams.put("count", 1); + List events = Event.all(listParams).getData(); + assertEquals(events.size(), 1); + } +} \ No newline at end of file