2011-11-22 25 views
6

ben POS ile etkileşim gereken bir proje var. Müşterinin mağazamdan mal alması durumunda, bu mağazanın personeli müşterinin mali kartlarını kesip ödeme işlemini yapacak.Etkileşim - Terminal Cihazlar ve manyetik/çip kartları - Terminal Cihazları ve Bankacılık Sistemleri Switching

  • PayPal
  • Braintree
  • Authorize.NET: O benzer sistemi için

    , forumlarda en çok gibi üçüncü parti API kullanmak için dikkate alınması gerektiğini söylüyorlar.
  • Google Check-Out API'sı.

Ancak, bu API'lerin uluslararası ödeme işlemine gidecek sistemlerde kullanmaları gerektiğini düşünüyorum. Benim için, sistemimin uluslararası ödeme işlemleri kadar büyük olmadığını ve yerel küçük bir sistem olarak çalışmaya başlayacağını düşünüyorum.

yüzden bilmek istiyorum neyi hangi iyi çözüm olacak ve sistem mimarisi olacak nasıl?

Authorize.Net sayfasını okurken, Kredi Kartı İşlemi'un rutinini buldum.

  • Projemin büyük mü küçük mü yoksa uluslararası çalışma mı yoksa yurt içi mi çalışıp çalışmadığına bakmadan tüm bu prosedürü izlemem gerekir mi?

  • Gerçekten POS ile ödeme sürecini yapmak için bu prosedürü takip etmek gerekiyor mu - Terminal Cihazlar? Bildiğim

bir şey bankacılık anahtarlama yazılım sisteminin çoğu zaman bölge için, sadece bu mesajlaşma biçimini kullanın çünkü ISO 8583 temel mali mesajlaşma protokolü olmasıdır. Bu, NDC veya D912 gibi diğer mesajlaşma biçimlerini kullanamayacağı anlamına gelir.

cevap

5

Authorize.net'in kullanımı çok kolaydır. Kartları işlemek için yapmanız gereken tek şey, XML biçiminde bir https gönderi göndermektir. Authorize.net geliştirici sitesinde birkaç örnek var. Kaydırma kartlarına gelince, çoğu kart okuyucu klavye preslerini taklit eder.

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

Ardından kart numarasını "5500692805076849", adı "SMITH/STEPHEN A" ve son kullanma tarihi "1204" ayrıştırmak ve 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 
üzerinde bu pass: Bir almayanlar kartı şuna benzer