public async Task <IHttpActionResult> PayfortCapture(CaptureResponseModel model) { try { using (StreamWriter sw = File.AppendText(AppDomain.CurrentDomain.BaseDirectory + "/PaymentErrorLog.txt")) { sw.WriteLine("DateTime : " + DateTime.Now + Environment.NewLine); sw.WriteLine(Environment.NewLine + "Payfort Capture called by payfort"); sw.WriteLine(Environment.NewLine + "command: " + model.command); sw.WriteLine(Environment.NewLine + "access_code: " + model.access_code); sw.WriteLine(Environment.NewLine + "amount: " + model.amount); sw.WriteLine(Environment.NewLine + "currency: " + model.currency); sw.WriteLine(Environment.NewLine + "fort_id: " + model.fort_id); sw.WriteLine(Environment.NewLine + "language: " + model.language); sw.WriteLine(Environment.NewLine + "merchant_identifier: " + model.merchant_identifier); sw.WriteLine(Environment.NewLine + "merchant_reference: " + model.merchant_reference); sw.WriteLine(Environment.NewLine + "order_description: " + model.order_description); sw.WriteLine(Environment.NewLine + "response_code: " + model.response_code); sw.WriteLine(Environment.NewLine + "response_message: " + model.response_message); sw.WriteLine(Environment.NewLine + "signature: " + model.signature); sw.WriteLine(Environment.NewLine + "status: " + model.status); sw.WriteLine(Environment.NewLine + "*****End Of Transaction*****"); } using (RiscoContext ctx = new RiscoContext()) { var order = ctx.Orders.FirstOrDefault(x => x.PaymentTransactionId == x.PaymentTransactionId); if (order != null) { if (model.status == 04) { order.PaymentStatus = (int)PaymentStatuses.Completed; } else { order.PaymentStatus = (int)PaymentStatuses.Pending; } order.PaymentTransactionId = model.fort_id; ctx.SaveChanges(); } return(Ok()); } } catch (Exception ex) { return(StatusCode(Utility.LogError(ex))); } }
public async Task <CaptureResponseModel> Capture(CaptureRequestModel request) { var securityUrl = request.Settings["SecurityUrl"]; var userName = request.Settings["UserName"]; var password = request.Settings["Password"]; var confirmationUrl = request.Settings["ConfirmationUrl"]; var merchantId = request.Settings["MerchantId"]; var token = await this._visaNetSecurityTokenService.GetToken(securityUrl, userName, password); var requestMessage = new { channel = "web", captureType = "manual", order = new { purchaseNumber = request.OrderNumber, amount = request.Amount, authorizedAmount = request.AuthorizedAmount, currency = request.CurrencyIsoCode, transactionId = request.TransactionId } }; var headers = new Dictionary <string, string>(); headers.Add("authorization", token); using (var proxy = new HttpClient()) { var httpRequest = new HttpRequestMessage(HttpMethod.Post, $"{confirmationUrl}/confirmation/ecommerce/{merchantId}"); foreach (var h in headers) { httpRequest.Headers.TryAddWithoutValidation(h.Key, h.Value); } var json = Newtonsoft.Json.JsonConvert.SerializeObject(requestMessage); httpRequest.Content = new StringContent(json, Encoding.UTF8, "application/json"); var response = await proxy.SendAsync(httpRequest); if (response.IsSuccessStatusCode) { var data = Newtonsoft.Json.JsonConvert.DeserializeObject <AuthorizeResultModel>(await response.Content.ReadAsStringAsync()); var result = new CaptureResponseModel { Success = true }; return(result); } var errorData = Newtonsoft.Json.JsonConvert.DeserializeObject <CaptureFailedResultModel>(await response.Content.ReadAsStringAsync()); return(new CaptureResponseModel { Success = false, Errors = new List <TransactionErrorResponseModel> { new TransactionErrorResponseModel { Code = errorData.ErrorCode, Message = $"Code: ({errorData.Data.ACTION_CODE}) {errorData.Data.ACTION_DESCRIPTION}. {errorData.ErrorMessage}" } } }); } }