POST | /ACHDebit |
---|
import 'package:servicestack/servicestack.dart';
// @DataContract
class InOutTimes implements IConvertible
{
InOutTimes();
InOutTimes.fromJson(Map<String, dynamic> json) : super();
fromMap(Map<String, dynamic> json) {
return this;
}
Map<String, dynamic> toJson() => {};
getTypeName() => "InOutTimes";
TypeContext? context = _ctx;
}
// @DataContract
class RequestTimestamps implements IConvertible
{
// @DataMember(EmitDefaultValue=false)
InOutTimes? AppLayer;
// @DataMember(EmitDefaultValue=false)
InOutTimes? ParentLookup;
// @DataMember(EmitDefaultValue=false)
InOutTimes? RetryLookup;
// @DataMember(EmitDefaultValue=false)
InOutTimes? GetCardData;
// @DataMember(EmitDefaultValue=false)
InOutTimes? CardTokenize;
// @DataMember(EmitDefaultValue=false)
InOutTimes? CardEncrypt;
// @DataMember(EmitDefaultValue=false)
InOutTimes? DBInsert;
// @DataMember(EmitDefaultValue=false)
InOutTimes? BackendProcess;
// @DataMember(EmitDefaultValue=false)
InOutTimes? DBUpdate;
// @DataMember(EmitDefaultValue=false)
InOutTimes? ParentUpdate;
// @DataMember(EmitDefaultValue=false)
InOutTimes? Network;
RequestTimestamps({this.AppLayer,this.ParentLookup,this.RetryLookup,this.GetCardData,this.CardTokenize,this.CardEncrypt,this.DBInsert,this.BackendProcess,this.DBUpdate,this.ParentUpdate,this.Network});
RequestTimestamps.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
AppLayer = JsonConverters.fromJson(json['AppLayer'],'InOutTimes',context!);
ParentLookup = JsonConverters.fromJson(json['ParentLookup'],'InOutTimes',context!);
RetryLookup = JsonConverters.fromJson(json['RetryLookup'],'InOutTimes',context!);
GetCardData = JsonConverters.fromJson(json['GetCardData'],'InOutTimes',context!);
CardTokenize = JsonConverters.fromJson(json['CardTokenize'],'InOutTimes',context!);
CardEncrypt = JsonConverters.fromJson(json['CardEncrypt'],'InOutTimes',context!);
DBInsert = JsonConverters.fromJson(json['DBInsert'],'InOutTimes',context!);
BackendProcess = JsonConverters.fromJson(json['BackendProcess'],'InOutTimes',context!);
DBUpdate = JsonConverters.fromJson(json['DBUpdate'],'InOutTimes',context!);
ParentUpdate = JsonConverters.fromJson(json['ParentUpdate'],'InOutTimes',context!);
Network = JsonConverters.fromJson(json['Network'],'InOutTimes',context!);
return this;
}
Map<String, dynamic> toJson() => {
'AppLayer': JsonConverters.toJson(AppLayer,'InOutTimes',context!),
'ParentLookup': JsonConverters.toJson(ParentLookup,'InOutTimes',context!),
'RetryLookup': JsonConverters.toJson(RetryLookup,'InOutTimes',context!),
'GetCardData': JsonConverters.toJson(GetCardData,'InOutTimes',context!),
'CardTokenize': JsonConverters.toJson(CardTokenize,'InOutTimes',context!),
'CardEncrypt': JsonConverters.toJson(CardEncrypt,'InOutTimes',context!),
'DBInsert': JsonConverters.toJson(DBInsert,'InOutTimes',context!),
'BackendProcess': JsonConverters.toJson(BackendProcess,'InOutTimes',context!),
'DBUpdate': JsonConverters.toJson(DBUpdate,'InOutTimes',context!),
'ParentUpdate': JsonConverters.toJson(ParentUpdate,'InOutTimes',context!),
'Network': JsonConverters.toJson(Network,'InOutTimes',context!)
};
getTypeName() => "RequestTimestamps";
TypeContext? context = _ctx;
}
// @DataContract
class PaysecureResponseInternal implements IConvertible
{
// @DataMember(EmitDefaultValue=false)
RequestTimestamps? Timestamps;
PaysecureResponseInternal({this.Timestamps});
PaysecureResponseInternal.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Timestamps = JsonConverters.fromJson(json['Timestamps'],'RequestTimestamps',context!);
return this;
}
Map<String, dynamic> toJson() => {
'Timestamps': JsonConverters.toJson(Timestamps,'RequestTimestamps',context!)
};
getTypeName() => "PaysecureResponseInternal";
TypeContext? context = _ctx;
}
// @DataContract
class ACHExtendedDataResponse implements IConvertible
{
// @DataMember(EmitDefaultValue=false)
String? NetworkResponseCode;
// @DataMember(EmitDefaultValue=false)
String? NetworkErrorCode;
// @DataMember(EmitDefaultValue=false)
String? DeclineReferenceCode;
// @DataMember(EmitDefaultValue=false)
String? NetworkTransactionId;
ACHExtendedDataResponse({this.NetworkResponseCode,this.NetworkErrorCode,this.DeclineReferenceCode,this.NetworkTransactionId});
ACHExtendedDataResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
NetworkResponseCode = json['NetworkResponseCode'];
NetworkErrorCode = json['NetworkErrorCode'];
DeclineReferenceCode = json['DeclineReferenceCode'];
NetworkTransactionId = json['NetworkTransactionId'];
return this;
}
Map<String, dynamic> toJson() => {
'NetworkResponseCode': NetworkResponseCode,
'NetworkErrorCode': NetworkErrorCode,
'DeclineReferenceCode': DeclineReferenceCode,
'NetworkTransactionId': NetworkTransactionId
};
getTypeName() => "ACHExtendedDataResponse";
TypeContext? context = _ctx;
}
// @DataContract
class AchPaysecureVersion extends PaysecureResponseInternal implements IConvertible
{
// @DataMember(EmitDefaultValue=false)
String? LocalDateTime;
// @DataMember(EmitDefaultValue=false)
ACHExtendedDataResponse? ExtendedData;
AchPaysecureVersion({this.LocalDateTime,this.ExtendedData});
AchPaysecureVersion.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
super.fromMap(json);
LocalDateTime = json['LocalDateTime'];
ExtendedData = JsonConverters.fromJson(json['ExtendedData'],'ACHExtendedDataResponse',context!);
return this;
}
Map<String, dynamic> toJson() => super.toJson()..addAll({
'LocalDateTime': LocalDateTime,
'ExtendedData': JsonConverters.toJson(ExtendedData,'ACHExtendedDataResponse',context!)
});
getTypeName() => "AchPaysecureVersion";
TypeContext? context = _ctx;
}
// @DataContract
class AchProviderResponse implements IConvertible
{
// @DataMember
String? NetworkResponseCode;
// @DataMember
int? TransactionStatusCode;
AchProviderResponse({this.NetworkResponseCode,this.TransactionStatusCode});
AchProviderResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
NetworkResponseCode = json['NetworkResponseCode'];
TransactionStatusCode = json['TransactionStatusCode'];
return this;
}
Map<String, dynamic> toJson() => {
'NetworkResponseCode': NetworkResponseCode,
'TransactionStatusCode': TransactionStatusCode
};
getTypeName() => "AchProviderResponse";
TypeContext? context = _ctx;
}
// @DataContract
class AchAuthorizeDebit extends AchPaysecureVersion implements IConvertible
{
// @DataMember
String? TranId;
// @DataMember
String? ApprovalCode;
// @DataMember
String? ResponseCode;
// @DataMember
String? Network;
// @DataMember
int? ApprovedAmount;
// @DataMember
String? ErrorMessage;
// @DataMember
String? ErrorCode;
// @DataMember(EmitDefaultValue=false)
AchProviderResponse? AchProviderDetails;
AchAuthorizeDebit({this.TranId,this.ApprovalCode,this.ResponseCode,this.Network,this.ApprovedAmount,this.ErrorMessage,this.ErrorCode,this.AchProviderDetails});
AchAuthorizeDebit.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
super.fromMap(json);
TranId = json['TranId'];
ApprovalCode = json['ApprovalCode'];
ResponseCode = json['ResponseCode'];
Network = json['Network'];
ApprovedAmount = json['ApprovedAmount'];
ErrorMessage = json['ErrorMessage'];
ErrorCode = json['ErrorCode'];
AchProviderDetails = JsonConverters.fromJson(json['AchProviderDetails'],'AchProviderResponse',context!);
return this;
}
Map<String, dynamic> toJson() => super.toJson()..addAll({
'TranId': TranId,
'ApprovalCode': ApprovalCode,
'ResponseCode': ResponseCode,
'Network': Network,
'ApprovedAmount': ApprovedAmount,
'ErrorMessage': ErrorMessage,
'ErrorCode': ErrorCode,
'AchProviderDetails': JsonConverters.toJson(AchProviderDetails,'AchProviderResponse',context!)
});
getTypeName() => "AchAuthorizeDebit";
TypeContext? context = _ctx;
}
class RequestorCredentials implements IConvertible
{
// @Required()
String? MerchantId;
// @Required()
String? UserName;
// @Required()
String? Password;
// @Required()
String? Version;
RequestorCredentials({this.MerchantId,this.UserName,this.Password,this.Version});
RequestorCredentials.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
MerchantId = json['MerchantId'];
UserName = json['UserName'];
Password = json['Password'];
Version = json['Version'];
return this;
}
Map<String, dynamic> toJson() => {
'MerchantId': MerchantId,
'UserName': UserName,
'Password': Password,
'Version': Version
};
getTypeName() => "RequestorCredentials";
TypeContext? context = _ctx;
}
enum ACHType
{
Token,
CPToken,
}
class ACHTokenDescriptor implements IConvertible
{
ACHType? ACHTokenType;
String? ACHTokenData;
ACHTokenDescriptor({this.ACHTokenType,this.ACHTokenData});
ACHTokenDescriptor.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ACHTokenType = JsonConverters.fromJson(json['ACHTokenType'],'ACHType',context!);
ACHTokenData = json['ACHTokenData'];
return this;
}
Map<String, dynamic> toJson() => {
'ACHTokenType': JsonConverters.toJson(ACHTokenType,'ACHType',context!),
'ACHTokenData': ACHTokenData
};
getTypeName() => "ACHTokenDescriptor";
TypeContext? context = _ctx;
}
// @DataContract
class ACHExtendedData implements IConvertible
{
// @DataMember
int? CashbackAmount;
// @DataMember
String? ConnectPaySubScriberId;
// @DataMember
String? OrganizationId;
// @DataMember
String? DeviceFingerPrint;
// @DataMember
String? MerchantSessionId;
// @DataMember
String? CurrencyCode;
// @DataMember
String? PaymentType;
// @DataMember
bool? VerifyCustomer;
// @DataMember
String? CustomerExternalId;
// @DataMember
String? Description;
// @DataMember
String? CustomerName;
// @DataMember
String? AddressLine1;
// @DataMember
String? AddressLine2;
// @DataMember
String? City;
// @DataMember
String? State;
// @DataMember
String? Zip;
// @DataMember
String? Country;
// @DataMember
String? Email;
// @DataMember
String? TelephoneNumber;
// @DataMember
String? ReturnUrl;
// @DataMember
String? CancelUrl;
// @DataMember
String? EstablishData;
// @DataMember
String? RedirectUrl;
// @DataMember
int? RetryAttemptCount;
// @DataMember
String? SignatureHashVersion;
// @DataMember
DateTime? DeadlineHashDate;
ACHExtendedData({this.CashbackAmount,this.ConnectPaySubScriberId,this.OrganizationId,this.DeviceFingerPrint,this.MerchantSessionId,this.CurrencyCode,this.PaymentType,this.VerifyCustomer,this.CustomerExternalId,this.Description,this.CustomerName,this.AddressLine1,this.AddressLine2,this.City,this.State,this.Zip,this.Country,this.Email,this.TelephoneNumber,this.ReturnUrl,this.CancelUrl,this.EstablishData,this.RedirectUrl,this.RetryAttemptCount,this.SignatureHashVersion,this.DeadlineHashDate});
ACHExtendedData.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
CashbackAmount = json['CashbackAmount'];
ConnectPaySubScriberId = json['ConnectPaySubScriberId'];
OrganizationId = json['OrganizationId'];
DeviceFingerPrint = json['DeviceFingerPrint'];
MerchantSessionId = json['MerchantSessionId'];
CurrencyCode = json['CurrencyCode'];
PaymentType = json['PaymentType'];
VerifyCustomer = json['VerifyCustomer'];
CustomerExternalId = json['CustomerExternalId'];
Description = json['Description'];
CustomerName = json['CustomerName'];
AddressLine1 = json['AddressLine1'];
AddressLine2 = json['AddressLine2'];
City = json['City'];
State = json['State'];
Zip = json['Zip'];
Country = json['Country'];
Email = json['Email'];
TelephoneNumber = json['TelephoneNumber'];
ReturnUrl = json['ReturnUrl'];
CancelUrl = json['CancelUrl'];
EstablishData = json['EstablishData'];
RedirectUrl = json['RedirectUrl'];
RetryAttemptCount = json['RetryAttemptCount'];
SignatureHashVersion = json['SignatureHashVersion'];
DeadlineHashDate = JsonConverters.fromJson(json['DeadlineHashDate'],'DateTime',context!);
return this;
}
Map<String, dynamic> toJson() => {
'CashbackAmount': CashbackAmount,
'ConnectPaySubScriberId': ConnectPaySubScriberId,
'OrganizationId': OrganizationId,
'DeviceFingerPrint': DeviceFingerPrint,
'MerchantSessionId': MerchantSessionId,
'CurrencyCode': CurrencyCode,
'PaymentType': PaymentType,
'VerifyCustomer': VerifyCustomer,
'CustomerExternalId': CustomerExternalId,
'Description': Description,
'CustomerName': CustomerName,
'AddressLine1': AddressLine1,
'AddressLine2': AddressLine2,
'City': City,
'State': State,
'Zip': Zip,
'Country': Country,
'Email': Email,
'TelephoneNumber': TelephoneNumber,
'ReturnUrl': ReturnUrl,
'CancelUrl': CancelUrl,
'EstablishData': EstablishData,
'RedirectUrl': RedirectUrl,
'RetryAttemptCount': RetryAttemptCount,
'SignatureHashVersion': SignatureHashVersion,
'DeadlineHashDate': JsonConverters.toJson(DeadlineHashDate,'DateTime',context!)
};
getTypeName() => "ACHExtendedData";
TypeContext? context = _ctx;
}
// @DataContract
class AchAuthorizeDebitRequest implements IConvertible
{
// @DataMember
RequestorCredentials? Credentials;
// @DataMember
ACHTokenDescriptor? ACHToken;
// @DataMember
int? Amount;
// @DataMember
String? ReferenceKey;
// @DataMember
String? Custom1;
// @DataMember
String? Custom2;
// @DataMember
String? Custom3;
// @DataMember
String? Custom4;
// @DataMember
String? Custom5;
// @DataMember
String? SignatureHash;
// @DataMember
String? CurrencyCode;
// @DataMember
ACHExtendedData? ExtendedData;
AchAuthorizeDebitRequest({this.Credentials,this.ACHToken,this.Amount,this.ReferenceKey,this.Custom1,this.Custom2,this.Custom3,this.Custom4,this.Custom5,this.SignatureHash,this.CurrencyCode,this.ExtendedData});
AchAuthorizeDebitRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Credentials = JsonConverters.fromJson(json['Credentials'],'RequestorCredentials',context!);
ACHToken = JsonConverters.fromJson(json['ACHToken'],'ACHTokenDescriptor',context!);
Amount = json['Amount'];
ReferenceKey = json['ReferenceKey'];
Custom1 = json['Custom1'];
Custom2 = json['Custom2'];
Custom3 = json['Custom3'];
Custom4 = json['Custom4'];
Custom5 = json['Custom5'];
SignatureHash = json['SignatureHash'];
CurrencyCode = json['CurrencyCode'];
ExtendedData = JsonConverters.fromJson(json['ExtendedData'],'ACHExtendedData',context!);
return this;
}
Map<String, dynamic> toJson() => {
'Credentials': JsonConverters.toJson(Credentials,'RequestorCredentials',context!),
'ACHToken': JsonConverters.toJson(ACHToken,'ACHTokenDescriptor',context!),
'Amount': Amount,
'ReferenceKey': ReferenceKey,
'Custom1': Custom1,
'Custom2': Custom2,
'Custom3': Custom3,
'Custom4': Custom4,
'Custom5': Custom5,
'SignatureHash': SignatureHash,
'CurrencyCode': CurrencyCode,
'ExtendedData': JsonConverters.toJson(ExtendedData,'ACHExtendedData',context!)
};
getTypeName() => "AchAuthorizeDebitRequest";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'api.paysecure.acculynk.net', types: <String, TypeInfo> {
'InOutTimes': TypeInfo(TypeOf.Class, create:() => InOutTimes()),
'RequestTimestamps': TypeInfo(TypeOf.Class, create:() => RequestTimestamps()),
'PaysecureResponseInternal': TypeInfo(TypeOf.Class, create:() => PaysecureResponseInternal()),
'ACHExtendedDataResponse': TypeInfo(TypeOf.Class, create:() => ACHExtendedDataResponse()),
'AchPaysecureVersion': TypeInfo(TypeOf.Class, create:() => AchPaysecureVersion()),
'AchProviderResponse': TypeInfo(TypeOf.Class, create:() => AchProviderResponse()),
'AchAuthorizeDebit': TypeInfo(TypeOf.Class, create:() => AchAuthorizeDebit()),
'RequestorCredentials': TypeInfo(TypeOf.Class, create:() => RequestorCredentials()),
'ACHType': TypeInfo(TypeOf.Enum, enumValues:ACHType.values),
'ACHTokenDescriptor': TypeInfo(TypeOf.Class, create:() => ACHTokenDescriptor()),
'ACHExtendedData': TypeInfo(TypeOf.Class, create:() => ACHExtendedData()),
'AchAuthorizeDebitRequest': TypeInfo(TypeOf.Class, create:() => AchAuthorizeDebitRequest()),
});
Dart AchAuthorizeDebitRequest 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 /ACHDebit HTTP/1.1
Host: api.paysecure.acculynk.net
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
Credentials:
{
MerchantId: String,
UserName: String,
Password: String,
Version: String
},
ACHToken:
{
ACHTokenType: Token,
ACHTokenData: String
},
Amount: 0,
ReferenceKey: String,
Custom1: String,
Custom2: String,
Custom3: String,
Custom4: String,
Custom5: String,
SignatureHash: String,
CurrencyCode: String,
ExtendedData:
{
CashbackAmount: 0,
ConnectPaySubScriberId: String,
OrganizationId: String,
DeviceFingerPrint: String,
MerchantSessionId: String,
CurrencyCode: String,
PaymentType: String,
VerifyCustomer: False,
CustomerExternalId: String,
Description: String,
CustomerName: String,
AddressLine1: String,
AddressLine2: String,
City: String,
State: String,
Zip: String,
Country: String,
Email: String,
TelephoneNumber: String,
ReturnUrl: String,
CancelUrl: String,
EstablishData: String,
RedirectUrl: String,
RetryAttemptCount: 0,
SignatureHashVersion: String,
DeadlineHashDate: 0001-01-01
}
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { TranId: String, ApprovalCode: String, ResponseCode: String, Network: String, ApprovedAmount: 0, ErrorMessage: String, ErrorCode: String, AchProviderDetails: { NetworkResponseCode: String, TransactionStatusCode: 0 }, LocalDateTime: String, ExtendedData: { NetworkResponseCode: String, NetworkErrorCode: String, DeclineReferenceCode: String, NetworkTransactionId: String }, Timestamps: { AppLayer: { InTime: 0001-01-01, OutTime: 0001-01-01 }, ParentLookup: { InTime: 0001-01-01, OutTime: 0001-01-01 }, RetryLookup: { InTime: 0001-01-01, OutTime: 0001-01-01 }, GetCardData: { InTime: 0001-01-01, OutTime: 0001-01-01 }, CardTokenize: { InTime: 0001-01-01, OutTime: 0001-01-01 }, CardEncrypt: { InTime: 0001-01-01, OutTime: 0001-01-01 }, DBInsert: { InTime: 0001-01-01, OutTime: 0001-01-01 }, BackendProcess: { InTime: 0001-01-01, OutTime: 0001-01-01 }, DBUpdate: { InTime: 0001-01-01, OutTime: 0001-01-01 }, ParentUpdate: { InTime: 0001-01-01, OutTime: 0001-01-01 }, Network: { InTime: 0001-01-01, OutTime: 0001-01-01 } } }