diff --git a/src/main/java/com/stripe/model/Charge.java b/src/main/java/com/stripe/model/Charge.java index dc7bd91c35f..5d2462621ee 100644 --- a/src/main/java/com/stripe/model/Charge.java +++ b/src/main/java/com/stripe/model/Charge.java @@ -44,6 +44,7 @@ public class Charge extends APIResource implements MetadataStore, HasId String failureMessage; FraudDetails fraudDetails; @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) ExpandableField invoice; + ChargeLevel3 level3; Boolean livemode; @Getter(onMethod = @__({@Override})) Map metadata; @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) ExpandableField onBehalfOf; diff --git a/src/main/java/com/stripe/model/ChargeLevel3.java b/src/main/java/com/stripe/model/ChargeLevel3.java new file mode 100644 index 00000000000..7bc553eb12d --- /dev/null +++ b/src/main/java/com/stripe/model/ChargeLevel3.java @@ -0,0 +1,17 @@ +package com.stripe.model; + +import java.util.List; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@EqualsAndHashCode(callSuper = false) +public final class ChargeLevel3 extends StripeObject { + protected List lineItems; + protected String merchantReference; + protected String shippingAddressZip; + protected Long shippingAmount; +} \ No newline at end of file diff --git a/src/main/java/com/stripe/model/ChargeLevel3LineItem.java b/src/main/java/com/stripe/model/ChargeLevel3LineItem.java new file mode 100644 index 00000000000..630c9c8b73e --- /dev/null +++ b/src/main/java/com/stripe/model/ChargeLevel3LineItem.java @@ -0,0 +1,17 @@ +package com.stripe.model; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@EqualsAndHashCode(callSuper = false) +public final class ChargeLevel3LineItem extends StripeObject { + protected Long discountAmount; + protected String productCode; + protected String productDescription; + protected Long quantity; + protected Long taxAmount; + protected Long unitCost; +} diff --git a/src/test/java/com/stripe/model/ChargeLevel3Test.java b/src/test/java/com/stripe/model/ChargeLevel3Test.java new file mode 100644 index 00000000000..4a89bb34b65 --- /dev/null +++ b/src/test/java/com/stripe/model/ChargeLevel3Test.java @@ -0,0 +1,19 @@ +package com.stripe.model; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import com.stripe.BaseStripeTest; +import com.stripe.net.APIResource; + +import org.junit.Test; + +public class ChargeLevel3Test extends BaseStripeTest { + @Test + public void testDeserialize() throws Exception { + final String data = getResourceAsString("/api_fixtures/charge_level3.json"); + final ChargeLevel3 object = APIResource.GSON.fromJson(data, ChargeLevel3.class); + assertEquals("1234", object.getMerchantReference()); + assertEquals(2, object.getLineItems().size()); + } +} diff --git a/src/test/resources/api_fixtures/charge_level3.json b/src/test/resources/api_fixtures/charge_level3.json new file mode 100644 index 00000000000..d1a448dc18e --- /dev/null +++ b/src/test/resources/api_fixtures/charge_level3.json @@ -0,0 +1,23 @@ +{ + "line_items": [ + { + "discount_amount": 200, + "product_code": "1234", + "product_description": "description 1", + "quantity": 2, + "tax_amount": 200, + "unit_cost": 1000 + }, + { + "discount_amount": 300, + "product_code": "1235", + "product_description": "description 2", + "quantity": 3, + "tax_amount": 300, + "unit_cost": 3000 + } + ], + "merchant_reference": "1234", + "shipping_address_zip": "94110", + "shipping_amount": 700 +} \ No newline at end of file