Documentation ¶
Overview ¶
Version will be automatically set during the build
Index ¶
- Variables
- func IsBitmapFlag(i int) bool
- type Message
- func (m *Message) BinaryField(id int, val []byte) error
- func (m *Message) Bitmap() *field.Bitmap
- func (m *Message) Data() interface{}
- func (m *Message) Field(id int, val string) error
- func (m *Message) GetBytes(id int) ([]byte, error)
- func (m *Message) GetField(id int) field.Field
- func (m *Message) GetFields() map[int]field.Field
- func (m *Message) GetMTI() (string, error)
- func (m *Message) GetSpec() *MessageSpec
- func (m *Message) GetString(id int) (string, error)
- func (m *Message) MTI(val string)
- func (m *Message) MarshalJSON() ([]byte, error)
- func (m *Message) Pack() ([]byte, error)
- func (m *Message) SetData(data interface{}) error
- func (m *Message) Unpack(src []byte) error
- type MessageSpec
- type MesssageTypeIndicator
Constants ¶
This section is empty.
Variables ¶
var Version string
Functions ¶
func IsBitmapFlag ¶ added in v0.5.20
IsBitmapFlag validate if field is a bitmap flag The presence of the second bitmap is defined in the first bit of the first bitmap (bit 1). The presence of the third bitmap is defined in the first bit of the second bitmap (bit 65). The presence of the fourth bitmap is defined in the first bit of the third bitmap (bit 129).
Types ¶
type Message ¶
type Message struct {
// contains filtered or unexported fields
}
func NewMessage ¶
func NewMessage(spec *MessageSpec) *Message
func (*Message) GetSpec ¶
func (m *Message) GetSpec() *MessageSpec
func (*Message) MarshalJSON ¶
type MessageSpec ¶
var Spec87 *MessageSpec = &MessageSpec{ Name: "ISO 8583 v1987 ASCII", Fields: map[int]field.Field{ 0: field.NewString(&field.Spec{ Length: 4, Description: "Message Type Indicator", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 1: field.NewBitmap(&field.Spec{ Length: 16, Description: "Bitmap", Enc: encoding.Hex, Pref: prefix.Hex.Fixed, }), 2: field.NewString(&field.Spec{ Length: 19, Description: "Primary Account Number", Enc: encoding.ASCII, Pref: prefix.ASCII.LL, }), 3: field.NewNumeric(&field.Spec{ Length: 6, Description: "Processing Code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 4: field.NewString(&field.Spec{ Length: 12, Description: "Transaction Amount", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, Pad: padding.Left('0'), }), 5: field.NewString(&field.Spec{ Length: 12, Description: "Settlement Amount", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, Pad: padding.Left('0'), }), 6: field.NewString(&field.Spec{ Length: 12, Description: "Billing Amount", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, Pad: padding.Left('0'), }), 7: field.NewString(&field.Spec{ Length: 10, Description: "Transmission Date & Time", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 8: field.NewString(&field.Spec{ Length: 8, Description: "Billing Fee Amount", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 9: field.NewString(&field.Spec{ Length: 8, Description: "Settlement Conversion Rate", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 10: field.NewString(&field.Spec{ Length: 8, Description: "Cardholder Billing Conversion Rate", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 11: field.NewString(&field.Spec{ Length: 6, Description: "Systems Trace Audit Number (STAN)", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 12: field.NewString(&field.Spec{ Length: 6, Description: "Local Transaction Time", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 13: field.NewString(&field.Spec{ Length: 4, Description: "Local Transaction Date", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 14: field.NewString(&field.Spec{ Length: 4, Description: "Expiration Date", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 15: field.NewString(&field.Spec{ Length: 4, Description: "Settlement Date", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 16: field.NewString(&field.Spec{ Length: 4, Description: "Currency Conversion Date", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 17: field.NewString(&field.Spec{ Length: 4, Description: "Capture Date", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 18: field.NewString(&field.Spec{ Length: 4, Description: "Merchant Type", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 19: field.NewString(&field.Spec{ Length: 3, Description: "Acquiring Institution Country Code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 20: field.NewString(&field.Spec{ Length: 3, Description: "PAN Extended Country Code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 21: field.NewString(&field.Spec{ Length: 3, Description: "Forwarding Institution Country Code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 22: field.NewString(&field.Spec{ Length: 3, Description: "Point of Sale (POS) Entry Mode", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 23: field.NewString(&field.Spec{ Length: 3, Description: "Card Sequence Number (CSN)", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 24: field.NewString(&field.Spec{ Length: 3, Description: "Function Code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 25: field.NewString(&field.Spec{ Length: 2, Description: "Point of Service Condition Code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 26: field.NewString(&field.Spec{ Length: 2, Description: "Point of Service PIN Capture Code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 27: field.NewString(&field.Spec{ Length: 1, Description: "Authorizing Identification Response Length", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 28: field.NewString(&field.Spec{ Length: 9, Description: "Transaction Fee Amount", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 29: field.NewString(&field.Spec{ Length: 9, Description: "Settlement Fee Amount", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 30: field.NewString(&field.Spec{ Length: 9, Description: "Transaction Processing Fee Amount", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 31: field.NewString(&field.Spec{ Length: 9, Description: "Settlement Processing Fee Amount", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 32: field.NewString(&field.Spec{ Length: 11, Description: "Acquiring Institution Identification Code", Enc: encoding.ASCII, Pref: prefix.ASCII.LL, }), 33: field.NewString(&field.Spec{ Length: 11, Description: "Forwarding Institution Identification Code", Enc: encoding.ASCII, Pref: prefix.ASCII.LL, }), 34: field.NewString(&field.Spec{ Length: 28, Description: "Extended Primary Account Number", Enc: encoding.ASCII, Pref: prefix.ASCII.LL, }), 35: field.NewString(&field.Spec{ Length: 37, Description: "Track 2 Data", Enc: encoding.ASCII, Pref: prefix.ASCII.LL, }), 36: field.NewString(&field.Spec{ Length: 104, Description: "Track 3 Data", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 37: field.NewString(&field.Spec{ Length: 12, Description: "Retrieval Reference Number", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 38: field.NewString(&field.Spec{ Length: 6, Description: "Authorization Identification Response", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 39: field.NewString(&field.Spec{ Length: 2, Description: "Response Code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 40: field.NewString(&field.Spec{ Length: 3, Description: "Service Restriction Code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 41: field.NewString(&field.Spec{ Length: 8, Description: "Card Acceptor Terminal Identification", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 42: field.NewString(&field.Spec{ Length: 15, Description: "Card Acceptor Identification Code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 43: field.NewString(&field.Spec{ Length: 40, Description: "Card Acceptor Name/Location", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 44: field.NewString(&field.Spec{ Length: 99, Description: "Additional Data", Enc: encoding.ASCII, Pref: prefix.ASCII.LL, }), 45: field.NewString(&field.Spec{ Length: 76, Description: "Track 1 Data", Enc: encoding.ASCII, Pref: prefix.ASCII.LL, }), 46: field.NewString(&field.Spec{ Length: 999, Description: "Additional data (ISO)", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 47: field.NewString(&field.Spec{ Length: 999, Description: "Additional data (National)", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 48: field.NewString(&field.Spec{ Length: 999, Description: "Additional data (Private)", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 49: field.NewString(&field.Spec{ Length: 3, Description: "Transaction Currency Code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 50: field.NewString(&field.Spec{ Length: 3, Description: "Settlement Currency Code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 51: field.NewString(&field.Spec{ Length: 3, Description: "Cardholder Billing Currency Code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 52: field.NewString(&field.Spec{ Length: 8, Description: "PIN Data", Enc: encoding.Hex, Pref: prefix.Hex.Fixed, }), 53: field.NewString(&field.Spec{ Length: 16, Description: "Security Related Control Information", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 54: field.NewString(&field.Spec{ Length: 120, Description: "Additional Amounts", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 55: field.NewString(&field.Spec{ Length: 999, Description: "ICC Data – EMV Having Multiple Tags", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 56: field.NewString(&field.Spec{ Length: 999, Description: "Reserved (ISO)", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 57: field.NewString(&field.Spec{ Length: 999, Description: "Reserved (National)", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 58: field.NewString(&field.Spec{ Length: 999, Description: "Reserved (National)", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 59: field.NewString(&field.Spec{ Length: 999, Description: "Reserved (National)", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 60: field.NewString(&field.Spec{ Length: 999, Description: "Reserved (National)", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 61: field.NewString(&field.Spec{ Length: 999, Description: "Reserved (Private)", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 62: field.NewString(&field.Spec{ Length: 999, Description: "Reserved (Private)", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 63: field.NewString(&field.Spec{ Length: 999, Description: "Reserved (Private)", Enc: encoding.ASCII, Pref: prefix.ASCII.LLL, }), 64: field.NewString(&field.Spec{ Length: 8, Description: "Message Authentication Code (MAC)", Enc: encoding.Hex, Pref: prefix.Hex.Fixed, }), 70: field.NewString(&field.Spec{ Length: 3, Description: "Network management information code", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), 90: field.NewString(&field.Spec{ Length: 42, Description: "Original Data Elements", Enc: encoding.ASCII, Pref: prefix.ASCII.Fixed, }), }, }
keep it here for a little while for compatibility all new specs and updates to Spec87 should go to ./specs
func (*MessageSpec) CreateMessageFields ¶
func (s *MessageSpec) CreateMessageFields() map[int]field.Field
Creates a map with new instances of Fields (Field interface) based on the field type in MessageSpec.
type MesssageTypeIndicator ¶
type MesssageTypeIndicator string
MesssageTypeIndicator message type indicator is a four-digit numeric field which indicates the overall function of the ISO 8583:1987 message
const ( // AuthorizationRequest is a request from a point-of-sale terminal for authorization for a cardholder purchase AuthorizationRequest MesssageTypeIndicator = "0100" // AuthorizationResponse is a request response to a point-of-sale terminal for authorization for a cardholder purchase AuthorizationResponse MesssageTypeIndicator = "0110" // AuthorizationAdvice is when the point-of-sale device breaks down and you have to sign a voucher AuthorizationAdvice MesssageTypeIndicator = "0120" // AuthorizationAdviceRepeat used top repeat If the advice times out AuthorizationAdviceRepeat MesssageTypeIndicator = "0121" // IssuerResponseToAuthorizationAdvice is a confirmation of receipt of authorization advice IssuerResponseToAuthorizationAdvice MesssageTypeIndicator = "0130" // AcquirerFinancialRequest is a request for funds, typically from an ATM or pinned point-of-sale device AcquirerFinancialRequest MesssageTypeIndicator = "0200" // IssuerResponseToFinancialRequest is a issuer response to request for funds IssuerResponseToFinancialRequest MesssageTypeIndicator = "0210" // AcquirerFinancialAdvice is used to complete transaction initiated with authorization request. e.g. Checkout at a hotel. AcquirerFinancialAdvice MesssageTypeIndicator = "0220" // AcquirerFinancialAdviceRepeat is used if the advice times out AcquirerFinancialAdviceRepeat MesssageTypeIndicator = "0221" // IssuerResponseToFinancialAdvice is a confirmation of receipt of financial advice IssuerResponseToFinancialAdvice MesssageTypeIndicator = "0230" // BatchUpload is a file update/transfer advice BatchUpload MesssageTypeIndicator = "0320" // BatchUploadResponse is a file update/transfer advice response BatchUploadResponse MesssageTypeIndicator = "0330" // AcquirerReversalRequest is used to reverses a transaction AcquirerReversalRequest MesssageTypeIndicator = "0400" // AcquirerReversalAdvice AcquirerReversalAdvice MesssageTypeIndicator = "0420" // AcquirerReversalAdviceResponse AcquirerReversalAdviceResponse MesssageTypeIndicator = "0430" // BatchSettlementResponse is a card acceptor reconciliation request response BatchSettlementResponse MesssageTypeIndicator = "0510" // NetworkManagementRequest is used in hypercom terminals initialize request. Echo test, logon, logoff etc NetworkManagementRequest MesssageTypeIndicator = "0800" // NetworkManagementResponse is a hypercom terminals initialize response. Echo test, logon, logoff etc. NetworkManagementResponse MesssageTypeIndicator = "0810" // NetworkManagementAdvice is a key change NetworkManagementAdvice MesssageTypeIndicator = "0820" )