PaySecure Pinless Web Services 2023:07:03:07

<back to all web services

AchRefundRequest

The following routes are available for this service:
POST/ACHRefund
namespace Paysecure.ServiceModel

open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    [<DataContract>]
    [<AllowNullLiteral>]
    type InOutTimes() = 
        class end

    [<DataContract>]
    [<AllowNullLiteral>]
    type RequestTimestamps() = 
        [<DataMember(EmitDefaultValue=false)>]
        member val AppLayer:InOutTimes = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val ParentLookup:InOutTimes = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val RetryLookup:InOutTimes = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val GetCardData:InOutTimes = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val CardTokenize:InOutTimes = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val CardEncrypt:InOutTimes = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val DBInsert:InOutTimes = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val BackendProcess:InOutTimes = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val DBUpdate:InOutTimes = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val ParentUpdate:InOutTimes = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val Network:InOutTimes = null with get,set

    [<DataContract>]
    [<AllowNullLiteral>]
    type PaysecureResponseInternal() = 
        [<DataMember(EmitDefaultValue=false)>]
        member val Timestamps:RequestTimestamps = null with get,set

    type CardInfoType =
        | CardNumber = 0
        | Token = 1
        | Track = 2
        | EMV = 3
        | Encrypted = 4
        | DPAN = 5
        | ApplePay = 6
        | GooglePay = 7
        | SamsungPay = 8
        | CPToken = 9
        | EncryptedEnhanced = 10
        | EncryptedJWE = 11

    [<AllowNullLiteral>]
    type CardAccountUpdaterDescriptor() = 
        member val CardDataType:CardInfoType = new CardInfoType() with get,set
        member val CardNumberInfo:String = null with get,set
        member val ExpiryDate:String = null with get,set
        member val Status:String = null with get,set
        member val ErrorCode:String = null with get,set
        member val CardToken:String = null with get,set

    [<DataContract>]
    [<AllowNullLiteral>]
    type ExtendedResponse() = 
        [<DataMember(EmitDefaultValue=false)>]
        member val CardAccountUpdater:CardAccountUpdaterDescriptor = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val ProductId:String = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val NetworkResponseCode:String = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val NetworkTransactionId:String = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val CHEmailAddrResult:String = null with get,set

    [<DataContract>]
    [<AllowNullLiteral>]
    type PaysecureVersion() = 
        inherit PaysecureResponseInternal()
        [<DataMember(EmitDefaultValue=false)>]
        member val LocalDateTime:String = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val Token:String = null with get,set

        [<DataMember(EmitDefaultValue=false)>]
        member val ExtendedData:ExtendedResponse = null with get,set

    [<DataContract>]
    [<AllowNullLiteral>]
    type Refund() = 
        inherit PaysecureVersion()
        [<DataMember>]
        member val TranId:String = null with get,set

        [<DataMember>]
        member val ApprovalCode:String = null with get,set

        [<DataMember>]
        member val ResponseCode:String = null with get,set

        [<DataMember>]
        member val Network:String = null with get,set

        [<DataMember>]
        member val ErrorMessage:String = null with get,set

        [<DataMember>]
        member val ErrorCode:String = null with get,set

    [<AllowNullLiteral>]
    type RequestorCredentials() = 
        [<Required>]
        member val MerchantId:String = null with get,set

        [<Required>]
        member val UserName:String = null with get,set

        [<Required>]
        member val Password:String = null with get,set

        [<Required>]
        member val Version:String = null with get,set

    [<AllowNullLiteral>]
    type MerchantDataElements() = 
        member val RefundSettlementTypeDetails:Int32 = new Int32() with get,set
        member val SendRecurringPOSEntryModeFeature:Boolean = new Boolean() with get,set
        member val UseOrgPOSCode:Boolean = new Boolean() with get,set

    [<AllowNullLiteral>]
    type MerchantDescriptorBase() = 
        member val DataElements:MerchantDataElements = null with get,set

    [<AllowNullLiteral>]
    type MerchantDescriptor() = 
        inherit MerchantDescriptorBase()
        member val Name:String = null with get,set
        member val Address:String = null with get,set
        member val City:String = null with get,set
        member val State:String = null with get,set
        member val Zip:String = null with get,set
        member val Country:String = null with get,set
        member val CustomerServiceNumber:String = null with get,set
        member val MCC:String = null with get,set
        member val FNSnum:String = null with get,set
        member val Email:String = null with get,set

    type TelephoneType =
        | D = 0
        | H = 1
        | N = 2
        | W = 3

    [<AllowNullLiteral>]
    type Avs() = 
        member val Address:String = null with get,set
        member val City:String = null with get,set
        member val State:String = null with get,set
        member val Zip:String = null with get,set
        member val Country:String = null with get,set
        member val Email:String = null with get,set
        member val IPAddress:String = null with get,set
        member val TelephoneNumber:String = null with get,set
        member val TelephoneType:TelephoneType = new TelephoneType() with get,set
        member val DeliveryMethod:Int32 = new Int32() with get,set
        member val FirstName:String = null with get,set
        member val MiddleName:String = null with get,set
        member val LastName:String = null with get,set

    [<DataContract>]
    [<AllowNullLiteral>]
    type ACHExtendedData() = 
        [<DataMember>]
        member val CashbackAmount:Int32 = new Int32() with get,set

        [<DataMember>]
        member val ConnectPaySubScriberId:String = null with get,set

        [<DataMember>]
        member val OrganizationId:String = null with get,set

        [<DataMember>]
        member val DeviceFingerPrint:String = null with get,set

        [<DataMember>]
        member val MerchantSessionId:String = null with get,set

        [<DataMember>]
        member val CurrencyCode:String = null with get,set

        [<DataMember>]
        member val PaymentType:String = null with get,set

        [<DataMember>]
        member val VerifyCustomer:Boolean = new Boolean() with get,set

        [<DataMember>]
        member val CustomerExternalId:String = null with get,set

        [<DataMember>]
        member val Description:String = null with get,set

        [<DataMember>]
        member val CustomerName:String = null with get,set

        [<DataMember>]
        member val AddressLine1:String = null with get,set

        [<DataMember>]
        member val AddressLine2:String = null with get,set

        [<DataMember>]
        member val City:String = null with get,set

        [<DataMember>]
        member val State:String = null with get,set

        [<DataMember>]
        member val Zip:String = null with get,set

        [<DataMember>]
        member val Country:String = null with get,set

        [<DataMember>]
        member val Email:String = null with get,set

        [<DataMember>]
        member val TelephoneNumber:String = null with get,set

        [<DataMember>]
        member val ReturnUrl:String = null with get,set

        [<DataMember>]
        member val CancelUrl:String = null with get,set

        [<DataMember>]
        member val EstablishData:String = null with get,set

        [<DataMember>]
        member val RedirectUrl:String = null with get,set

        [<DataMember>]
        member val RetryAttemptCount:Int32 = new Int32() with get,set

        [<DataMember>]
        member val SignatureHashVersion:String = null with get,set

        [<DataMember>]
        member val DeadlineHashDate:Nullable<DateTime> = new Nullable<DateTime>() with get,set

    [<DataContract>]
    [<AllowNullLiteral>]
    type AchRefundRequest() = 
        [<DataMember>]
        member val Credentials:RequestorCredentials = null with get,set

        [<DataMember>]
        member val TranId:String = null with get,set

        [<DataMember>]
        member val Amount:Int32 = new Int32() with get,set

        [<DataMember>]
        member val ReferenceKey:String = null with get,set

        [<DataMember>]
        member val MerchantDetails:MerchantDescriptor = null with get,set

        [<DataMember>]
        member val Custom1:String = null with get,set

        [<DataMember>]
        member val Custom2:String = null with get,set

        [<DataMember>]
        member val Custom3:String = null with get,set

        [<DataMember>]
        member val Custom4:String = null with get,set

        [<DataMember>]
        member val Custom5:String = null with get,set

        [<DataMember>]
        member val SignatureHash:String = null with get,set

        [<DataMember>]
        member val AVS:Avs = null with get,set

        [<DataMember>]
        member val ExtendedData:ACHExtendedData = null with get,set

F# AchRefundRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /ACHRefund 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
	},
	TranId: String,
	Amount: 0,
	ReferenceKey: String,
	MerchantDetails: 
	{
		Name: String,
		Address: String,
		City: String,
		State: String,
		Zip: String,
		Country: String,
		CustomerServiceNumber: String,
		MCC: String,
		FNSnum: String,
		Email: String,
		DataElements: 
		{
			RefundSettlementTypeDetails: 0,
			SendRecurringPOSEntryModeFeature: False,
			UseOrgPOSCode: False
		}
	},
	Custom1: String,
	Custom2: String,
	Custom3: String,
	Custom4: String,
	Custom5: String,
	SignatureHash: String,
	AVS: 
	{
		Address: String,
		City: String,
		State: String,
		Zip: String,
		Country: String,
		Email: String,
		IPAddress: String,
		TelephoneNumber: String,
		TelephoneType: D,
		DeliveryMethod: 0,
		FirstName: String,
		MiddleName: String,
		LastName: 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,
	ErrorMessage: String,
	ErrorCode: String,
	LocalDateTime: String,
	Token: String,
	ExtendedData: 
	{
		CardAccountUpdater: 
		{
			CardDataType: CardNumber,
			CardNumberInfo: String,
			ExpiryDate: String,
			Status: String,
			ErrorCode: String,
			CardToken: String
		},
		ProductId: String,
		NetworkResponseCode: String,
		NetworkTransactionId: String,
		CHEmailAddrResult: 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
		}
	}
}