/// <summary> /// Acknowledge a payment /// </summary> /// <param name="req">Request parameters to do the request to Viking Spots</param> /// <param name="callback">Delegate that handles the callback</param> public POSPaymentAcknowledgeResult PaymentAcknowledge(POSPaymentAcknowledgeRequest req, ref HttpStatusCode code) { // This is a POST RestRequest request = new RestRequest(string.Format("posacknowledgepayment/"), Method.POST); // We're posting a JSON structure in the body. request.RequestFormat = DataFormat.Json; // Note, RestSharp automatically serializes classes into JSON request.AddBody(req); IRestResponse response = apiClient.Post(request); code = response.StatusCode; // Check that we received a status we expect if (response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.BadRequest || response.StatusCode == HttpStatusCode.InternalServerError || response.StatusCode == HttpStatusCode.PaymentRequired) { // Deserialize JSON into a manageable object return JsonConvert.DeserializeObject<POSPaymentAcknowledgeResult>(response.Content); } return null; }
/// <summary> /// Do API request AcknowledgePayment and send response back to the client /// </summary> /// <param name="doc">request XML</param> /// <param name="client">client that send the request</param> /// <param name="message">The message containing the request</param> private void AcknowledgePayment(XmlDocument doc) { // Extract parameters from request int merchant_id = Convert.ToInt32(doc.DocumentElement.GetAttribute("mid")); int coupon_id = Convert.ToInt32(doc.DocumentElement.GetAttribute("deal")); string terminal_id = doc.DocumentElement.GetAttribute("tid"); string amountString = doc.DocumentElement.GetAttribute("amt"); amountString = amountString.Insert(amountString.Length - 2, "."); IFormatProvider culture = new CultureInfo("en-us"); double amount = Convert.ToDouble(amountString, culture); string card_pan = doc.DocumentElement.GetAttribute("pan"); string payment_type = doc.DocumentElement.GetAttribute("pmt"); POSPaymentAcknowledgeRequest request = new POSPaymentAcknowledgeRequest(terminal_id, coupon_id, merchant_id, amount, card_pan, payment_type); HttpStatusCode code = HttpStatusCode.NotFound; // Call posacknowledgepayment POSPaymentAcknowledgeResult response = api.PaymentAcknowledge(request, ref code); BuildAndSendResponse(code, response, (writer) => { /* * Example: * * <rsp code="0" seq="" dsp="" prt="" /> */ //writer.WriteAttributeString("dsp", "Successfully acknowledged payment!"); //writer.WriteAttributeString("prt", "Yay!"); }); }