GET | /sales/paymentProfile/balanceInquiry | Look up Factor 4 gift card balance | This endpoint has two inquiry styles. If only the AcctToken is provided, it can look up balance of a factor4 gift card that has already been imported into ClubReady. If both PaymentProfile and AcctToken are provided, this endpoint will add the profile to the user before looking up the balance. If you provide both parameters, a separate call to 'sales/paymentProfile/import' is unnecessary. The AcctToken and ProfileToken are created by the ClubReadyGateway API. |
---|
import Foundation
import ServiceStack
// @ApiResponse(Description="Looks up the balance of a payment profile created by the Vault API", ResponseType=typeof(PaymentProfileBalanceInquiryResponse), StatusCode=200)
public class PaymentProfileBalanceInquiryEndpoint : PaymentProfileBalanceInquiryRequest, IApiKeyEndpoint
{
/**
* Api Authentication Key
*/
// @ApiMember(Description="Api Authentication Key", IsRequired=true, ParameterType="query")
public var apiKey:String
/**
* Store Id
*/
// @ApiMember(Description="Store Id", IsRequired=true, ParameterType="query")
public var storeId:Int
/**
* Encoded data uniquely identifying the payment profile. Long term storage of AcctToken is not recommended, as the token may change over time (for example, by processes like Account Updater). The length is usually 80 characters.
*/
// @ApiMember(Description="\r\nEncoded data uniquely identifying the payment profile. \r\nLong term storage of AcctToken is not recommended, as the token may change over time (for example, by processes like Account Updater). \r\nThe length is usually 80 characters.", IsRequired=true)
public var acctToken:String
/**
* Encoded data containing non-PCI information about the Payment Profile. ProfileTokens contain a timestamp. If the ClubReady API does not process the token within 5 minutes,it cannot be accepted and a new profile will have to be created with a new AcctToken. The timevalidation is to prevent old tokens from be re-played at a later time. The length is variable, but generally around 1,000 characters.
*/
// @ApiMember(Description="\r\nEncoded data containing non-PCI information about the Payment Profile. \r\n\r\nProfileTokens contain a timestamp. If the ClubReady API does not process the token within 5 minutes,\r\nit cannot be accepted and a new profile will have to be created with a new AcctToken. The time\r\nvalidation is to prevent old tokens from be re-played at a later time. \r\n\r\nThe length is variable, but generally around 1,000 characters.")
public var profileToken:String
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case apiKey
case storeId
case acctToken
case profileToken
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
apiKey = try container.decodeIfPresent(String.self, forKey: .apiKey)
storeId = try container.decodeIfPresent(Int.self, forKey: .storeId)
acctToken = try container.decodeIfPresent(String.self, forKey: .acctToken)
profileToken = try container.decodeIfPresent(String.self, forKey: .profileToken)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if apiKey != nil { try container.encode(apiKey, forKey: .apiKey) }
if storeId != nil { try container.encode(storeId, forKey: .storeId) }
if acctToken != nil { try container.encode(acctToken, forKey: .acctToken) }
if profileToken != nil { try container.encode(profileToken, forKey: .profileToken) }
}
}
public class PaymentProfileBalanceInquiryRequest : Codable
{
public var terminalIpAddress:String
public var acctToken:String
public var profileToken:String
public var storeId:Int
required public init(){}
}
public class PamentProfileBalanceInquiryEndpointResponse : Codable
{
public var success:Bool
public var last4:String
public var accountBalance:Double?
public var responseCode:String
public var message:String
required public init(){}
}
Swift PaymentProfileBalanceInquiryEndpoint 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.
GET /sales/paymentProfile/balanceInquiry HTTP/1.1 Host: clubready.com Accept: text/jsv
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { Success: False, Last4: String, AccountBalance: 0, ResponseCode: String, Message: String }