// Path: src/main/java/com/lookfirst/wepay/api/Checkout.java
// @Data
// @NoArgsConstructor
// @AllArgsConstructor
// @EqualsAndHashCode(callSuper=false)
// public static class ShippingAddress {
// 	private String address1;
// 	private String address2;
// 	private String city;
// 	private String state;
// 	private String zip;
// 	private String country;
// 	private String region;
// 	private String postalcode;
// }
// 
// Path: src/main/java/com/lookfirst/wepay/api/CreditCard.java
// @Data
// public class CreditCard implements Serializable {
// 	private static final long serialVersionUID = 1L;
// 
// 	/** The unique ID of the credit_card. */
// 	public String creditCardId;
// 	/** The string that identifies the credit_card such as MasterCard xxxxxx4769. */
// 	public String creditCardName;
// 	/** The state that the credit card is in. */
// 	public String state;
// 	/** The name on the card (ie "Bob Smith"). */
// 	public String userName;
// 	/** The email address of the user who owns the card. */
// 	public String email;
// 	/** The unique reference ID of the account (this is set by the application in the /account/create or /account/modify call). */
// 	public String referenceId;
// }


import lombok.Data;
import lombok.EqualsAndHashCode;
import com.lookfirst.wepay.api.Checkout.ShippingAddress;
import com.lookfirst.wepay.api.CreditCard;
package com.lookfirst.wepay.api.req;



/**
 * https://stage.wepay.com/developer/reference/credit_card
 *
 * This call allows you to pass credit card information and receive back a credit_card_id. You will then be able to use that credit_card_id on
 * the /checkout/create call to execute a payment immediately with that credit card (similar to how the preapproval_id on /checkout/create
 * works). Note that you will need to call the /checkout/create call OR the /credit_card/authorize call within 30 minutes or the credit card will expire.
 *
 * @author Jon Scott Stevens
 * @author Jeff Schnitzer
 */
@Data
@EqualsAndHashCode(callSuper=false)
public class CreditCardCreateRequest extends WePayRequest<CreditCard> {

	/** Yes The ID your your API application. You can find it on your app dashboard. */
	private Long clientId;

	/** Yes The number on the credit card. */
	private Long ccNumber;

	/** Yes The CVV (AKA card security code, CVV2, CVC etc) on the card. */
	private Integer cvv;

	/** Yes The expiration month on the credit card. */
	private Integer expirationMonth;

	/** Yes The expiration year on the credit card. */
	private Integer expirationYear;

	/** Yes The full name of the user that the card belongs to. */
	private String userName;

	/** Yes The email address of the user the card belongs to. */
	private String email;

	/**
	 * Yes
	 * The billing address on the card. It should be a valid JSON object (not a JSON serialized string) with the following format:
	 * {"address1":"380 Portage Ave","address2":"","city":"Palo Alto","state":"CA","zip":"94306","country":"US"}.
	 */
// Path: src/main/java/com/lookfirst/wepay/api/Checkout.java
// @Data
// @NoArgsConstructor
// @AllArgsConstructor
// @EqualsAndHashCode(callSuper=false)
// public static class ShippingAddress {
// 	private String address1;
// 	private String address2;
// 	private String city;
// 	private String state;
// 	private String zip;
// 	private String country;
// 	private String region;
// 	private String postalcode;
// }
// 
// Path: src/main/java/com/lookfirst/wepay/api/CreditCard.java
// @Data
// public class CreditCard implements Serializable {
// 	private static final long serialVersionUID = 1L;
// 
// 	/** The unique ID of the credit_card. */
// 	public String creditCardId;
// 	/** The string that identifies the credit_card such as MasterCard xxxxxx4769. */
// 	public String creditCardName;
// 	/** The state that the credit card is in. */
// 	public String state;
// 	/** The name on the card (ie "Bob Smith"). */
// 	public String userName;
// 	/** The email address of the user who owns the card. */
// 	public String email;
// 	/** The unique reference ID of the account (this is set by the application in the /account/create or /account/modify call). */
// 	public String referenceId;
// }


// Path: src/main/java/com/lookfirst/wepay/api/req/CreditCardCreateRequest.java
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.lookfirst.wepay.api.Checkout.ShippingAddress;
import com.lookfirst.wepay.api.CreditCard;

package com.lookfirst.wepay.api.req;



/**
 * https://stage.wepay.com/developer/reference/credit_card
 *
 * This call allows you to pass credit card information and receive back a credit_card_id. You will then be able to use that credit_card_id on
 * the /checkout/create call to execute a payment immediately with that credit card (similar to how the preapproval_id on /checkout/create
 * works). Note that you will need to call the /checkout/create call OR the /credit_card/authorize call within 30 minutes or the credit card will expire.
 *
 * @author Jon Scott Stevens
 * @author Jeff Schnitzer
 */
@Data
@EqualsAndHashCode(callSuper=false)
public class CreditCardCreateRequest extends WePayRequest<CreditCard> {

	/** Yes The ID your your API application. You can find it on your app dashboard. */
	private Long clientId;

	/** Yes The number on the credit card. */
	private Long ccNumber;

	/** Yes The CVV (AKA card security code, CVV2, CVC etc) on the card. */
	private Integer cvv;

	/** Yes The expiration month on the credit card. */
	private Integer expirationMonth;

	/** Yes The expiration year on the credit card. */
	private Integer expirationYear;

	/** Yes The full name of the user that the card belongs to. */
	private String userName;

	/** Yes The email address of the user the card belongs to. */
	private String email;

	/**
	 * Yes
	 * The billing address on the card. It should be a valid JSON object (not a JSON serialized string) with the following format:
	 * {"address1":"380 Portage Ave","address2":"","city":"Palo Alto","state":"CA","zip":"94306","country":"US"}.
	 */
	private ShippingAddress address;