Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Attachment ¶
type Attachment struct { Nonce string `json:"nonce"` Transaction `json:"transaction"` Operations []Operation `json:"operations"` }
Attachment represents preimage object of compliance protocol in Paydex attachment convention
func (*Attachment) GenerateNonce ¶
func (attachment *Attachment) GenerateNonce()
GenerateNonce generates a nonce and assigns it to `Nonce` field. It does not have to be crypto random. We just want two attachments always have a different hashes.
func (*Attachment) Hash ¶
func (attachment *Attachment) Hash() ([32]byte, error)
Hash returns sha-256 hash of the JSON marshalled attachment.
func (*Attachment) Marshal ¶
func (attachment *Attachment) Marshal() ([]byte, error)
Marshal marshals Attachment
type AuthData ¶
type AuthData struct { // The paydex address of the customer that is initiating the send. Sender string `json:"sender" valid:"required,paydex_address"` // If the caller needs the recipient's AML info in order to send the payment. NeedInfo bool `json:"need_info" valid:"-"` // The transaction that the sender would like to send in XDR format. This transaction is unsigned. Tx string `json:"tx" valid:"required,base64"` // The full text of the attachment the hash of this attachment is included in the transaction. AttachmentJSON string `json:"attachment" valid:"required,json"` }
AuthData represents how AuthRequest.Data field looks like.
func (AuthData) Attachment ¶
func (d AuthData) Attachment() (attachment Attachment, err error)
Attachment returns attachment from the the object.
func (AuthData) AttachmentPreimageHash ¶
AttachmentPreimageHash returns sha-256 hash of memo preimage.
type AuthRequest ¶
type AuthRequest struct { // Marshalled AuthData JSON object (because of the attached signature, json can be marshalled to infinite number of valid JSON strings) DataJSON string `name:"data" valid:"required,json"` // Signature of sending FI Signature string `name:"sig" valid:"required,base64"` }
AuthRequest represents auth request sent to compliance server
func (*AuthRequest) Data ¶
func (r *AuthRequest) Data() (data AuthData, err error)
Data returns AuthData from the request.
func (*AuthRequest) Populate ¶
func (r *AuthRequest) Populate(request *http.Request) *AuthRequest
func (*AuthRequest) ToURLValues ¶
func (r *AuthRequest) ToURLValues() url.Values
ToURLValues returns AuthData encoded as url.Values.
func (*AuthRequest) Validate ¶
func (r *AuthRequest) Validate() error
Validate is using govalidator to check if fields are valid and also runs Validate method on authData. This method only performs data validation. You should also call VerifySignature to confirm that signature is valid.
func (*AuthRequest) VerifySignature ¶
func (r *AuthRequest) VerifySignature(sender string) error
VerifySignature verifies if signature is valid. It makes a network connection to sender server in order to obtain paydex.toml file and signing key.
type AuthResponse ¶
type AuthResponse struct { // If this FI is willing to share AML information or not. {ok, denied, pending, error} InfoStatus AuthStatus `json:"info_status"` // If this FI is willing to accept this transaction. {ok, denied, pending, error} TxStatus AuthStatus `json:"tx_status"` // (only present if info_status is ok) JSON of the recipient's AML information. in the Paydex attachment convention DestInfo string `json:"dest_info,omitempty"` // (only present if info_status or tx_status is pending) Estimated number of seconds till the sender can check back for a change in status. The sender should just resubmit this request after the given number of seconds. Pending int `json:"pending,omitempty"` // (only present if info_status or tx_status is error) Error string `json:"error,omitempty"` }
AuthResponse represents response sent by auth server
func (*AuthResponse) Marshal ¶
func (r *AuthResponse) Marshal() ([]byte, error)
Marshal marshals Attachment
type AuthStatus ¶
type AuthStatus string
AuthStatus represents auth status returned by Auth Server
const ( // AuthStatusOk is returned when authentication was successful AuthStatusOk AuthStatus = "ok" // AuthStatusPending is returned when authentication is pending AuthStatusPending AuthStatus = "pending" // AuthStatusDenied is returned when authentication was denied AuthStatusDenied AuthStatus = "denied" // AuthStatusError is returned when there was an error AuthStatusError AuthStatus = "error" )
type Operation ¶
type Operation struct { // Overriddes Transaction field for this operation SenderInfo map[string]string `json:"sender_info"` // Overriddes Transaction field for this operation Route Route `json:"route"` // Overriddes Transaction field for this operation Note string `json:"note"` }
Operation represents a single operation object in Paydex attachment
type Route ¶
type Route string
Route allows unmarshalling both integer and string types into string
func (*Route) UnmarshalJSON ¶
type SenderInfo ¶
type SenderInfo struct { FirstName string `json:"first_name,omitempty"` MiddleName string `json:"middle_name,omitempty"` LastName string `json:"last_name,omitempty"` Address string `json:"address,omitempty"` City string `json:"city,omitempty"` Province string `json:"province,omitempty"` PostalCode string `json:"postal_code,omitempty"` Country string `json:"country,omitempty"` Email string `json:"email,omitempty"` Phone string `json:"phone,omitempty"` DateOfBirth string `json:"date_of_birth,omitempty"` CompanyName string `json:"company_name,omitempty"` }
SenderInfo is a helper structure with standardized fields that contains information about the sender. Use Map() method to transform it to map[string]string used in Transaction and Operation structs.
type Transaction ¶
type Transaction struct { SenderInfo map[string]string `json:"sender_info"` Route Route `json:"route"` Note string `json:"note"` Extra string `json:"extra"` }
Transaction represents transaction field in Paydex attachment
type TransactionStatus ¶
type TransactionStatus string
TransactionStatus is the status string returned be tx_status endpoint
const ( // TransactionStatusUnknown is a value of `status` field for the // tx_status endpoint response. It represents that the // institution is not aware of the transaction TransactionStatusUnknown TransactionStatus = "unknown" // TransactionStatusApproved is a value of `status` field for the // tx_status endpoint response. It represents that the // payment was approved by the receiving FI but the Paydex // transaction hasn't been received yet TransactionStatusApproved TransactionStatus = "approved" // TransactionStatusNotApproved is a value of `status` field for the // tx_status endpoint response. It represents that the // Paydex transaction was found but it was never approved // by the receiving FI. TransactionStatusNotApproved TransactionStatus = "not_approved" // TransactionStatusPending is a value of `status` field for the // tx_status endpoint response. It represents that the // payment was received and being processed TransactionStatusPending TransactionStatus = "pending" // TransactionStatusFailed is a value of `status` field for the // tx_status endpoint response. It represents that the // payment was failed and could not be deposited TransactionStatusFailed TransactionStatus = "failed" // TransactionStatusRefunded is a value of `status` field for the // tx_status endpoint response. It represents that the // payment was sent back to sending FI TransactionStatusRefunded TransactionStatus = "refunded" // TransactionStatusClaimable is a value of `status` field for the // tx_status endpoint response. It represents that the // cash is ready to be picked up at specified locations. // Mostly used for cash pickup TransactionStatusClaimable TransactionStatus = "claimable" // TransactionStatusDelivered is a value of `status` field for the // tx_status endpoint response. It represents that the // payment has been delivered to the recepient TransactionStatusDelivered TransactionStatus = "delivered" )
type TransactionStatusResponse ¶
type TransactionStatusResponse struct { Status TransactionStatus `json:"status"` RecvCode string `json:"recv_code,omitempty"` RefundTx string `json:"refund_tx,omitempty"` Msg string `json:"msg,omitempty"` }
TransactionStatusResponse represents a response from the tx_status endpoint