コード例 #1
0
        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));
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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)}");
        }
コード例 #4
0
        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));
                    }
                }
            }
        }