public class SudopayResponse
{
public int id { get; set; }
public DateTime created { get; set; }
public DateTime modified { get; set; }
public string status { get; set; }
public string paykey { get; set; }
public SudopayResponseError error { get; set; }
}
public class SudopayResponseErrorArray
{
public SudopayResponseError[] SudopayResponseError { get; set; }
}
public class SudopayResponseError
{
public string code { get; set; }
public string message { get; set; }
}
[HttpPost]
public HttpResponseMessage PayForRideWithSudopay()
{
string requestBody = string.Empty;
requestBody = HttpMessage(requestBody);
var callForRideRequest = JsonConvert.DeserializeObject<CallForRideRel>(requestBody);
if (callForRideRequest.CallForRideId == null)
{
return this.Request.CreateResponse(HttpStatusCode.NonAuthoritativeInformation, "There was problem in processing your payment");
}
try
{
var callForRideRepository = uow.Repository<CallForRideRepository>();
var callForRideData = callForRideRepository.GetRideById((int)callForRideRequest.CallForRideId);
var userRideRepository = uow.Repository<UserRideRepository>();
var userRideData = userRideRepository.GetRideByCallForRide((int)callForRideRequest.CallForRideId);
var userRepository = uow.Repository<UserRepository>();
var userData = userRepository.GetUsersById((int)userRideData.UserId);
var userCreditCardRepository = uow.Repository<UserCreditCardRepository>();
var creditCardData = userCreditCardRepository.GetUserCreditCard(((int)userRideData.UserId)).Where(x => x.IsDefault == true).FirstOrDefault();
var countryRepository = uow.Repository<CountryRepository>();
var countryData = countryRepository.GetContryById((int)userData.CountryId);
if (userRideData != null && countryData != null)
{
userRideData.IsAmountPaid = true;
UnitOfWork uow = new UnitOfWork();
var appConfigCodeRepository = uow.Repository<AppConfigRepository>();
var appConfigCode = appConfigCodeRepository.GetByGroupName("payment");
System.Collections.Specialized.NameValueCollection Inputs = new System.Collections.Specialized.NameValueCollection();
string websiteId = appConfigCode.FirstOrDefault(x => x.Name == "Website").Value;
#region Sudopay Capture
Inputs = new System.Collections.Specialized.NameValueCollection();
Inputs.Add("website_id", websiteId);
Inputs.Add("currency_code", appConfigCode.FirstOrDefault(x => x.Name == "CurrencyCode").Value);
Inputs.Add("amount", callForRideRequest.RideAmount.ToString());
Inputs.Add("item_name", "Pay For Ride");
Inputs.Add("item_description", "Ride From '" + callForRideData.Source + "' to '" + callForRideData.ActualDestination + "'");
Inputs.Add("buyer_ip", Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString());
Inputs.Add("buyer_address", userData.Address);
Inputs.Add("buyer_city", userData.City);
Inputs.Add("buyer_country", countryData.CountryCode.ToString());
Inputs.Add("buyer_email", userData.Email);
Inputs.Add("buyer_phone", userData.Mobile);
Inputs.Add("buyer_state", userData.State);
Inputs.Add("buyer_zip_code", userData.ZipCode);
Inputs.Add("credit_card_number", creditCardData.LastFourDigit);
Inputs.Add("credit_card_expire", creditCardData.ExpMonth + "/" + creditCardData.ExpYear);
Inputs.Add("credit_card_name_on_card", creditCardData.NameOnCard);
Inputs.Add("credit_card_code", creditCardData.CVV);
Inputs.Add("success_url", appConfigCode.FirstOrDefault(x => x.Name == "success_url").Value);
Inputs.Add("cancel_url", appConfigCode.FirstOrDefault(x => x.Name == "success_url").Value);
WebClient client = new WebClient();
client.Headers.Add("Authorization", string.Concat("Basic ", appConfigCode.FirstOrDefault(x => x.Name == "SudopayAuth").Value));
byte[] response = client.UploadValues("http://sandbox.sudopay.com/api/v1/merchants/11337/gateways/2/payments/capture.json", Inputs);
string result = System.Text.Encoding.UTF8.GetString(response);
result = result.Replace("[", "'");
result = result.Replace("]", "'");
var sudopayResponseData = JsonConvert.DeserializeObject<SudopayResponse>(result);
#endregion
if (sudopayResponseData.status == "Error")
{
return this.Request.CreateResponse(HttpStatusCode.NonAuthoritativeInformation, sudopayResponseData.error.message);
}
userRideData.TransactionId = sudopayResponseData.paykey;
userRideRepository.UpdateUserRide();
return this.Request.CreateResponse(HttpStatusCode.OK, "Success");
}
else
{
return this.Request.CreateResponse(HttpStatusCode.NonAuthoritativeInformation, "Please check if you have valid information i.e country,state,zipcode");
}
}
catch (Exception ex)
{
logger.Error(ex.Message, ex.Message);
return this.Request.CreateResponse(HttpStatusCode.NonAuthoritativeInformation, "Something went wrong");
}
}
{
public int id { get; set; }
public DateTime created { get; set; }
public DateTime modified { get; set; }
public string status { get; set; }
public string paykey { get; set; }
public SudopayResponseError error { get; set; }
}
public class SudopayResponseErrorArray
{
public SudopayResponseError[] SudopayResponseError { get; set; }
}
public class SudopayResponseError
{
public string code { get; set; }
public string message { get; set; }
}
[HttpPost]
public HttpResponseMessage PayForRideWithSudopay()
{
string requestBody = string.Empty;
requestBody = HttpMessage(requestBody);
var callForRideRequest = JsonConvert.DeserializeObject<CallForRideRel>(requestBody);
if (callForRideRequest.CallForRideId == null)
{
return this.Request.CreateResponse(HttpStatusCode.NonAuthoritativeInformation, "There was problem in processing your payment");
}
try
{
var callForRideRepository = uow.Repository<CallForRideRepository>();
var callForRideData = callForRideRepository.GetRideById((int)callForRideRequest.CallForRideId);
var userRideRepository = uow.Repository<UserRideRepository>();
var userRideData = userRideRepository.GetRideByCallForRide((int)callForRideRequest.CallForRideId);
var userRepository = uow.Repository<UserRepository>();
var userData = userRepository.GetUsersById((int)userRideData.UserId);
var userCreditCardRepository = uow.Repository<UserCreditCardRepository>();
var creditCardData = userCreditCardRepository.GetUserCreditCard(((int)userRideData.UserId)).Where(x => x.IsDefault == true).FirstOrDefault();
var countryRepository = uow.Repository<CountryRepository>();
var countryData = countryRepository.GetContryById((int)userData.CountryId);
if (userRideData != null && countryData != null)
{
userRideData.IsAmountPaid = true;
UnitOfWork uow = new UnitOfWork();
var appConfigCodeRepository = uow.Repository<AppConfigRepository>();
var appConfigCode = appConfigCodeRepository.GetByGroupName("payment");
System.Collections.Specialized.NameValueCollection Inputs = new System.Collections.Specialized.NameValueCollection();
string websiteId = appConfigCode.FirstOrDefault(x => x.Name == "Website").Value;
#region Sudopay Capture
Inputs = new System.Collections.Specialized.NameValueCollection();
Inputs.Add("website_id", websiteId);
Inputs.Add("currency_code", appConfigCode.FirstOrDefault(x => x.Name == "CurrencyCode").Value);
Inputs.Add("amount", callForRideRequest.RideAmount.ToString());
Inputs.Add("item_name", "Pay For Ride");
Inputs.Add("item_description", "Ride From '" + callForRideData.Source + "' to '" + callForRideData.ActualDestination + "'");
Inputs.Add("buyer_ip", Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString());
Inputs.Add("buyer_address", userData.Address);
Inputs.Add("buyer_city", userData.City);
Inputs.Add("buyer_country", countryData.CountryCode.ToString());
Inputs.Add("buyer_email", userData.Email);
Inputs.Add("buyer_phone", userData.Mobile);
Inputs.Add("buyer_state", userData.State);
Inputs.Add("buyer_zip_code", userData.ZipCode);
Inputs.Add("credit_card_number", creditCardData.LastFourDigit);
Inputs.Add("credit_card_expire", creditCardData.ExpMonth + "/" + creditCardData.ExpYear);
Inputs.Add("credit_card_name_on_card", creditCardData.NameOnCard);
Inputs.Add("credit_card_code", creditCardData.CVV);
Inputs.Add("success_url", appConfigCode.FirstOrDefault(x => x.Name == "success_url").Value);
Inputs.Add("cancel_url", appConfigCode.FirstOrDefault(x => x.Name == "success_url").Value);
WebClient client = new WebClient();
client.Headers.Add("Authorization", string.Concat("Basic ", appConfigCode.FirstOrDefault(x => x.Name == "SudopayAuth").Value));
byte[] response = client.UploadValues("http://sandbox.sudopay.com/api/v1/merchants/11337/gateways/2/payments/capture.json", Inputs);
string result = System.Text.Encoding.UTF8.GetString(response);
result = result.Replace("[", "'");
result = result.Replace("]", "'");
var sudopayResponseData = JsonConvert.DeserializeObject<SudopayResponse>(result);
#endregion
if (sudopayResponseData.status == "Error")
{
return this.Request.CreateResponse(HttpStatusCode.NonAuthoritativeInformation, sudopayResponseData.error.message);
}
userRideData.TransactionId = sudopayResponseData.paykey;
userRideRepository.UpdateUserRide();
return this.Request.CreateResponse(HttpStatusCode.OK, "Success");
}
else
{
return this.Request.CreateResponse(HttpStatusCode.NonAuthoritativeInformation, "Please check if you have valid information i.e country,state,zipcode");
}
}
catch (Exception ex)
{
logger.Error(ex.Message, ex.Message);
return this.Request.CreateResponse(HttpStatusCode.NonAuthoritativeInformation, "Something went wrong");
}
}

