Interaction with POS - terminal devices and bank switching systems

I have a project in which I need to interact with POS-terminal devices and magnetic / chip cards. Say, every time a customer buys goods from my department store, employees from this store will stratify their customers ’financial cards and make payment transactions.

For such a system, most forums say that you should use a third-party API, for example:

  • Paypal
  • Braintree
  • Authorize.NET.
  • Google Check-Out API

But I think that these APIs should be used for a system that will switch to international payment processing. As for me, I assume that my system is not as large as international payment processing and will start working as a small home system.

So, what would I like to know if this will be the best solution and what will the system architecture look like?

When I read the Authorize.Net page, I found the Credit Card Processing routine.

  • Do I need to follow this entire procedure, whether my project is large or small, an international launch, or a home launch?

  • Do I need to follow this procedure to make the payment process using POS terminal devices?

One thing that I know is that ISO 8583 is an important financial messaging protocol, because most banking switching software systems in my region use only this messaging format. This means that I cannot use another messaging format such as NDC or D912.

+6
source share
1 answer

Authorize.net is very easy to use. All you need to do to process maps is send an https message in XML format. Authorize.net has a few examples. For card readers, most card readers emulate keystrokes. The selected map looks something like this:

'%B5500692805076849^SMITH/STEPHEN A^12041010000000 00969000000?;5500692805076849=12041010000000969?` 

Then analyze the card number "5500692805076849", "SMITH / STEPHEN A" and the expiration date "1204", and transfer them to Authorize.net

 Private Sub cmdCharge_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCharge.Click ' By default, this sample code is designed to post to our test server for ' developer accounts: https://test.authorize.net/gateway/transact.dll ' for real accounts (even in test mode), please make sure that you are ' posting to: https://secure.authorize.net/gateway/transact.dll cmdCharge.Enabled = False lblResponse.Text = "Processing....." Application.DoEvents() Dim post_url post_url = "https://test.authorize.net/gateway/transact.dll" Dim post_values As New Dictionary(Of String, String) 'the API Login ID and Transaction Key must be replaced with valid values post_values.Add("x_login", "XXXXXXX") post_values.Add("x_tran_key", "XXXXXXXXX") 'post_values.Add("x_test_request", "TRUE") post_values.Add("x_delim_data", "TRUE") post_values.Add("x_delim_char", "|") post_values.Add("x_relay_response", "FALSE") post_values.Add("x_type", "AUTH_CAPTURE") post_values.Add("x_method", "CC") post_values.Add("x_card_num", txtCard.Text) post_values.Add("x_exp_date", txtExp.Text) post_values.Add("x_amount", txtAmount.Text) 'post_values.Add("x_description", "Sample Transaction") post_values.Add("x_first_name", txtFirst.Text) post_values.Add("x_last_name", txtLast.Text) 'post_values.Add("x_address", "1234 Street") 'post_values.Add("x_state", "WA") post_values.Add("x_zip", txtZip.Text) post_values.Add("x_card_code", txt3CV.Text) ' Additional fields can be added here as outlined in the AIM integration ' guide at: http://developer.authorize.net ' This section takes the input fields and converts them to the proper format ' for an http post. For example: "x_login=username&x_tran_key=a1B2c3D4" Dim post_string As String = "" For Each field As KeyValuePair(Of String, String) In post_values post_string &= field.Key & "=" & field.Value & "&" Next ' post_string = Left(post_string, Len(post_string) - 1) post_string = post_string.Substring(0, Len(post_string) - 1) ' create an HttpWebRequest object to communicate with Authorize.net Dim objRequest As HttpWebRequest = CType(WebRequest.Create(post_url), HttpWebRequest) objRequest.Method = "POST" objRequest.ContentLength = post_string.Length objRequest.ContentType = "application/x-www-form-urlencoded" ' post data is sent as a stream Dim myWriter As StreamWriter = Nothing myWriter = New StreamWriter(objRequest.GetRequestStream()) myWriter.Write(post_string) myWriter.Close() ' returned values are returned as a stream, then read into a string Dim objResponse As HttpWebResponse = CType(objRequest.GetResponse(), HttpWebResponse) Dim responseStream As New StreamReader(objResponse.GetResponseStream()) Dim post_response As String = responseStream.ReadToEnd() responseStream.Close() ' the response string is broken into an array Dim response_array As Array = Split(post_response, post_values("x_delim_char"), -1) ' the results are output to the screen in the form of an html numbered list. Select Case response_array(0) Case "1" 'Approved lblResponse.Text = "Transaction Approved. " & vbCrLf & response_array(4) Case "2" 'Declined lblResponse.Text = "Transaction Declined. " & vbCrLf & response_array(3) Case "3" 'Error lblResponse.Text = "Transaction Error. " & vbCrLf & response_array(3) Case "4" 'Held for Review lblResponse.Text = "Transaction Held. " & vbCrLf & response_array(3) End Select ' individual elements of the array could be accessed to read certain response ' fields. For example, response_array(0) would return the Response Code, ' response_array(2) would return the Response Reason Code. ' for a list of response fields, please review the AIM Implementation Guide cmdCharge.Enabled = True End Sub 
+5
source

Source: https://habr.com/ru/post/902088/


All Articles