Please help me finish this last step so I can be done with this project :)
I'm trying to convert this example to Vb.Net:
https://docs.connect.squareup.com/articles/processing-payment-rest/
I can successfully get a CardOnce ID after the user enters credit card information. I can successfully do a READ from Square to get my location ID. However, I'm stuck on the last step when I provide the CardOnce ID, Location ID, and amount to POST, I keep getting back an error: "The remote server returned an error: (422) status code 422."
My Code is listed below and the error occurrs:
Error Occurs when this is called:
response = DirectCast(request.GetResponse(), HttpWebResponse)
Full Code Here:
Public Function IsSuccessProcess(ByVal sLocationId As String, ByVal sCardOnce As String, ByVal iAmount As Integer)
Dim request As HttpWebRequest
Dim response As HttpWebResponse = Nothing
Dim reader As StreamReader
Dim address As Uri
Dim data As StringBuilder
Dim byteData() As Byte
Dim postStream As Stream = Nothing
address = New Uri("https://connect.squareup.com/v2/locations/" & sLocationId & "/transactions")
' Create the web request
request = DirectCast(WebRequest.Create(address), HttpWebRequest)
' Set type to POST
request.Method = "POST"
request.ContentType = "application/json"
request.Accept = "application/json"
request.Headers.Add("Authorization", "Bearer " & AccessToken)
data = New StringBuilder()
Dim sQuote As String = """"
sQuote = "'"
data.Append("{" & sQuote & "card_nonce" & sQuote & ": " & sCardOnce & "," & sQuote & "amount_money" & sQuote & ": {" & sQuote & "amount" & sQuote & ": " & iAmount & "," & sQuote & "currency" & sQuote & ": " & sQuote & "USD" & sQuote & "}")
Dim didempotency_key As Double = Microsoft.VisualBasic.Timer
Dim idempotency_key As Integer = CInt(didempotency_key)
data.Append("'idempotency_key': " & idempotency_key)
' Create a byte array of the data we want to send
byteData = UTF8Encoding.UTF8.GetBytes(data.ToString())
' Set the content length in the request headers
request.ContentLength = byteData.Length
' Write data
Try
postStream = request.GetRequestStream()
postStream.Write(byteData, 0, byteData.Length)
Finally
If Not postStream Is Nothing Then postStream.Close()
End Try
Try
' Get response
response = DirectCast(request.GetResponse(), HttpWebResponse)
' Get the response stream into a reader
reader = New StreamReader(response.GetResponseStream())
' Console application output
Console.WriteLine(reader.ReadToEnd())
Finally
If Not response Is Nothing Then response.Close()
End Try
Return True
End Function