| POST | /integrations/api/{tokenType}/charge/token |
|---|
import Foundation
import ServiceStack
public class ChargeTokenRq : ChargeTokenRqBase
{
required public init(){ super.init() }
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
}
}
public class ChargeTokenRqBase : IChapterAuthorizationRequest, IApiResultErrorService, Codable
{
public var tokenType:String?
public var amount:Int?
public var Description:String?
public var options:ChargeTokenOptions?
public var cardInfo:CreditCardChargeItem?
public var achInfo:AchChargeItem?
public var referenceIds:[ReferenceIdTypedAssociationItem] = []
required public init(){}
}
public class ChargeTokenOptions : Codable
{
public var usages:Int?
public var duration:Int?
required public init(){}
}
public class CreditCardChargeItem : Codable
{
public var nameOnCard:String?
public var expMonth:Int?
public var expYear:Int?
public var cardNumber:String?
public var cvv:String?
public var address:CreditCardBillingAddressItem?
required public init(){}
}
public class CreditCardBillingAddressItem : Codable
{
public var address1:String?
public var address2:String?
public var city:String?
public var postalCode:String?
public var region:String?
public var country:String?
public var attributes:[AttributeItem] = []
required public init(){}
}
public class AttributeItem : Codable
{
public var name:String?
public var value:String?
required public init(){}
}
public class AchChargeItem : Codable
{
public var accountNumber:String?
public var routingNumber:String?
public var accountType:String?
public var accountHolderName:String?
required public init(){}
}
public class ReferenceIdTypedAssociationItem : Codable
{
public var value:String?
public var type:String?
required public init(){}
}
public class ChargeTokenRs : Codable
{
public var token:String?
public var organizationId:Int?
public var chapterId:Int?
public var amount:Int?
public var tokenType:String?
public var Description:String?
public var expiresOn:Date?
public var currency:String?
public var usages:Int?
public var cardDetails:CreditCardChargeDetails?
public var achDetails:AchChargeDetails?
required public init(){}
}
public class CreditCardChargeDetails : Codable
{
public var cardType:String?
public var expMonth:Int?
public var expYear:Int?
public var last4:String?
public var address:CreditCardBillingAddressItem?
public var verificationResult:CreditCardChargeVerificationResult?
required public init(){}
}
public class CreditCardChargeVerificationResult : Codable
{
public var networkVerificationAttempted:Bool?
public var cvvVerificationResult:String?
public var addressVerificationResult:String?
public var postalCodeVerificationResult:String?
required public init(){}
}
public class AchChargeDetails : Codable
{
public var accountType:String?
public var routingNumber:String?
public var accountNumberLast4:String?
public var bankName:String?
public var verificationResult:AchChargeVerificationResult?
required public init(){}
}
public class AchChargeVerificationResult : Codable
{
public var networkVerificationAttempted:Bool?
public var result:String?
required public init(){}
}
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 /integrations/api/{tokenType}/charge/token HTTP/1.1
Host: devapi.billhighway.com
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
tokenType: String,
Amount: 0,
Description: String,
Options:
{
Usages: 0,
Duration: 0
},
CardInfo:
{
NameOnCard: String,
ExpMonth: 0,
ExpYear: 0,
CardNumber: String,
Cvv: String,
Address:
{
Address1: String,
Address2: String,
City: String,
PostalCode: String,
Region: String,
Country: String,
Attributes:
[
{
Name: String,
Value: String
}
]
}
},
AchInfo:
{
AccountNumber: String,
RoutingNumber: String,
AccountType: String,
AccountHolderName: String
},
ReferenceIds:
[
{
Value: String,
Type: String
}
]
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
Token: String,
OrganizationId: 0,
ChapterId: 0,
Amount: 0,
TokenType: String,
Description: String,
ExpiresOn: 0001-01-01,
Currency: String,
Usages: 0,
CardDetails:
{
CardType: String,
ExpMonth: 0,
ExpYear: 0,
Last4: String,
Address:
{
Address1: String,
Address2: String,
City: String,
PostalCode: String,
Region: String,
Country: String,
Attributes:
[
{
Name: String,
Value: String
}
]
},
VerificationResult:
{
NetworkVerificationAttempted: False,
CvvVerificationResult: String,
AddressVerificationResult: String,
PostalCodeVerificationResult: String
}
},
AchDetails:
{
AccountType: String,
RoutingNumber: String,
AccountNumberLast4: String,
BankName: String,
VerificationResult:
{
NetworkVerificationAttempted: False,
Result: String
}
}
}