I am verifying my iOS in-app purchase receipt on my server using C# web services and I am sending that string to my C# web services as a parameter.
public int PurchaseItem(string receiptData)
{
int proUserStatus = 1;
try
{
// var json = "{ 'receipt-data': '" + receiptData + "'}";
var json = new JObject(new JProperty("exclude-old-transactions", true), new JProperty("receipt-data", receiptData), new JProperty("password", secretKey)).ToString();
ASCIIEncoding ascii = new ASCIIEncoding();
byte[] postBytes = Encoding.UTF8.GetBytes(json);
// HttpWebRequest request;
var request = System.Net.HttpWebRequest.Create("sandbox api url");
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = postBytes.Length;
//Stream postStream = request.GetRequestStream();
//postStream.Write(postBytes, 0, postBytes.Length);
//postStream.Close();
using (var stream = request.GetRequestStream())
{
stream.Write(postBytes, 0, postBytes.Length);
stream.Flush();
}
// var sendresponse = (HttpWebResponse)request.GetResponse();
var sendresponse = request.GetResponse();
string sendresponsetext = "";
using (var streamReader = new StreamReader(sendresponse.GetResponseStream()))
{
sendresponsetext = streamReader.ReadToEnd().Trim();
}
ValidateResponse vres = JsonConvert.DeserializeObject(sendresponsetext);
proUserStatus = vres.status;
}
catch (Exception ex)
{
ex.Message.ToString();
}
return proUserStatus;
}
It always return {status:21002}. Why is this so? I am testing on a sandbox which is why I use the sandbox URL.