/// <summary> /// Enquires the balance for the specified Short Code /// </summary> /// <param name="identifierType">Type of orgnanization receiving the transaction</param> /// <param name="remarks">Comments that are sent along with the transaction.</param> public async Task <ApiResponse <Response> > QueryBalance(IdentifierTypeEnum identifierType = IdentifierTypeEnum.Organization, string remarks = "Query Account Balance") { if (identifierType == IdentifierTypeEnum.MSISDN) { throw new Exception("SDK does not support MSISDN"); } var requestId = ShortId.Generate(32); var response = await PostHttp <Response>("/accountbalance/v1/query", new Dictionary <string, string> { { "Initiator", Options.Initiator }, { "SecurityCredential", Options.SecurityCredential }, { "CommandID", "AccountBalance" }, { "PartyA", Options.ShortCode }, { "IdentifierType", identifierType.ToString("D") }, { "Remarks", remarks }, { "QueueTimeOutURL", $"{Options.GetQueueTimeoutURL(requestId)}/balance" }, { "ResultURL", $"{Options.GetResultRL(requestId)}/balance" }, }); var res = response.ToApiResponse(); if (res.Success) { res.Data.RequestId = requestId; } return(res); }
/// <summary> /// Converts a IdentifierTypeEnum value to a corresponding string value /// </summary> /// <param name="enumValue">The IdentifierTypeEnum value to convert</param> /// <returns>The representative string value</returns> public static string ToValue(IdentifierTypeEnum enumValue) { switch (enumValue) { //only valid enum elements can be used //this is necessary to avoid errors case IdentifierTypeEnum.SORT_CODE: case IdentifierTypeEnum.IBAN_BIC: case IdentifierTypeEnum.ABA_ACH: return(StringValues[(int)enumValue]); //an invalid enum value was requested default: return(null); } }
public Task<ApiResponse<Response>> QueryTransactionStatus(string transactionId, IdentifierTypeEnum identifierType, string phone = null, string remarks = "TransactionStatus") => api.Account.QueryTransactionStatus(transactionId, identifierType, phone, remarks);
public Task<ApiResponse<Response>> QueryBalance(IdentifierTypeEnum identifierType = IdentifierTypeEnum.Organization, string remarks ="Query Account Balance") => api.Account.QueryBalance(identifierType, remarks);
/// <summary> /// Check the status of a transaction /// </summary> /// <param name="transactionId">The trasaction Identifier</param> /// <param name="identifierType">Type of orgnanization receiving the transaction</param> /// <param name="phone">Used when identifierType is MSISDN</param> /// <param name="remarks">Comments that are sent along with the transaction.</param> /// <param name="occasion">Occasion</param> public async Task <ApiResponse <Response> > QueryTransactionStatus(string transactionId, IdentifierTypeEnum identifierType, string phone = null, string remarks = "TransactionStatus", string occasion = "TransactionStaus") { if (IdentifierTypeEnum.MSISDN == identifierType && string.IsNullOrEmpty(phone)) { throw new ArgumentNullException("Phone cannot be null", nameof(phone)); } var requestId = ShortId.Generate(32); var response = await PostHttp <Response>("/transactionstatus/v1/query", new Dictionary <string, string> { { "Initiator", Options.Initiator }, { "SecurityCredential", Options.SecurityCredential }, { "CommandID", "TransactionStatusQuery" }, { "TransactionID", transactionId }, { "PartyA", identifierType == IdentifierTypeEnum.MSISDN ? phone : Options.ShortCode }, { "IdentifierType", identifierType.ToString("D") }, { "QueueTimeOutURL", $"{ Options.GetQueueTimeoutURL(requestId)}/status" }, { "ResultURL", $"{ Options.GetResultRL(requestId)}/status" }, { "Remarks", remarks }, { "Occasion", occasion } }); var res = response.ToApiResponse(); if (res.Success) { res.Data.RequestId = requestId; } return(res); }