Exemple #1
0
        /// <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);
            }
        }
Exemple #3
0
 public Task<ApiResponse<Response>> QueryTransactionStatus(string transactionId, IdentifierTypeEnum identifierType, string phone = null, string remarks = "TransactionStatus") =>
     api.Account.QueryTransactionStatus(transactionId, identifierType, phone, remarks);
Exemple #4
0
 public Task<ApiResponse<Response>> QueryBalance(IdentifierTypeEnum identifierType = IdentifierTypeEnum.Organization, string remarks ="Query Account Balance") =>
     api.Account.QueryBalance(identifierType, remarks);
Exemple #5
0
        /// <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);
        }