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