예제 #1
0
        /// <summary>
        /// This is the second endpoint required to execute a withdrawal.
        /// After using the Create Withdrawal endpoint, you will receive a response which requires additional signing.
        /// </summary>
        /// <param name="withdrawal"></param>
        /// <param name="signature"></param>
        /// <returns></returns>
        public async Task <WithdrawlResponse> ExecuteWithdraw(ExecuteWithdrawl withdrawal, string signature)
        {
            var apiParams = new JObject
            {
                ["id"]        = withdrawal.Id,
                ["timestamp"] = withdrawal.Timestamp,
                ["signature"] = signature
            };

            var httpContent = new StringContent(apiParams.ToString(), Encoding.UTF8, "application/json");
            var result      = await ExecuteCall(executeWithdrawl.Replace(":id", withdrawal.Id.ToString()), httpContent);

            return(WithdrawlResponse.FromJson(result));
        }
예제 #2
0
        /// <summary>
        /// Executes withdrawl transaction
        /// </summary>
        /// <param name="custId">Customer Id</param>
        /// <param name="accountType">Account Type</param>
        /// <param name="withdrawlamount">Withdrawl Amount</param>
        /// <returns>balance, errors</returns>
        public async Task <WithdrawlResponse> WithdrawAmountAsync(string custId, string accountType, int withdrawlamount)
        {
            //Initialize response
            var responseData = new WithdrawlResponse();


            //Prepare Request
            _request.Method     = HttpMethod.Put;
            _request.RequestUri = new Uri(string.Format("{0}/api/customer/{1}/{2}/{3}", _baseApiUrl, custId, accountType, withdrawlamount));

            try
            {
                //Send request to API
                HttpResponseMessage response = await _httpClient.SendAsync(_request);

                //Process response
                String responseString = await response.Content.ReadAsStringAsync();

                //Case - Success
                if (response.IsSuccessStatusCode)
                {
                    responseData.Success = true;
                    int balance;
                    if (int.TryParse(responseString, out balance))
                    {
                        responseData.Balance = balance;
                    }
                }
                //case failure
                else
                {
                    responseData.ErrorMessage = responseString;
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                throw;
            }

            return(responseData);
        }
예제 #3
0
        public static async Task WithdrawalDemo(SwitcheoRestService switcheoService, AccountSignerTransactionManager accountSigner)
        {
            // create withdrawal DTO
            var transactObject = await switcheoService.PrepareCreateWithdrawal("neo", "SWTH", "3");

            // turn into json
            var signableParams = JsonConvert.SerializeObject(transactObject);
            // serialize request params
            var serializedParams = SwitcheoHelper.PrepareParametersRequest(signableParams);
            // signs the serialized params
            var signature = accountSigner.SignMessage(serializedParams);

            // adds the 'address' and 'signature' fields to the json
            var apiParams = SwitcheoHelper.AddTransactFields(signableParams, signature,
                                                             accountSigner.AddressScriptHash.ToString().Remove(0, 2));

            // sends the 'create withdrawal' request
            var response = await switcheoService.CreateWithdrawl(apiParams);

            Debug.WriteLine(JsonConvert.SerializeObject(response));

            // execute withdrawal
            JObject createWithdrawalResponse = JObject.Parse(response);

            createWithdrawalResponse.Remove("transaction"); // not in docs

            var executeWithdrawalDto = new ExecuteWithdrawl
            {
                Id        = new Guid(createWithdrawalResponse["id"].ToString()),
                Timestamp = await switcheoService.GetTimeStampAsync()
            };

            // serialize request params
            var serializedResponseParams = SwitcheoHelper.PrepareParametersRequest(JsonConvert.SerializeObject(executeWithdrawalDto));
            var responseSignature        = accountSigner.SignMessage(serializedResponseParams);

            WithdrawlResponse withdrawlResponse = await switcheoService.ExecuteWithdraw(executeWithdrawalDto, responseSignature);

            Debug.WriteLine(JsonConvert.SerializeObject(withdrawlResponse));
        }