Exemplo n.º 1
0
        /// <summary>
        /// Post a request to pay
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <ClientResponse <string> > PostRequestToPay(PostReqesutToPayRequest request, string callbackUrl = null)
        {
            var token = await GetToken();

            if (string.IsNullOrEmpty(token?.AccessToken))
            {
                return(new ClientResponse <string> {
                    Status = Status.Failed.ToString(), StatusCode = HttpStatusCode.Unauthorized
                });
            }

            var paymentReference = Guid.NewGuid().ToString();

            var headers = new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>(Constants.PaymentReferenceHeader, $"{paymentReference}"),
                new KeyValuePair <string, string>(Constants.AuthHeader, $"Bearer {token.AccessToken}"),
                new KeyValuePair <string, string>(Constants.SubKeyHeader, collectionConfig.SubscriptionKey)
            };

            if (!string.IsNullOrEmpty(callbackUrl))
            {
                headers.Add(new KeyValuePair <string, string>(Constants.CallbackUrlHeader, callbackUrl));
            }

            var response = await baseClient.PostAsync <string>(CollectionRequestUri.RequestToPay, Constants.MtnClient, request, headers);

            response.Data   = response.StatusCode == HttpStatusCode.Accepted ? paymentReference : null;
            response.Status = response.StatusCode == HttpStatusCode.Accepted ? Status.Successful.ToString() : Status.Failed.ToString();

            return(response);
        }
        /// <summary>
        /// Get an auth token
        /// </summary>
        /// <param name="requestUri"></param>
        /// <returns></returns>
        public async Task <ClientResponse <TokenResponse> > GetToken(TokenRequest tokenRequest)
        {
            var headers = new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>(Constants.AuthHeader, $"Basic {Utils.GetEncodedBasicAuth(tokenRequest.UserId, tokenRequest.ApiKey)}"),
                new KeyValuePair <string, string>(Constants.SubKeyHeader, tokenRequest.SubscriptionKey)
            };

            var response = await baseClient.PostAsync <TokenResponse>(tokenRequest.RequestUri, Constants.MtnClient, null, headers);

            return(response);
        }
        public async Task <string> AddItem(Guid basketId, CreateItemBasketRequest request)
        {
            var uri = BuildUri(basketId, "item/");

            return(await _client.PostAsync(uri, request));
        }
        public async Task <string> Create(CreateBasketRequest request)
        {
            var uri = BuildUri();

            return(await _client.PostAsync(uri, request));
        }