Skip to content

Add support for Issuing APIs/resources #557

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 26, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ before_install:

env:
global:
- STRIPE_MOCK_VERSION=0.19.0
- STRIPE_MOCK_VERSION=0.23.0

matrix:
include:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,11 @@ public class BalanceTransactionDeserializer implements JsonDeserializer<BalanceT
sourceObjMap.put("charge", Charge.class);
sourceObjMap.put("dispute", Dispute.class);
sourceObjMap.put("fee_refund", FeeRefund.class);
sourceObjMap.put("issuing.authorization", com.stripe.model.issuing.Authorization.class);
sourceObjMap.put("issuing.transaction", com.stripe.model.issuing.Transaction.class);
sourceObjMap.put("payout", Payout.class);
sourceObjMap.put("refund", Refund.class);
sourceObjMap.put("topup", Topup.class);
sourceObjMap.put("transfer", Transfer.class);
sourceObjMap.put("transfer_reversal", Reversal.class);
}
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/com/stripe/model/EventDataDeserializer.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,16 @@ public class EventDataDeserializer implements JsonDeserializer<EventData> {
objectMap.put("invoice", Invoice.class);
objectMap.put("invoice_line_item", InvoiceLineItem.class);
objectMap.put("invoiceitem", InvoiceItem.class);
objectMap.put("issuing.authorization", com.stripe.model.issuing.Authorization.class);
objectMap.put("issuing.card", com.stripe.model.issuing.Card.class);
objectMap.put("issuing.card_details", com.stripe.model.issuing.CardDetails.class);
objectMap.put("issuing.cardholder", com.stripe.model.issuing.Cardholder.class);
objectMap.put("issuing.dispute", com.stripe.model.issuing.Dispute.class);
objectMap.put("issuing.transaction", com.stripe.model.issuing.Transaction.class);
objectMap.put("order", Order.class);
objectMap.put("order_item", OrderItem.class);
objectMap.put("order_return", OrderReturn.class);
objectMap.put("payment_intent", PaymentIntent.class);
objectMap.put("payout", Payout.class);
objectMap.put("plan", Plan.class);
objectMap.put("product", Product.class);
Expand Down
228 changes: 228 additions & 0 deletions src/main/java/com/stripe/model/issuing/Authorization.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
package com.stripe.model.issuing;

import com.stripe.exception.APIConnectionException;
import com.stripe.exception.APIException;
import com.stripe.exception.AuthenticationException;
import com.stripe.exception.CardException;
import com.stripe.exception.InvalidRequestException;
import com.stripe.model.BalanceTransaction;
import com.stripe.model.ExpandableField;
import com.stripe.model.HasId;
import com.stripe.model.MetadataStore;
import com.stripe.model.StripeObject;
import com.stripe.net.APIResource;
import com.stripe.net.RequestOptions;

import java.util.List;
import java.util.Map;

import lombok.AccessLevel;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public class Authorization extends APIResource implements MetadataStore<Authorization>, HasId {
@Getter(onMethod = @__({@Override})) String id;
String object;
Boolean approved;
String authorizationMethod;
String authorizedAmount;
String authorizedCurrency;
List<BalanceTransaction> balanceTransactions;
@Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE)
ExpandableField<Card> card;
@Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE)
ExpandableField<Cardholder> cardholder;
Long created;
Long heldAmount;
String heldCurrency;
Boolean isHeldAmountControllable;
Boolean livemode;
MerchantData merchantData;
@Getter(onMethod = @__({@Override})) Map<String, String> metadata;
Long pendingAuthorizedAmount;
Long pendingHeldAmount;
List<RequestHistory> requestHistory;
String status;
List<Transaction> transactions;
VerificationData verificationData;

// <editor-fold desc="card">
public String getCard() {
return (this.card != null) ? this.card.getId() : null;
}

public void setCard(String cardId) {
this.card = setExpandableFieldID(cardId, this.card);
}

public Card getCardObject() {
return (this.card != null) ? this.card.getExpanded() : null;
}

public void setCardObject(Card c) {
this.card = new ExpandableField<Card>(c.getId(), c);
}
// </editor-fold>

// <editor-fold desc="cardholder">
public String getCardholder() {
return (this.cardholder != null) ? this.cardholder.getId() : null;
}

public void setCardholder(String cardholderId) {
this.cardholder = setExpandableFieldID(cardholderId, this.cardholder);
}

public Cardholder getCardholderObject() {
return (this.cardholder != null) ? this.cardholder.getExpanded() : null;
}

public void setCardholderObject(Cardholder c) {
this.cardholder = new ExpandableField<Cardholder>(c.getId(), c);
}
// </editor-fold>

// <editor-fold desc="approve">
/**
* Approve an issuing authorization.
*/
public Authorization approve(Map<String, Object> params) throws AuthenticationException,
InvalidRequestException, APIConnectionException, CardException,
APIException {
return approve(params, null);
}

/**
* Approve an issuing authorization.
*/
public Authorization approve(Map<String, Object> params, RequestOptions options)
throws AuthenticationException, InvalidRequestException,
APIConnectionException, CardException, APIException {
return request(RequestMethod.POST, String.format("%s/approve",
instanceURL(Authorization.class, this.getId())), params, Authorization.class, options);
}
// </editor-fold>

// <editor-fold desc="decline">
/**
* Decline an issuing authorization.
*/
public Authorization decline(Map<String, Object> params) throws AuthenticationException,
InvalidRequestException, APIConnectionException, CardException,
APIException {
return decline(params, null);
}

/**
* Decline an issuing authorization.
*/
public Authorization decline(Map<String, Object> params, RequestOptions options)
throws AuthenticationException, InvalidRequestException,
APIConnectionException, CardException, APIException {
return request(RequestMethod.POST, String.format("%s/decline",
instanceURL(Authorization.class, this.getId())), params, Authorization.class, options);
}
// </editor-fold>

// <editor-fold desc="list">
/**
* List all issuing authorizations.
*/
public static AuthorizationCollection list(Map<String, Object> params)
throws AuthenticationException, InvalidRequestException,
APIConnectionException, CardException, APIException {
return list(params, null);
}

/**
* List all issuing authorizations.
*/
public static AuthorizationCollection list(Map<String, Object> params, RequestOptions options)
throws AuthenticationException, InvalidRequestException, APIConnectionException,
CardException, APIException {
return requestCollection(classURL(Authorization.class), params,
AuthorizationCollection.class, options);
}
// </editor-fold>

// <editor-fold desc="retrieve">
/**
* Retrieve an issuing authorization.
*/
public static Authorization retrieve(String id) throws AuthenticationException,
InvalidRequestException, APIConnectionException, CardException,
APIException {
return retrieve(id, null);
}

/**
* Retrieve an issuing authorization.
*/
public static Authorization retrieve(String id, RequestOptions options)
throws AuthenticationException, InvalidRequestException,
APIConnectionException, CardException, APIException {
return request(RequestMethod.GET, instanceURL(Authorization.class, id), null,
Authorization.class, options);
}

/**
* Retrieve an issuing authorization.
*/
public static Authorization retrieve(String id, Map<String, Object> params,
RequestOptions options)
throws AuthenticationException, InvalidRequestException,
APIConnectionException, CardException, APIException {
return request(RequestMethod.GET, instanceURL(Authorization.class, id), params,
Authorization.class, options);
}
// </editor-fold>

// <editor-fold desc="update">
/**
* Update an issuing authorization.
*/
@Override
public Authorization update(Map<String, Object> params)
throws AuthenticationException, InvalidRequestException,
APIConnectionException, CardException, APIException {
return update(params, null);
}

/**
* Update an issuing authorization.
*/
@Override
public Authorization update(Map<String, Object> params, RequestOptions options)
throws AuthenticationException, InvalidRequestException,
APIConnectionException, CardException, APIException {
return request(RequestMethod.POST, instanceURL(Authorization.class, this.id), params,
Authorization.class, options);
}
// </editor-fold>

@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public final class RequestHistory extends StripeObject {
Boolean approved;
Long authorizedAmount;
String authorizedCurrency;
Long created;
Long heldAmount;
String heldCurrency;
String reason;
}

@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public final class VerificationData extends StripeObject {
String addressLine1Check;
String addressZipCheck;
String cvcCheck;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.stripe.model.issuing;

import com.stripe.model.StripeCollection;

public class AuthorizationCollection extends StripeCollection<Authorization> {
}
Loading