| POST | /create-customer |
|---|
import java.math.*
import java.util.*
import net.servicestack.client.*
import com.google.gson.annotations.*
import com.google.gson.reflect.*
open class CreateSubscribeCustomer : IPost
{
var email:String? = null
}
open class StripeCustomer : StripeId()
{
var accountBalance:Int? = null
var businessVatId:String? = null
var created:Date? = null
var defaultSource:String? = null
var delinquent:Boolean? = null
var description:String? = null
var discount:StripeDiscount? = null
var email:String? = null
var invoicePrefix:String? = null
var livemode:Boolean? = null
var metadata:HashMap<String,String> = HashMap<String,String>()
var shipping:StripeShipping? = null
var sources:StripeCollection<StripeCard>? = null
var subscriptions:StripeCollection<StripeSubscription>? = null
var deleted:Boolean? = null
var currency:String? = null
}
open class StripeId : StripeObject()
{
var id:String? = null
}
open class StripeObject
{
@SerializedName("object") var Object:StripeType? = null
}
enum class StripeType
{
Unknown,
Account,
Card,
Charge,
Coupon,
Customer,
Discount,
Dispute,
Event,
Invoiceitem,
Invoice,
LineItem,
Plan,
Subscription,
Token,
Transfer,
List,
Product,
}
open class StripeDiscount : StripeId()
{
var customer:String? = null
var coupon:StripeCoupon? = null
var start:Date? = null
var end:Date? = null
}
open class StripeCoupon : StripeId()
{
var amountOff:Int? = null
var created:Date? = null
var currency:String? = null
var duration:StripeCouponDuration? = null
var durationInMonths:Int? = null
var livemode:Boolean? = null
var maxRedemptions:Int? = null
var metadata:HashMap<String,String> = HashMap<String,String>()
var percentOff:Int? = null
var redeemBy:Date? = null
var timesRedeemed:Int? = null
var valid:Boolean? = null
}
enum class StripeCouponDuration
{
Forever,
Once,
Repeating,
}
open class StripeShipping
{
var address:StripeAddress? = null
var name:String? = null
var phone:String? = null
}
open class StripeAddress
{
var city:String? = null
var country:String? = null
var line1:String? = null
var line2:String? = null
var postalCode:String? = null
var state:String? = null
}
open class StripeCollection<T> : StripeId()
{
var url:String? = null
var totalCount:Int? = null
var hasMore:Boolean? = null
@SerializedName("data") var Data:ArrayList<T> = ArrayList<T>()
}
open class StripeCard : StripeId()
{
var brand:String? = null
var number:String? = null
var last4:String? = null
var dynamicLast4:String? = null
var expMonth:Int? = null
var expYear:Int? = null
var cvc:String? = null
var name:String? = null
var addressCity:String? = null
var addressCountry:String? = null
var addressLine1:String? = null
var addressLine2:String? = null
var addressState:String? = null
var addressZip:String? = null
var cvcCheck:StripeCvcCheck? = null
var addressLine1Check:String? = null
var addressZipCheck:String? = null
var funding:String? = null
var fingerprint:String? = null
var customer:String? = null
var country:String? = null
}
enum class StripeCvcCheck
{
Unknown,
Pass,
Fail,
Unchecked,
}
open class StripeSubscription : StripeId()
{
var currentPeriodEnd:Date? = null
var status:StripeSubscriptionStatus? = null
var plan:StripePlan? = null
var currentPeriodStart:Date? = null
var start:Date? = null
var trialStart:Date? = null
var cancelAtPeriodEnd:Boolean? = null
var trialEnd:Date? = null
var canceledAt:Date? = null
var endedAt:Date? = null
var customer:String? = null
var quantity:Int? = null
}
enum class StripeSubscriptionStatus
{
Unknown,
Trialing,
Active,
PastDue,
Canceled,
Unpaid,
}
open class StripePlan : StripeId()
{
var amount:Int? = null
var created:Date? = null
var currency:String? = null
var interval:StripePlanInterval? = null
var intervalCount:Int? = null
var livemode:Boolean? = null
var metadata:HashMap<String,String> = HashMap<String,String>()
var nickname:String? = null
var product:String? = null
var trialPeriodDays:Int? = null
}
enum class StripePlanInterval
{
Month,
Year,
}
Kotlin CreateSubscribeCustomer DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /create-customer HTTP/1.1
Host: sfgboxapi.dev.scadsoftware.com
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
email: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
accountBalance: 0,
businessVatId: String,
created: 0001-01-01,
defaultSource: String,
delinquent: False,
description: String,
discount:
{
customer: String,
coupon:
{
amountOff: 0,
created: 0001-01-01,
currency: String,
duration: forever,
durationInMonths: 0,
livemode: False,
maxRedemptions: 0,
metadata:
{
String: String
},
percentOff: 0,
redeemBy: 0001-01-01,
timesRedeemed: 0,
valid: False,
id: String,
object: unknown
},
start: 0001-01-01,
end: 0001-01-01,
id: String,
object: unknown
},
email: String,
invoicePrefix: String,
livemode: False,
metadata:
{
String: String
},
shipping:
{
address:
{
city: String,
country: String,
line1: String,
line2: String,
postalCode: String,
state: String
},
name: String,
phone: String
},
sources:
{
url: String,
totalCount: 0,
hasMore: False,
data:
[
{
brand: String,
number: String,
last4: String,
dynamicLast4: String,
expMonth: 0,
expYear: 0,
cvc: String,
name: String,
addressCity: String,
addressCountry: String,
addressLine1: String,
addressLine2: String,
addressState: String,
addressZip: String,
cvcCheck: Unknown,
addressLine1Check: String,
addressZipCheck: String,
funding: String,
fingerprint: String,
customer: String,
country: String,
id: String,
object: unknown
}
],
id: String,
object: unknown
},
subscriptions:
{
url: String,
totalCount: 0,
hasMore: False,
data:
[
{
currentPeriodEnd: 0001-01-01,
status: Unknown,
plan:
{
amount: 0,
created: 0001-01-01,
currency: String,
interval: month,
intervalCount: 0,
livemode: False,
metadata:
{
String: String
},
nickname: String,
product: String,
trialPeriodDays: 0,
id: String,
object: unknown
},
currentPeriodStart: 0001-01-01,
start: 0001-01-01,
trialStart: 0001-01-01,
cancelAtPeriodEnd: False,
trialEnd: 0001-01-01,
canceledAt: 0001-01-01,
endedAt: 0001-01-01,
customer: String,
quantity: 0,
id: String,
object: unknown
}
],
id: String,
object: unknown
},
deleted: False,
currency: String,
id: String,
object: unknown
}