public async Task <HubtelPosProxyResponse <MerchantMomoResponse> > ChargeMomoAsync(PaymentRequest paymentRequest, string accountId) { string merchantAccountNumber = await FindAccountNumberAsync(accountId).ConfigureAwait(false); var url = $"{_merchantAccountConfiguration.PublicBaseUrl}/merchants/{merchantAccountNumber}/receive/mobilemoney"; var authToken = HubtelBasicAuthHelper.GenerateToken(_merchantAccountConfiguration.ApiKey, accountId); var paymentType = _paymentTypeConfiguration.PaymentTypes.Find(x => x.Type.ToLower().Equals(paymentRequest.PaymentType.ToLower())); var momoPaymentRequest = MomoPaymentRequest.ToMomoPaymentRequest(paymentRequest, $"{_merchantAccountConfiguration.CallbackBaseUrl}/{paymentType.PrimaryCallbackUrl}", $"{_merchantAccountConfiguration.CallbackBaseUrl}/{paymentType.SecondaryCallbackUrl}"); using (var response = await _merchantAccountHttpClient.PostAsync(url, momoPaymentRequest, _merchantAccountConfiguration.Scheme, authToken)) { var respData = await response.Content.ReadAsStringAsync(); if (response.IsSuccessStatusCode) { var result = JsonConvert.DeserializeObject <MerchantMomoResponse>(respData); _logger.LogDebug(respData); return(Responses.SuccessResponse(StatusMessage.Created, result, ResponseCodes.SUCCESS)); } var error = GetMerchantAccountErrorResponse(respData, response.ReasonPhrase); _logger.LogError(response.ReasonPhrase); _logger.LogError(respData); return(Responses.ErrorResponse(error.ToErrors(), new MerchantMomoResponse(), error.Message, ResponseCodes.EXTERNAL_ERROR)); } }
public async Task <MomoFeeResponse> GetMomoFeesAsync(decimal amount, string momoChannel, bool chargeCustomer, string accountId) { string merchantAccountNumber = await FindAccountNumberAsync(accountId).ConfigureAwait(false); var url = $"{_merchantAccountConfiguration.PublicBaseUrl}/merchants/{merchantAccountNumber}/charges/mobile/receive"; var authToken = HubtelBasicAuthHelper.GenerateToken(_merchantAccountConfiguration.ApiKey, accountId); var momoFeeRequest = new MomoFeeRequest { Amount = amount, Channel = momoChannel, FeesOnCustomer = chargeCustomer }; using (var response = await _merchantAccountHttpClient.PostAsync(url, momoFeeRequest, _merchantAccountConfiguration.Scheme, authToken)) { var respData = await response.Content.ReadAsStringAsync(); if (response.IsSuccessStatusCode) { var result = JsonConvert.DeserializeObject <MomoFeeResponse>(respData); _logger.LogDebug(respData); return(result); } var error = GetMerchantAccountErrorResponse(respData, response.ReasonPhrase); _logger.LogError(response.ReasonPhrase); } return(new MomoFeeResponse()); }
public async Task <HubtelPosProxyResponse <MerchantTransactionCheckResponse> > CheckTransactionStatusAsync(PaymentRequest paymentRequest, string accountId) { string merchantAccountNumber = await FindAccountNumberAsync(accountId).ConfigureAwait(false); var url = $"{_merchantAccountConfiguration.PublicBaseUrl}/merchants/{merchantAccountNumber}/transactions/status?" + $"hubtelTransactionId={paymentRequest.TransactionId}"; var authToken = HubtelBasicAuthHelper.GenerateToken(_merchantAccountConfiguration.ApiKey, accountId); using (var response = await _merchantAccountHttpClient.GetAsync(url, _merchantAccountConfiguration.Scheme, authToken)) { var respData = await response.Content.ReadAsStringAsync(); if (response.IsSuccessStatusCode) { var result = JsonConvert.DeserializeObject <MerchantTransactionCheckResponse>(respData); _logger.LogDebug(respData); return(Responses.SuccessResponse(StatusMessage.Found, result, ResponseCodes.SUCCESS)); } var error = GetMerchantAccountErrorResponse(respData, response.ReasonPhrase); _logger.LogError(response.ReasonPhrase); _logger.LogError(respData); return(Responses.ErrorResponse(error.ToErrors(), new MerchantTransactionCheckResponse(), error.Message, ResponseCodes.EXTERNAL_ERROR)); } }
public async Task <HubtelPosProxyResponse <OrderResponse> > RecordOrderAsync(OrderRequest orderRequest, string accountId) { var url = $"{_unifiedSalesConfiguration.BaseUrl}/orders"; var authToken = HubtelBasicAuthHelper.GenerateToken(_unifiedSalesConfiguration.ApiKey, accountId); using (var response = await _unifiedSalesHttpClient.PostAsync(url, orderRequest, _unifiedSalesConfiguration.Scheme, authToken)) { var respData = await response.Content.ReadAsStringAsync(); if (response.IsSuccessStatusCode) { var result = JsonConvert.DeserializeObject <OrderResponseWrapper>(respData); _logger.LogDebug(respData); return(Responses.SuccessResponse(StatusMessage.Found, result.Data, ResponseCodes.SUCCESS)); } var error = JsonConvert.DeserializeObject <UnifiedSalesErrorResponse>(respData, new JsonSerializerSettings { Error = HandleDeserializationError }); if (error != null && error.Code == 4000) { var validationError = JsonConvert.DeserializeObject <UnifiedSalesValidationErrorResponse>(respData, new JsonSerializerSettings { Error = HandleDeserializationError }); return(Responses.ErrorResponse(validationError.ToErrors(), new OrderResponse(), error.Message, ResponseCodes.EXTERNAL_ERROR)); } _logger.LogError(response.ReasonPhrase); _logger.LogError(respData); return(Responses.ErrorResponse(error.ToErrors(), new OrderResponse(), error.Message, ResponseCodes.EXTERNAL_ERROR)); } }
private async Task <MerchantAccountNumberResponse> SearchAsync(string accountId) { var url = $"{_merchantAccountConfiguration.PrivateBaseUrl}/merchants/search?hubtelAccountId={accountId}"; var authToken = HubtelBasicAuthHelper.GenerateToken(_merchantAccountConfiguration.ApiKey, accountId); using (var response = await _merchantAccountHttpClient.GetAsync(url, _merchantAccountConfiguration.Scheme, authToken)) { var respData = await response.Content.ReadAsStringAsync(); if (response.IsSuccessStatusCode) { var result = JsonConvert.DeserializeObject <MerchantAccountNumberResponse>(respData); _logger.LogDebug(respData); return(result); } _logger.LogError(response.ReasonPhrase); } return(new MerchantAccountNumberResponse()); }