|
|
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Reflection; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using Common.Models.RequestResponse; using Common.Models.TxnModel; using Common.TPService; using Common.Utility; using log4net; using Newtonsoft.Json; using Wing.Model; using Newtonsoft.Json.Linq; using RestSharp; using Common.Models.Status; using java.security; using javax.crypto; using javax.crypto.spec; using Common.Models.Bank_Account;
namespace Wing.ApiServices { public class WingApi : ITPApiServices { private readonly ILog _log = LogManager.GetLogger(typeof(WingApi)); private readonly string userName; private readonly string password; private readonly string client_id; private readonly string client_secret; private readonly string grant_type; private readonly string wing_base_url;
private const string Cash_Pickup_Validate = "/api/v2/remittance/noaccount/validate"; private const string Cash_Pickup_Commit = "/api/v2/remittance/noaccount/commit"; private const string Account_Validate = "/api/v2/remittance/validate"; private const string Account_Commit = "/api/v2/remittance/commit"; private const string CrossBank_Validate = "/api/v1/crossbank/validate"; private const string CrossBank_Commit = "/api/v1/crossbank/commit"; private const string Status_Inquiry_Cash = "/api/v1/remittance/txn_inquiry"; private const string Status_Inquiry_Account = "/api/v1/remittance/txn_inquiry"; private const string Status_Inquiry_CrossBank = "/api/v1/crossbank/txn_inquiry"; private const string Validate_Customer_AccountNumber = "/api/v1/user/currency/"; private const string Validate_CrossBank_AccountNumber = "/api/v1/crossbank/currency"; private const string Auth_Token = "/oauth/token";
private readonly string AES_KEY; private List<string> purpose = new List<string>() { "TRF_RELATVIE", "TRF_SETTLEMENT", "TRF_SAVING", "TRF_OTHERS" }; private string access_token = string.Empty;
public WingApi() { userName = GetStatic.ReadWebConfig("wing_userName", ""); password = GetStatic.ReadWebConfig("wing_password", ""); client_id = GetStatic.ReadWebConfig("wing_clientId", ""); client_secret = GetStatic.ReadWebConfig("wing_clientSecret", ""); grant_type = GetStatic.ReadWebConfig("wing_grantType", ""); wing_base_url = GetStatic.ReadWebConfig("wing_baseURL", ""); AES_KEY = GetStatic.ReadWebConfig("wing_AES_KEY", "HG58YZ3CR9");
}
public TPResponse GetTPResponse<T>(T model, string MethodName) where T : class { switch (MethodName) { case "send": return SendTransaction(model as SendTransaction); case "status": return GetStatus(model as GetStatus); case "verify": return VerifyAccount(model as AccountValidate, MethodName); default: throw new NotImplementedException(); } }
private TPResponse VerifyAccount(AccountValidate av, string methodname) { TPResponse _response = new TPResponse(); try { var client = new RestClient(wing_base_url); var accountNumber = av.AccountNumber; access_token = GetAuthToken().AccessCode;
//WingAccountVerifyRequest verifyAccountRequest = new WingAccountVerifyRequest();
//var requestJson = JsonConvert.SerializeObject(verifyAccountRequest, Formatting.None);
LogicalThreadContext.Properties["MethodName"] = "VerifyAccount";
if (av.PaymentMode.ToLower()=="mobile wallet") { _log.Info($"{Validate_Customer_AccountNumber}|REQUEST : {av.AccountNumber}"); var result = client.Execute<WingAccountVerifyResponse>(BuildRequest<WingAccountVerifyRequest>(Validate_Customer_AccountNumber + accountNumber, null, Method.GET, access_token)); _log.Info($"{Validate_Customer_AccountNumber}|RESPONSE : {result.Content}");
if (result.StatusCode == System.Net.HttpStatusCode.OK) {
var res = result.Data; _response.Data = result.Data; _response.ResponseCode = "0"; _response.Msg = "Success"; _response.Id = res.wing_account; _response.Extra = res.wallet_currency; _response.Extra2 = res.account_name; } else { var er = SimpleJson.DeserializeObject<ApiException>(result.Content); _response.ResponseCode = "1"; _response.Msg = string.IsNullOrEmpty(result.Content) ? result.ErrorMessage : $"{ er.error_code}-{er.message}"; } } else {
CrossVerifyRequest crossVerifyRequest = new CrossVerifyRequest() { bank_account_number = av.AccountNumber, bank_name = av.BankCode }; var jsonData = JsonConvert.SerializeObject(crossVerifyRequest);
_log.Info($"{Validate_CrossBank_AccountNumber}|REQUEST : {jsonData}"); var result = client.Execute<CrossVerifyResponse>(BuildRequest<CrossVerifyRequest>(Validate_CrossBank_AccountNumber, jsonData, Method.POST, access_token)); _log.Info($"{Validate_CrossBank_AccountNumber}|RESPONSE : {result.Content}");
if (result.StatusCode == System.Net.HttpStatusCode.OK) {
var res = result.Data; _response.Data = result.Data; _response.ResponseCode = "0"; _response.Msg = "Success"; _response.Id = res.bank_code; _response.Extra = res.wallet_currency; _response.Extra2 = res.account_name; } else { var er = SimpleJson.DeserializeObject<ApiException>(result.Content); _response.ResponseCode = "1"; _response.Msg = string.IsNullOrEmpty(result.Content) ? result.ErrorMessage : $"{ er.error_code}-{er.message}"; } }
} catch (Exception ex) { _response.ResponseCode = "999"; _response.Msg = ex.Message; } return _response; }
private TPResponse GetStatus(GetStatus gs) { TPResponse _response = new TPResponse(); string type = ""; type = gs.PaymentMethod; if (type.ToLower() == "cash payment") { access_token = GetAuthToken().AccessCode; _response = GetCashStatus(gs); return _response; } if (type.ToLower() == "mobile wallet") { access_token = GetAuthToken().AccessCode; _response = GetAccountStatus(gs); return _response; } if (type.ToLower() == "bank deposit") { access_token = GetAuthToken().AccessCode; _response = GetCrossBankStatus(gs); return _response; } return _response; }
private TPResponse SendTransaction(SendTransaction sT) { TPResponse _response = new TPResponse(); string type = ""; type = sT.Transaction.PaymentType; if (type.ToLower() == "cash payment") { access_token = GetAuthToken().AccessCode; var processvalidateResult = GetCashValidate(sT);
if (processvalidateResult.ResponseCode.Equals("0")) { _response = GetCashCommit(access_token); } else _response = processvalidateResult;
return _response; } else if (type.ToLower() == "mobile wallet") { access_token = GetAuthToken().AccessCode;
var status = GetAccountStatus(new GetStatus() { ControlNo = sT.Transaction.JMEControlNo, IsFromPartnerPinNo = false }); if (status.ResponseCode == "2") //"Transaction not found!"
{ var processvalidateResult = GetWingsAccountValidate(sT);
if (processvalidateResult.ResponseCode.Equals("0")) { _response = GetWingsAccountCommit(access_token); } else _response = processvalidateResult; } else { _response.Data = status.Data; _response.ResponseCode = "1"; _response.Extra = status.Extra;
}
return _response; } else if (type.ToLower() == "bank deposit") { access_token = GetAuthToken().AccessCode; var processvalidateResult = GetWingsCrossBankValidate(sT);
if (processvalidateResult.ResponseCode.Equals("0")) { _response = GetWingsCrossBankCommit(access_token); } else _response = processvalidateResult;
return _response; } else { _response.ResponseCode = "1"; _response.Msg = $"Invalid Payment: {sT.Transaction.PaymentType}"; } return _response; }
private TPResponse GetRestApiUrl<RequestModel, ResponseModelForSucess, ResponseModelForFailed>(RequestModel model, string api_url, string type, string requestType, string MethodType = "post", string getObjectOnly = null) { TPResponse _tPResponse = new TPResponse() { ResponseCode = "0" }; string commit_url = ""; // WTokenResponse tokenResponse = new WTokenResponse();
WTokenData tokenResponse = new WTokenData(); using (HttpClient httpClient = new HttpClient()) { try { _log.Info($"{api_url}|REQUEST : {JsonConvert.SerializeObject(model).ToString()}");
httpClient.BaseAddress = new Uri(wing_base_url); // string tokenNo = GetAuthToken();
tokenResponse = GetAuthToken(); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); short timeOut = Convert.ToInt16(GetStatic.ReadWebConfig("transfast_apiTimeOutInSecond", "100")); httpClient.Timeout = new TimeSpan(0, 0, timeOut);
//var result1 = client.Execute<string>(BuildRequest<string>(api_url, "", tokenNo));
//if (result1.StatusCode == System.Net.HttpStatusCode.OK)
//{
// var res = result1.Content;
//}
//httpClient.PostAsync(api_url, result).Result;
//var finalResult = result.Content.ReadAsStringAsync().Result;
//if (result.StatusCode == System.Net.HttpStatusCode.OK)
//{
// _tPResponse.ResponseCode = "0";
// // _tPResponse.Data = JsonConvert.DeserializeObject<ResponseModelForSucess>(result);
// if (getObjectOnly != null)
// _tPResponse = GetOnlyRequiredData(_tPResponse, getObjectOnly);
// return _tPResponse;
//}
// httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", tokenNo);
// httpClient.DefaultRequestHeaders.Add("Authorization", tokenNo);
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tokenResponse.AccessCode); HttpResponseMessage resp = new HttpResponseMessage();
string jsonData = JsonConvert.SerializeObject(model).ToString(); StringContent jbdContent = new StringContent(jsonData, Encoding.UTF8, "application/json");
if (MethodType.ToLower().Equals("get")) { resp = httpClient.GetAsync(api_url).Result; } if (MethodType.ToLower().Equals("put")) { resp = httpClient.PutAsync(api_url, jbdContent).Result; } if (MethodType.ToLower().Equals("post")) { resp = httpClient.PostAsync(api_url, jbdContent).Result; }
// resp = httpClient.PostAsync(api_url, jbdContent).Result;
string result = resp.Content.ReadAsStringAsync().Result;
_log.Info($"{api_url}|RESPONSE : {result}");
if (requestType == "send") { if (resp.IsSuccessStatusCode) { _tPResponse.ResponseCode = "0";
if (type == "Cash") { commit_url = $"{wing_base_url}{Cash_Pickup_Commit}"; } if (type == "Account") { commit_url = $"{wing_base_url}{Account_Commit}"; } if (type == "CrossBank") { commit_url = $"{wing_base_url}{CrossBank_Commit}"; } jsonData = $"{{}}"; StringContent jbdContent1 = new StringContent(jsonData, Encoding.UTF8, "application/json"); resp = httpClient.PostAsync(commit_url, jbdContent1).Result;
// Task<HttpResponseMessage> task = httpClient.PostAsync(commit_url, new{}).Result;
result = resp.Content.ReadAsStringAsync().Result;
_log.Info($"{api_url}|RESPONSE : {result}");
_tPResponse.Data = JsonConvert.DeserializeObject<ResponseModelForSucess>(result); if (getObjectOnly != null) _tPResponse = GetOnlyRequiredData(_tPResponse, getObjectOnly); return _tPResponse; } else { _tPResponse.ResponseCode = "1"; _tPResponse.Data = JsonConvert.DeserializeObject<ResponseModelForFailed>(result); if (resp.StatusCode.ToString().ToLower() != "notfound") { _tPResponse.Msg = "Status Code: " + resp.StatusCode.ToString().Replace("<br/>", "").Replace(Environment.NewLine, "") + " " + GetResponseMessage(_tPResponse.Data as WingSendTxnFailedResponse); } else { _tPResponse.Msg = "Status Code:" + resp.StatusCode.ToString(); } if (getObjectOnly != null) _tPResponse = GetOnlyRequiredData(_tPResponse, getObjectOnly); return _tPResponse; } }
else { if (resp.IsSuccessStatusCode) { _tPResponse.ResponseCode = "0";
_tPResponse.Data = JsonConvert.DeserializeObject<ResponseModelForSucess>(result); if (getObjectOnly != null) _tPResponse = GetOnlyRequiredData(_tPResponse, getObjectOnly); return _tPResponse; } else { _tPResponse.Msg = "Status Code:" + resp.StatusCode.ToString(); } if (getObjectOnly != null) _tPResponse = GetOnlyRequiredData(_tPResponse, getObjectOnly); return _tPResponse;
} } catch (HttpRequestException ex) { _tPResponse.ResponseCode = "999"; _tPResponse.Msg = ex.Message; _tPResponse.Data = ex.Data; } };
return _tPResponse; }
private string GetResponseMessage(WingSendTxnFailedResponse txnFail) { throw new NotImplementedException(); }
private TPResponse GetOnlyRequiredData(TPResponse response, string objectName) { if (response.Data != null) { PropertyInfo fieldName = response.Data.GetType().GetProperty(objectName); object values = fieldName.GetValue(response.Data, null); response.Data = values; } return response; }
// public static async Task<TResult> PostFormUrlEncoded<TResult>(string url, IEnumerable<KeyValuePair<string, string>> postData)
private WTokenData GetAuthToken() { //WTokenResponse tokenResponse = new WTokenResponse();
WTokenData tokenResponse = new WTokenData();
string token_url = $"{wing_base_url}{Auth_Token}"; try { using (HttpClient httpClient = new HttpClient()) { var data = new Dictionary<string, string> { { "username", userName }, { "password", password}, { "client_id", client_id}, { "client_secret", client_secret }, { "grant_type", grant_type } }; var content = new FormUrlEncodedContent(data);
content.Headers.Clear(); content.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
var response = httpClient.PostAsync(token_url, content).Result; string resultData = response.Content.ReadAsStringAsync().Result;
if (response.IsSuccessStatusCode) { var resp = JObject.Parse(resultData.ToString()); tokenResponse.AccessCode = access_token = resp["access_token"].ToString(); } } } catch (Exception ex) { tokenResponse.AccessCode = "0"; tokenResponse.Scope = ex.ToString(); } return tokenResponse; }
#region Map Model
private WingSendTxnRequestCash MapSendTransactionDataCash(SendTransaction sT) { WingSendTxnRequestCash r = new WingSendTxnRequestCash() { first_name = $"{sT.Sender.SFirstName}{ (!string.IsNullOrEmpty(sT.Sender.SMiddleName) ? " " + sT.Sender.SMiddleName : "")}", last_name = sT.Sender.SLastName1, gender = sT.Sender.SGender, id_number = sT.Sender.SIdNo, id_type = sT.Sender.SIdType, nationality = sT.Sender.SCountryName, date_of_birth = sT.Sender.SBirthDate, country_of_birth = sT.Sender.SNativeCountry, occupation = sT.Sender.SOccuptionName, sender_account = sT.Sender.FormOfPaymentId, country_code = "JPN", receiver_phone = sT.Receiver.RMobile, receiver_name = sT.Receiver.RFullName, amount = sT.Transaction.PAmt, currency = sT.Transaction.PCurr, purpose = purpose.Contains(sT.Transaction.PurposeOfRemittanceName) ? sT.Transaction.PurposeOfRemittanceName : "TRF_OTHERS", // other = sT.Transaction.PayoutMsg,
ext_transaction_id = sT.TranId.ToString(), ext_transaction_date = sT.Transaction.TxnDate };
return r; }
private WingSendTxnRequestAcc MapSendTransactionDataAcc(SendTransaction sT) { return new WingSendTxnRequestAcc() { first_name = $"{sT.Sender.SFirstName}{ (!string.IsNullOrEmpty(sT.Sender.SMiddleName) ? " " + sT.Sender.SMiddleName : "")}", last_name = sT.Sender.SLastName1, gender = sT.Sender.SGender, id_number = sT.Sender.SIdNo, id_type = sT.Sender.SIdType, nationality = sT.Sender.SCountryName, date_of_birth = sT.Sender.SBirthDate, country_of_birth = sT.Sender.SNativeCountry, occupation = sT.Sender.SOccuptionName, sender_account = sT.Sender.FormOfPaymentId, country_code = "JPN", receiver_account = sT.Receiver.RAccountNo, receiver_name = sT.Receiver.RFullName, amount = sT.Transaction.PAmt, currency = sT.Transaction.PCurr, purpose = purpose.Contains(sT.Transaction.PurposeOfRemittanceName) ? sT.Transaction.PurposeOfRemittanceName : "TRF_OTHERS", // other = sT.Transaction.PayoutMsg,
ext_transaction_id = sT.Transaction.JMEControlNo.ToString(), ext_transaction_date = sT.Transaction.TxnDate }; }
private WingSendTxnRequestCrossBank MapSendTransactionDataCrossBank(SendTransaction sT) { return new WingSendTxnRequestCrossBank() { amount = sT.Transaction.PAmt, currency = sT.Transaction.PCurr, first_name = sT.Sender.SFirstName, last_name = sT.Sender.SLastName1, gender = sT.Sender.SGender, date_of_birth = sT.Sender.SBirthDate, occupation = sT.Sender.SOccuptionName, id_type = sT.Sender.SIdType, id_number = sT.Sender.SIdNo, nationality = sT.Sender.SCountryName, country_of_birth = sT.Sender.SNativeCountry, purpose = sT.Transaction.PurposeOfRemittanceName, country_code = "JPN", sender_passport = sT.Sender.SIdNo, bank_name = sT.Agent.PBankId, bank_account_number = sT.Receiver.RAccountNo, receiver_currency = sT.Transaction.PCurr, receiver_name = sT.Receiver.RFullName, receiver_phone = sT.Receiver.RMobile, receiver_id_number = sT.Receiver.ReceiverId, receiver_date_of_birth = sT.Receiver.RDob?? DateTime.Now.AddYears(-20).ToString("ddMMyyyy"), receiver_passport = sT.Receiver.RIdNo, receiver_nationality = sT.Receiver.RCountry.Replace("CAMBODIA", "Cambodian"), receiver_address = sT.Receiver.RAdd1, ext_transaction_id = sT.Transaction.JMEControlNo, ext_transaction_date = sT.Transaction.TxnDate }; }
private WingGetStatus MapGetStatus(GetStatus gs) { return new WingGetStatus() { transaction_id = gs.ControlNo, use_wing_id = gs.IsFromPartnerPinNo }; }
#endregion Map Model
private RestRequest BuildRequest<T>(string action, string requestJWT, Method method, string bearerToken = "") where T : class { var request = new RestRequest(action, method);
if (!string.IsNullOrEmpty(bearerToken)) request.AddHeader("Authorization", string.Format("Bearer {0}", bearerToken));
request.AddHeader("Content-Type", "application/json"); // add HTTP Headers
request.RequestFormat = DataFormat.Json;
request.AddParameter("application/json", requestJWT, ParameterType.RequestBody);
return request; }
public TPResponse GetCashValidate(SendTransaction _txnDTO) { TPResponse _response = new TPResponse(); try { var client = new RestClient(wing_base_url); var wSendModel = MapSendTransactionDataCash(_txnDTO);
var requestJson = JsonConvert.SerializeObject(wSendModel, Formatting.None);
LogicalThreadContext.Properties["MethodName"] = "Cash_Pickup_Validate";
_log.Info($"{Cash_Pickup_Validate}|REQUEST : {requestJson}"); var result = client.Execute<WingSendTxnResponseCash>(BuildRequest<WingSendTxnRequestCash>(Cash_Pickup_Validate, requestJson, Method.POST, access_token)); _log.Info($"{Cash_Pickup_Validate}|RESPONSE : {result.Content}");
if (result.StatusCode == System.Net.HttpStatusCode.OK) { var res = result.Data; _response.Data = result.Data; _response.ResponseCode = "0"; _response.Msg = "Success"; } else { var er = SimpleJson.DeserializeObject<ApiException>(result.Content); _response.ResponseCode = "1"; _response.Msg = string.IsNullOrEmpty(result.Content) ? result.ErrorMessage : $"{ er.error_code}-{er.message}"; } } catch (Exception ex) { _response.ResponseCode = "999"; _response.Msg = ex.Message; } return _response;
}
public TPResponse GetCashCommit(string access_token) { TPResponse _response = new TPResponse(); try { var client = new RestClient(wing_base_url);
CashCommitRequest cashCommitRequest = new CashCommitRequest(); var requestJson = JsonConvert.SerializeObject(cashCommitRequest, Formatting.None);
LogicalThreadContext.Properties["MethodName"] = "Cash_Pickup_Commit"; _log.Info($"{Cash_Pickup_Commit}|REQUEST : {access_token}"); var result = client.Execute<WingSendTxnResponseCash>(BuildRequest<CashCommitRequest>(Cash_Pickup_Commit, requestJson, Method.POST, access_token)); _log.Info($"{Cash_Pickup_Commit}|RESPONSE : {result.Content}");
if (result.StatusCode == System.Net.HttpStatusCode.OK) { var res = result.Data; _response.Data = result.Data; _response.ResponseCode = "0"; _response.Msg = "Success"; _response.Id = res.transaction_id;// partnerid;
// _response.Extra = res.passcode;
_response.Extra = decrypt(res.passcode);
} else { var er = SimpleJson.DeserializeObject<ApiException>(result.Content); _response.ResponseCode = "1"; _response.Msg = string.IsNullOrEmpty(result.Content) ? result.ErrorMessage : $"{ er.error_code}-{er.error_description}"; } } catch (Exception ex) { _response.ResponseCode = "999"; _response.Msg = ex.Message; } return _response;
}
public TPResponse GetWingsAccountValidate(SendTransaction _txnDTO) { TPResponse _response = new TPResponse(); try { var client = new RestClient(wing_base_url); var wSendModel = MapSendTransactionDataAcc(_txnDTO);
var requestJson = JsonConvert.SerializeObject(wSendModel, Formatting.None);
LogicalThreadContext.Properties["MethodName"] = "Account_Validate";
_log.Info($"{Account_Validate}|REQUEST : {requestJson}"); var result = client.Execute<WingSendTxnResponseAcc>(BuildRequest<WingSendTxnRequestAcc>(Account_Validate, requestJson, Method.POST, access_token)); _log.Info($"{Account_Validate}|RESPONSE : {result.Content}");
if (result.StatusCode == HttpStatusCode.OK) { var res = result.Data; _response.Data = result.Data; _response.ResponseCode = "0"; _response.Msg = "Success"; } else { var er = SimpleJson.DeserializeObject<ApiException>(result.Content); _response.ResponseCode = "1"; _response.Msg = string.IsNullOrEmpty(result.Content) ? result.ErrorMessage : $"{ er.error_code}-{er.message}"; } } catch (Exception ex) { _response.ResponseCode = "999"; _response.Msg = ex.Message; } return _response;
}
public TPResponse GetWingsAccountCommit(string access_token) { TPResponse _response = new TPResponse(); try { var client = new RestClient(wing_base_url);
CashCommitRequest cashCommitRequest = new CashCommitRequest(); var requestJson = JsonConvert.SerializeObject(cashCommitRequest, Formatting.None);
LogicalThreadContext.Properties["MethodName"] = "Account_Commit"; _log.Info($"{Account_Commit}|REQUEST : {access_token}"); var result = client.Execute<WingSendTxnResponseAcc>(BuildRequest<CashCommitRequest>(Account_Commit, requestJson, Method.POST, access_token)); _log.Info($"{Cash_Pickup_Commit}|RESPONSE : {result.Content}");
if (result.StatusCode == System.Net.HttpStatusCode.OK) { var res = result.Data; _response.Data = result.Data; _response.ResponseCode = "0"; _response.Msg = "Success"; _response.Id = res.transaction_id;// partnerid;
} else { var er = SimpleJson.DeserializeObject<ApiException>(result.Content); _response.ResponseCode = "1"; _response.Msg = string.IsNullOrEmpty(result.Content) ? result.ErrorMessage : $"{ er.error_code}-{er.error_description}"; } } catch (Exception ex) { _response.ResponseCode = "999"; _response.Msg = ex.Message; } return _response;
}
public TPResponse GetWingsCrossBankValidate(SendTransaction _txnDTO) { TPResponse _response = new TPResponse(); try { var client = new RestClient(wing_base_url);
var wSendModel = MapSendTransactionDataCrossBank(_txnDTO);
var requestJson = JsonConvert.SerializeObject(wSendModel, Formatting.None);
LogicalThreadContext.Properties["MethodName"] = "CrossBank_Validate";
_log.Info($"{CrossBank_Validate}|REQUEST : {requestJson}"); var result = client.Execute<WingSendTxnResponseCrossBank>(BuildRequest<WingSendTxnRequestCrossBank>(CrossBank_Validate, requestJson, Method.POST, access_token)); _log.Info($"{CrossBank_Validate}|RESPONSE : {result.Content}");
if (result.StatusCode == HttpStatusCode.OK) { var res = result.Data; _response.Data = result.Data; _response.ResponseCode = "0"; _response.Msg = "Success"; } else { var er = SimpleJson.DeserializeObject<ApiException>(result.Content); _response.ResponseCode = "1"; _response.Msg = string.IsNullOrEmpty(result.Content) ? result.ErrorMessage : $"{ er.error_code}-{er.message}"; } } catch (Exception ex) { _response.ResponseCode = "999"; _response.Msg = ex.Message; } return _response;
}
public TPResponse GetWingsCrossBankCommit(string access_token) { TPResponse _response = new TPResponse(); try { var client = new RestClient(wing_base_url);
CashCommitRequest cashCommitRequest = new CashCommitRequest(); var requestJson = JsonConvert.SerializeObject(cashCommitRequest, Formatting.None);
LogicalThreadContext.Properties["MethodName"] = "CrossBank_Commit"; _log.Info($"{CrossBank_Commit}|REQUEST : {access_token}"); var result = client.Execute<WingSendTxnResponseAcc>(BuildRequest<CashCommitRequest>(CrossBank_Commit, requestJson, Method.POST, access_token)); _log.Info($"{CrossBank_Commit}|RESPONSE : {result.Content}");
if (result.StatusCode == System.Net.HttpStatusCode.OK) { var res = result.Data; _response.Data = result.Data; _response.ResponseCode = "0"; _response.Msg = "Success"; _response.Id = res.transaction_id;// partnerid;
} else { var er = SimpleJson.DeserializeObject<ApiException>(result.Content); _response.ResponseCode = "1"; _response.Msg = string.IsNullOrEmpty(result.Content) ? result.ErrorMessage : $"{ er.error_code}-{er.error_description}"; } } catch (Exception ex) { _response.ResponseCode = "999"; _response.Msg = ex.Message; } return _response;
}
public TPResponse GetCashStatus(GetStatus gs) { TPResponse _response = new TPResponse(); try { access_token = GetAuthToken().AccessCode; var client = new RestClient(wing_base_url); var model = MapGetStatus(gs);
var requestJson = JsonConvert.SerializeObject(model, Formatting.None);
LogicalThreadContext.Properties["MethodName"] = "Status_Inquiry_Cash";
_log.Info($"{Status_Inquiry_Cash}|REQUEST : {requestJson}"); var result = client.Execute<WingGetStatusResponseCash>(BuildRequest<WingGetStatus>(Status_Inquiry_Cash, requestJson, Method.POST, access_token)); _log.Info($"{Status_Inquiry_Cash}|RESPONSE : {result.Content}");
if (result.StatusCode == System.Net.HttpStatusCode.OK) { var res = result.Data; _response.Data = result.Data; _response.Extra = "UN-PAID"; _response.ResponseCode = "0"; _response.Msg = "Success";
if (!string.IsNullOrEmpty(res.cashout_status) && res.cashout_status.Equals("Complete")) { _response.Extra = "PAID"; }
} else if (result.StatusCode == System.Net.HttpStatusCode.Accepted) { var res = result.Data; _response.Data = res;
if (!string.IsNullOrEmpty(res.error_code) && res.error_code.Equals("006035")) { _response.ResponseCode = "2"; _response.Extra = "NOTFOUND"; } _response.Msg = res.message; } else { var er = SimpleJson.DeserializeObject<ApiException>(result.Content); _response.ResponseCode = "1"; _response.Msg = string.IsNullOrEmpty(result.Content) ? result.ErrorMessage : $"{ er.error_code}-{er.message}"; } } catch (Exception ex) { _response.ResponseCode = "999"; _response.Msg = ex.Message; } return _response;
}
public TPResponse GetAccountStatus(GetStatus gs) { TPResponse _response = new TPResponse(); try { access_token = GetAuthToken().AccessCode; var client = new RestClient(wing_base_url); var model = MapGetStatus(gs);
var requestJson = JsonConvert.SerializeObject(model, Formatting.None);
LogicalThreadContext.Properties["MethodName"] = "Status_Inquiry_Account";
_log.Info($"{Status_Inquiry_Account}|REQUEST : {requestJson}"); var result = client.Execute<WingGetStatusResponseAccount>(BuildRequest<WingGetStatus>(Status_Inquiry_Account, requestJson, Method.POST, access_token)); _log.Info($"{Status_Inquiry_Account}|RESPONSE : {result.Content}");
if (result.StatusCode == System.Net.HttpStatusCode.OK) { var res = result.Data; _response.Data = res;
if (!string.IsNullOrEmpty(res.transaction_status) && res.transaction_status.Equals("200")) { _response.Extra = "PAID"; } _response.ResponseCode = "0"; _response.Msg = "Success"; } else if (result.StatusCode == System.Net.HttpStatusCode.Accepted) { var res = result.Data; _response.Data = res; _response.Extra2 = !string.IsNullOrEmpty(res.error_code) ? res.error_code : "";
if (!string.IsNullOrEmpty(res.error_code) && res.error_code.Equals("006035")) { _response.ResponseCode = "2"; _response.Extra = "NOTFOUND"; } _response.Msg = res.message; } else { var er = SimpleJson.DeserializeObject<ApiException>(result.Content); _response.ResponseCode = "1"; _response.Msg = string.IsNullOrEmpty(result.Content) ? result.ErrorMessage : $"{ er.error_code}-{er.message}"; _response.Extra = "UNPAID"; } } catch (Exception ex) { _response.ResponseCode = "999"; _response.Msg = ex.Message; } return _response;
}
public TPResponse GetCrossBankStatus(GetStatus gs) { TPResponse _response = new TPResponse(); try { access_token = GetAuthToken().AccessCode; var client = new RestClient(wing_base_url); var model = MapGetStatus(gs);
var requestJson = JsonConvert.SerializeObject(model, Formatting.None);
LogicalThreadContext.Properties["MethodName"] = "Status_Inquiry_CrossBank";
_log.Info($"{Status_Inquiry_CrossBank}|REQUEST : {requestJson}"); var result = client.Execute<WingGetStatusResponseCrossBank>(BuildRequest<WingGetStatus>(Status_Inquiry_CrossBank, requestJson, Method.POST, access_token)); _log.Info($"{Status_Inquiry_CrossBank}|RESPONSE : {result.Content}");
if (result.StatusCode == System.Net.HttpStatusCode.OK) { var res = result.Data; _response.Data = result.Data;
if (!string.IsNullOrEmpty(res.transaction_status) && res.transaction_status.Equals("Success")) { _response.Extra = "PAID"; }
_response.ResponseCode = "0"; _response.Msg = "Success"; } else if (result.StatusCode == System.Net.HttpStatusCode.Accepted) { var res = result.Data; _response.Data = res; _response.Extra2 = !string.IsNullOrEmpty(res.error_code) ? res.error_code : "";
if (!string.IsNullOrEmpty(res.error_code) && res.error_code.Equals("006035")) { _response.ResponseCode = "2"; _response.Extra = "NOTFOUND";
} _response.Msg = res.message; } else { var er = SimpleJson.DeserializeObject<ApiException>(result.Content); _response.ResponseCode = "1"; _response.Msg = string.IsNullOrEmpty(result.Content) ? result.ErrorMessage : $"{ er.error_code}-{er.message}"; } } catch (Exception ex) { _response.ResponseCode = "999"; _response.Msg = ex.Message; } return _response;
} #region
private string encrypt(string orignalText) {
string encodedText = null;
try { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-256");
MessageDigest md = MessageDigest.getInstance("SHA-256"); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final byte[] digestOfPassword = md.digest(AES_KEY.getBytes("utf-8"));
byte[] bytes = Encoding.UTF8.GetBytes("HG58YZ3CR9"); byte[] digestOfPassword = md.digest(bytes); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final javax.crypto.SecretKey key = new javax.crypto.spec.SecretKeySpec(digestOfPassword, "AES");
SecretKey key = new SecretKeySpec(digestOfPassword, "AES");
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("AES/CBC/PKCS5Padding");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final javax.crypto.spec.IvParameterSpec iv = new javax.crypto.spec.IvParameterSpec(new byte[16]);
IvParameterSpec iv = new IvParameterSpec(new byte[16]);
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final byte[] plainTextBytes = orignalText.getBytes("utf-8");
byte[] plainTextBytes = Encoding.UTF8.GetBytes(orignalText); // byte[] plainTextBytes = orignalText.GetBytes(Encoding.UTF8);
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final byte[] encodeTextBytes = cipher.doFinal(plainTextBytes);
byte[] encodeTextBytes = cipher.doFinal(plainTextBytes);
encodedText = (Convert.ToBase64String(encodeTextBytes));
} catch (Exception e) { throw new ApplicationException("", e); }
return encodedText; }
public static string NewString(byte[] bytes) { return NewString(bytes, 0, bytes.Length); } public static string NewString(byte[] bytes, int index, int count) { return System.Text.Encoding.UTF8.GetString((byte[])(object)bytes, index, count); }
public static string NewString(byte[] bytes, string encoding) { return NewString(bytes, 0, bytes.Length, encoding); } public static string NewString(byte[] bytes, int index, int count, string encoding) { return System.Text.Encoding.GetEncoding(encoding).GetString((byte[])(object)bytes, index, count); }
public string decrypt(string orignalText) {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-256");
MessageDigest md = MessageDigest.getInstance("SHA-256"); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final byte[] digestOfPassword = md.digest(AES_KEY.getBytes("utf-8"));
byte[] bytes = Encoding.UTF8.GetBytes(AES_KEY); byte[] digestOfPassword = md.digest(bytes);
//sbyte[] digestOfPassword = md.digest(AES_KEY.GetBytes(Encoding.UTF8));
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final javax.crypto.SecretKey key = new javax.crypto.spec.SecretKeySpec(digestOfPassword, "AES");
SecretKey key = new SecretKeySpec(digestOfPassword, "AES");
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("AES/CBC/PKCS5Padding");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(new byte[16])); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final byte[] plainTextBytes = org.apache.commons.codec.binary.Base64.decodeBase64(orignalText);
byte[] plainTextBytes = Convert.FromBase64String(orignalText); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final byte[] encodeTextBytes = cipher.doFinal(plainTextBytes);
byte[] encodeTextBytes = cipher.doFinal(plainTextBytes);
return NewString(encodeTextBytes);
}
#endregion
} }
|