public async Task <TopupTransaction> SendAsync(TopupRequest request) { ValidateTopupRequest(request); var uri = new Uri(BaseUri, END_POINT); var req = await CreatePostRequestAsync <TopupTransaction>(uri, request); return(await HttpClient.SendAsync(req)); }
private void ValidateTopupRequest(TopupRequest request) { Debug.Assert(request.Amount > 0); Debug.Assert(request.OperatorId > 0); if (request is PhoneTopupRequest phoneTopupRequest) { if (request.SenderPhone != null) { AssertValidPhone(request.SenderPhone); } AssertValidPhone(phoneTopupRequest.RecipientPhone); } else if (request is EmailTopupRequest emailTopupRequest) { AssertValidEmail(emailTopupRequest.RecipientEmail); } }
public async Task BuyAirtime(AirtimePurchaseDto input) { var estelClient = new EstelServicesClient(); //var balanceRequest = new BalanceRequest(); //balanceRequest.agentCode = "TPR_AAL_1"; //balanceRequest.mpin = "14287490BC5A9662D60DFCD3333F723B"; var topupRequest = new TopupRequest(); topupRequest.agentCode = _configuration.GetSection("OneCardProperties").GetValue <string>("AgentCode");// "TPR_AAL_1"; topupRequest.mpin = _configuration.GetSection("OneCardProperties").GetValue <string>("AgentPin"); topupRequest.destination = input.PhoneNumber; topupRequest.mobilenumber = input.PhoneNumber; topupRequest.amount = input.Amount.ToString(); topupRequest.agenttransid = "34634733654774334"; topupRequest.productCode = input.AirtimeNetwork; topupRequest.type = "TOPUP"; var topupResponseAsync = await estelClient.getTopupAsync(topupRequest); var topupResponse = topupResponseAsync.Body.getTopupReturn; Logger.Info($"Topup response result code: {topupResponse.resultcode}"); Logger.Info($"Result description: {topupResponse.resultdescription}"); //var fundsTransferRequest = new FundsTransferRequest(); //fundsTransferRequest.agentCode = "TPR_AAL_1"; //fundsTransferRequest.mpin = "14287490BC5A9662D60DFCD3333F723B"; //fundsTransferRequest.amount = "1000"; //fundsTransferRequest.destination = "9201876211"; //fundsTransferRequest.agenttransid = "34634733654774334"; //fundsTransferRequest.mobilenumber = "08032808912"; //fundsTransferRequest.productCode = "SIBTC"; //var fundsTransferResponse = await estelClient.getFundsTransferAsync(fundsTransferRequest); //Logger.Info($"fundstranfer response: {JsonConvert.SerializeObject(fundsTransferResponse.Body)}"); }
public HttpResponseMessage Topup(HttpRequestMessage request, [FromBody] TopupRequest pOperatorData, string data, decimal amount, int code) { IEnumerable <string> token = null; request.Headers.TryGetValues("Token-autorization", out token); if (token == null) { response.HttpCode = 400; response.Message = "Authorization token must be provided"; return(Request.CreateResponse <IResponse>(HttpStatusCode.BadRequest, response)); } else { if (!String.IsNullOrEmpty(pOperatorData.Operador) && pOperatorData.IdCountry <= 0) { response.HttpCode = 400; response.Message = "Operator name and ID must be provided"; return(Request.CreateResponse <IResponse>(HttpStatusCode.BadRequest, response)); } else if (String.IsNullOrEmpty(data)) { response.HttpCode = 400; response.Message = "Malformed URL: Phone number must be provided"; return(Request.CreateResponse <IResponse>(HttpStatusCode.BadRequest, response)); } else if (amount == 0) { response.HttpCode = 400; response.Message = "Malformed URL: Amount must be provided"; return(Request.CreateResponse <IResponse>(HttpStatusCode.BadRequest, response)); } else { PersonEN person = personBL.VerifyPersonAuthentication(token); if (person != null) { TopupInteractor interactor = new TopupInteractor(); TopupTransactionEN result = topupBL.SendTopup(person, pOperatorData.Operador, amount, data, code); var bags = topupBL.GetUserBags(person.PersonID); var responseTopup = interactor.CreateTopupResponse(result, bags); if (String.Equals(result.Message, Values.Ok)) { return(Request.CreateResponse <IResponse>(HttpStatusCode.OK, responseTopup)); } else if (String.Equals(result.Message, Values.Success)) { return(Request.CreateResponse <IResponse>(HttpStatusCode.OK, responseTopup)); } else if (String.Equals(result.Message, Values.NoCreditLeft)) { return(Request.CreateResponse <IResponse>(HttpStatusCode.ServiceUnavailable, responseTopup)); } else if (String.Equals(result.Message, Values.InvalidProduct)) { return(Request.CreateResponse <IResponse>(HttpStatusCode.BadRequest, responseTopup)); } else { response.HttpCode = 500; response.Message = "Something went wrong"; return(Request.CreateResponse <IResponse>(HttpStatusCode.InternalServerError, response)); } } else { response.HttpCode = 500; response.Message = "Something went wrong"; return(Request.CreateResponse <IResponse>(HttpStatusCode.InternalServerError, response)); } } } }