Class FinSepaOrderBuilder
Abstract base class for single and multiple, postdated and direct SEPA credit transfer and/or SEPA direct debit orders.
Inheritance
Inherited Members
Namespace: Subsembly.FinTS
Assembly: Subsembly.FinTS.Core.dll
Syntax
public abstract class FinSepaOrderBuilder : FinOrderBuilder
Constructors
FinSepaOrderBuilder(FinContact, SepaMessageType, Boolean)
Creates a new SEPA order builder with the preferred account type class FinAcctTypeClass.Giro.
Declaration
protected FinSepaOrderBuilder(FinContact aContact, SepaMessageType nMessageType, bool fIsMultOrderBuilder = false)
Parameters
Type | Name | Description |
---|---|---|
FinContact | aContact | The contact for which the order builder shall create orders. This is used to get
the FinTS version, the bank parameter data and the user parameter data that are
in effect. This parameter must not be |
SepaMessageType | nMessageType | The type of the SEPA message which can be embedded within this FinTS order. Messages of this type are expected in the SEPA documents which are processed by Build. Currently SepaMessageType.CreditTransferPaymentInitiation and SepaMessageType.DirectDebitPaymentInitiation are supported. |
System.Boolean | fIsMultOrderBuilder | Must be |
Exceptions
Type | Condition |
---|---|
System.ArgumentNullException | Parameter aContact was |
System.ArgumentException | The parameter nMessageType is neither SepaMessageType.CreditTransferPaymentInitiation nor SepaMessageType.DirectDebitPaymentInitiation. |
Properties
IsMultipleOrderBuilder
Is true
if this is a builder for a multiple SEPA order.
Declaration
protected bool IsMultipleOrderBuilder { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
MaxNumberOfTransactions
Maximum number of allowed transaction information items in the SEPA order.
Declaration
public virtual int MaxNumberOfTransactions { get; }
Property Value
Type | Description |
---|---|
System.Int32 |
Remarks
The default implementation always returns 1. Hence, builders for batch order types must override this property accordingly.
MessageType
Messages of this type can be embedded into the generated order segment.
Declaration
public SepaMessageType MessageType { get; }
Property Value
Type | Description |
---|---|
SepaMessageType |
SingleBookgAllowed
Is single booking of batches allowed?
Declaration
public virtual bool SingleBookgAllowed { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
Remarks
The default implementation always returns false. Hence, builders for batch order types must override this property accordingly.
SupportedPainFormats
Returns an array of simple pain identifiers of the supported SEPA pain XML formats.
Declaration
public virtual string[] SupportedPainFormats { get; }
Property Value
Type | Description |
---|---|
System.String[] | The returned array may be empty, but is never |
SupportedPurposeCodes
Optional array of SEPA PurposeCodes supported by this order builder.
Declaration
public virtual string[] SupportedPurposeCodes { get; }
Property Value
Type | Description |
---|---|
System.String[] | The returned array may be empty, but is never |
Remarks
The default implementation in this FinSepaOrderBuilder base class always returns an empty array. Only a few derived specialized builder classes override this property and provide a list of purpose codes from the actual BPD segment.
SupportedSepaFormats
Returns an array with the descriptors (URN) of the SEPA XML formats supported by this builder.
Declaration
public virtual string[] SupportedSepaFormats { get; }
Property Value
Type | Description |
---|---|
System.String[] |
Remarks
The data provided by actual banks is widely different and inconclusive. Thus this information is rather worthless and should be ignored. Use the processed SupportedPainFormats instead.
TotalAmountRequired
Must the total amount be specified in a batch order.
Declaration
public virtual bool TotalAmountRequired { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
Remarks
The default implementation always returns false. Hence, builders for batch order types must override this property accordingly.
Methods
Build(FinAcct, SepaDocument)
Build a SEPA order from a SepaDocument.
Declaration
public FinOrder Build(FinAcct aAcct, SepaDocument aSepaDoc)
Parameters
Type | Name | Description |
---|---|---|
FinAcct | aAcct | The ordering customer account of the order to be built. The given instance must be initialized with a valid IBAN and BIC. |
SepaDocument | aSepaDoc | A completely initialized SEPA payment initiation message document. This must have only a single payment information block. The number of transaction information blocks depends on the order type (single order type or multiple order type). |
Returns
Type | Description |
---|---|
FinOrder |
Remarks
This method should be used if an external SEPA document was loaded and shall be submitted to the bank. In order to create a SEPA payment in code, it is better and easier to create a SepaPaymentInitiation message and use the method Build(FinAcct, SepaPaymentInitiation) instead.
Exceptions
Type | Condition |
---|---|
System.ArgumentNullException | At least one of the parameters was |
System.ArgumentException | The given account did not contain a valid IBAN, or did not contain a valid BIC. Or the given SEPA document was not valid. Or the BIC and IBAN of the given account does not match the BIC and IBAN of the initiator in the SEPA document. |
See Also
Build(FinAcct, SepaPaymentInitiation)
Build a SEPA order from a SepaPaymentInitiation that contains payments.
Declaration
public FinOrder Build(FinAcct aAcct, SepaPaymentInitiation aPainMsg)
Parameters
Type | Name | Description |
---|---|---|
FinAcct | aAcct | The ordering customer account of the order to be built. The given instance must be initialized with a valid IBAN and BIC. |
SepaPaymentInitiation | aPainMsg | A completely initialized SEPA payment initiation message. This must have only a single payment information block. The number of transaction information blocks depends on the order type (single order type or multiple order type). |
Returns
Type | Description |
---|---|
FinOrder |
Remarks
This method automatically finds the highest PAIN version supported by the bank and creates a corresponding SepaDocument.
Exceptions
Type | Condition |
---|---|
System.ArgumentNullException | At least one of the parameters was |
System.ArgumentException | The given account did not contain a valid IBAN, or did not contain a valid BIC. Or the given SEPA document was not valid. Or the BIC and IBAN of the given account does not match the BIC and IBAN of the initiator in the SEPA document. |
System.NotSupportedException | No supported PAIN format could be found. Please check with SupportedPainFormats whether a PAIN format is supported by the bank. |
See Also
BuildSepaSegment(FinSepaRemitt)
Declaration
protected virtual FinSegment BuildSepaSegment(FinSepaRemitt aSepaRemitt)
Parameters
Type | Name | Description |
---|---|---|
FinSepaRemitt | aSepaRemitt |
Returns
Type | Description |
---|---|
FinSegment |
Exceptions
Type | Condition |
---|---|
System.ArgumentException | The PAIN format of the given SEPA remittance document is not supported by the bank. |
Create(FinContact, String)
Creates a new FinSepaOrderBuilder derived instance that is suitable for submitting orders with the given HBCI segment type.
Declaration
public static FinSepaOrderBuilder Create(FinContact aContact, string sSegmentType)
Parameters
Type | Name | Description |
---|---|---|
FinContact | aContact | The contact for which to submit an order. |
System.String | sSegmentType | The segment type of the requested order. |
Returns
Type | Description |
---|---|
FinSepaOrderBuilder | If a suitable builder for the given segment type is available, then it is created
and returned. If the segment type is not supported, then |
FindSepaFormat(String)
Finds the SEPA format descriptor for a given SEPA Pain identifier or a SEPA message XML namespace that contains a Pain identifier.
Declaration
public string FindSepaFormat(string sSepaFormat)
Parameters
Type | Name | Description |
---|---|---|
System.String | sSepaFormat | A SEPA Pain identifier in the format pain.000.000.00, or a SEPA message XML namespace that contains a Pain identifier, or any other string that contains a Pain identifier. |
Returns
Type | Description |
---|---|
System.String | If found, then the first matching SEPA format descriptor from the parameter
segment is returned. If no match was found, then |
Exceptions
Type | Condition |
---|---|
System.ArgumentNullException | The parameter sSepaFormat was |
System.ArgumentException | The parameter sSepaFormat was an empty string, or it did not contain a valid Pain identifier. |
GetSupportedPurposeCodes(Int32)
Gets a sanitized list of purpose codes from the indicated bank parameter element.
Declaration
protected string[] GetSupportedPurposeCodes(int nDE)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | nDE |
Returns
Type | Description |
---|---|
System.String[] |
OnPreparePaymentInformation(FinAcct, SepaPaymentInformation)
Can be reimplemented by derived classes to do further checks/preparations on the given payment information item.
Declaration
protected virtual void OnPreparePaymentInformation(FinAcct aAcct, SepaPaymentInformation aPmtInf)
Parameters
Type | Name | Description |
---|---|---|
FinAcct | aAcct | |
SepaPaymentInformation | aPmtInf |