/// <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)); }