public async Task <CardChargeResponseViewModel> Charge(ChargeInfoViewModel param) { try { string urlWS = "http://api.napthengay.com/v2/"; var transId = GenerateTransId(); //Dia chi mail dang ky tai khoan tren napthengay.com var plaintText = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}", merchantId, apiMail, transId, param.CardId, param.CardValue, param.PinField, param.SeriField, "md5", secretkey); string key = GetMD5Hash(plaintText); var respone = string.Empty; using (WebClient client = new WebClient()) { string url = string.Format("{0}?merchan_id={1}&card_id={2}&seri_field={3}&pin_field={4}&trans_id={5}&data_sign={6}&algo_mode=md5&api_email={7}&card_value={8}", urlWS, merchantId, param.CardId, param.SeriField, param.PinField, transId, key, apiMail, param.CardValue); respone = await client.DownloadStringTaskAsync(url); } var result = JsonConvert.DeserializeObject <CardChargeResponseViewModel>(respone); StoreTransaction(param, result); // remove transId before respone FE result.trans_id = string.Empty; return(result); } catch (Exception ex) { _logger.LogException(LogLevel.Error, DateTime.Now.ToString(), ex); return(new CardChargeResponseViewModel()); } }
private void StoreTransaction(ChargeInfoViewModel param, CardChargeResponseViewModel respone) { var transaction = new Transaction(respone.code, respone.amount, param.CardId, param.CardValue, param.PinField, param.SeriField, respone.trans_id, respone.msg); _transaction.InsertOne(transaction); }
public async Task <CardChargeResponseViewModel> ChargeAsync([FromBody] ChargeInfoViewModel param) { return(await _cardChargeService.Charge(param)); }