/// <summary> /// Atualizar conta bancária - update bank account /// </summary> /// <param name="body"></param> /// <param name="accesstoken">accesstoken da conta que receberá a conta bancária</param> /// <param name="bankaccount_id">Identificador da conta bancária (BKA-XXXXXXXXX).</param> /// <returns></returns> public async Task <BankAccountResponse> Update(BankAccountRequest body, string accesstoken, string bankaccount_id) { HttpClient httpClient = Http_Client.HttpClient; httpClient.DefaultRequestHeaders.Remove("Authorization"); httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + accesstoken); StringContent stringContent = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); HttpResponseMessage response = await httpClient.PutAsync($"v2/bankaccounts/{bankaccount_id}", stringContent); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <BankAccountResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Remover Preferência de Notificação - Remove Notification Preference /// </summary> /// <param name="notification_id">Código identificador da preferência (NPR-98G940NT23JO)</param> /// <returns></returns> public async Task <HttpStatusCode> Remove(string notification_id) { HttpResponseMessage response = await ClientInstance.DeleteAsync($"v2/preferences/notifications/{notification_id}"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } return(response.StatusCode); }
/// <summary> /// Simular pagamentos - Simulate Payments /// </summary> /// <param name="payment_id">Código identificador do pagamento que deseja autorizar. Exemplo: PAY-0UBH5IAJ8KHX</param> /// <param name="valor">Valor a ser autorizado no pagamento. O formato deve incluir centavos e não deve incluir vírgula. Exemplo: Para autorizar pagamento no valor de R$265 você deve setar o valor 26500</param> /// <returns></returns> public async Task <HttpStatusCode> Simulate(string payment_id, int valor) { HttpResponseMessage response = await Http_Client.HttpClient.GetAsync($"simulador/authorize?payment_id={payment_id}&amount={valor}"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } return(response.StatusCode); }
/// <summary> /// Obter Arquivo Financeiro - Get Financial File /// </summary> /// <param name="eventsCreatedAt">Data referente à liquidação dos lançamentos financeiros. Formato: YYYY-MM-DD</param> /// <returns></returns> public async Task <string> GetFinancialFile(string eventsCreatedAt) { HttpResponseMessage response = await Http_Client.HttpClient.GetAsync($"v2/reconciliations/financials?eventsCreatedAt={eventsCreatedAt}"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } return(await response.Content.ReadAsStringAsync()); }
/// <summary> /// Alterar método de pagamento - Change Payment Method /// </summary> /// <param name="body"></param> /// <param name="code"> Código do Assinante </param> /// <returns></returns> public async Task <HttpStatusCode> ChangePaymentMethod(SubscriptionRequest body, string code) { StringContent stringContent = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); HttpResponseMessage response = await Http_Client.HttpClient.PutAsync($"assinaturas/v1/subscriptions/{code}/change_payment_method", stringContent); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } return(response.StatusCode); }
/// <summary> /// Criar Preferência de Notificação - Create Notification Preference /// </summary> /// <param name="body"></param> /// <returns></returns> public async Task <HttpStatusCode> CreateNotificationPreference(NotificationRequest body) { StringContent stringContent = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); HttpResponseMessage response = await Http_Client.HttpClient.PostAsync("assinaturas/v1/users/preferences", stringContent); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } return(response.StatusCode); }
/// <summary> /// Ativar Plano - Enable Plan /// </summary> /// <param name="code"> Código do plano </param> /// <returns></returns> public async Task <HttpStatusCode> EnablePlan(string code) { StringContent stringContent = new StringContent(JsonConvert.SerializeObject(null), Encoding.UTF8, "application/json"); HttpResponseMessage response = await Http_Client.HttpClient.PutAsync($"assinaturas/v1/plans/{code}/activate", stringContent); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } return(response.StatusCode); }
/// <summary> /// Retentativa pagamento de fatura - Retentive invoice payment /// </summary> /// <param name="id">ID da fatura</param> /// <returns></returns> public async Task <HttpStatusCode> RetentiveInvoicePayment(string id) { StringContent stringContent = new StringContent(null, Encoding.UTF8, "application/json"); HttpResponseMessage response = await Http_Client.HttpClient.PostAsync($"assinaturas/v1/invoices/{id}/retry", stringContent); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } return(response.StatusCode); }
/// <summary> /// Deletar conta bancária - delete bank account /// </summary> /// <param name="accesstoken">accesstoken da conta que receberá a conta bancária</param> /// <param name="bankaccount_id">Identificador da conta bancária(BKA-XXXXXXXXXX)</param> /// <returns></returns> public async Task <HttpStatusCode> Delete(string accesstoken, string bankaccount_id) { HttpClient httpClient = Http_Client.HttpClient; httpClient.DefaultRequestHeaders.Remove("Authorization"); httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + accesstoken); HttpResponseMessage response = await httpClient.DeleteAsync($"v2/bankaccounts/{bankaccount_id}"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } return(response.StatusCode); }
/// <summary> /// Obter os erros como texto - Get errors as text /// </summary> /// <param name="we">WirecardException</param> /// <returns></returns> public static string GetExceptionText(this WirecardException we) { var sb = new StringBuilder(); if (we != null) { if (we.wirecardError == null || !we.wirecardError.errors.Any()) { return(sb.ToString()); } foreach (var error in we.wirecardError.errors) { sb.AppendLine($"{error.description} ({error.code})"); } } return(sb.ToString()); }
/// <summary> /// Capturar Multi Pagamento Pré-Autorizado - Capture Multi-Payment Pre-authorized /// </summary> /// <param name="multipayment_id">Id identificador do multipagamento.</param> /// <returns></returns> public async Task<MultiPaymentResponse> CaptureAuthorized(string multipayment_id) { HttpResponseMessage response = await ClientInstance.PostAsync($"v2/multipayments/{multipayment_id}/capture", null); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return JsonConvert.DeserializeObject<MultiPaymentResponse>(await response.Content.ReadAsStringAsync()); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Associar Cupom para Nova Assinatura - Associate Coupon For New Signature /// </summary> /// <param name="body"></param> /// <param name="true_or_false">Caso queira criar um novo Assinante o valor desse ser "true", caso contrário "false".</param> /// <returns></returns> public async Task <CouponResponse> AssociateCouponForNewSignature(CouponRequest body, string true_or_false) { string json; try { json = JsonConvert.SerializeObject(body); JObject jObject = JObject.Parse(json); if (jObject["customer"]["address"] != null) { if (jObject["customer"]["address"]["streetNumber"] != null) { jObject["customer"]["address"]["streetNumber"].Rename("number"); } if (jObject["customer"]["address"]["zipCode"] != null) { jObject["customer"]["address"]["zipCode"].Rename("zipcode"); } } json = jObject.ToString(); } catch (System.Exception ex) { throw ex; } StringContent stringContent = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); HttpResponseMessage response = await Http_Client.HttpClient.PostAsync($"assinaturas/v1/subscriptions?new_customer={true_or_false}", stringContent); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <CouponResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Criar Multi Pagamento - Create multi payment /// </summary> /// <param name="body"></param> /// <param name="multiorder_id">Código identificador do multipedido. Exemplo: MOR-XXXXXXXX</param> /// <returns></returns> public async Task<MultiPaymentResponse> Create(MultiPaymentRequest body, string multiorder_id) { StringContent stringContent = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); HttpResponseMessage response = await ClientInstance.PostAsync($"v2/multiorders/{multiorder_id}/multipayments", stringContent); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return JsonConvert.DeserializeObject<MultiPaymentResponse>(await response.Content.ReadAsStringAsync()); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Listar Todas Transferências com filtro - List All Transfers with filter /// </summary> /// <returns></returns> public async Task <TransfersResponse> ListFilter(string filter) { HttpResponseMessage response = await Http_Client.HttpClient.GetAsync($"v2/transfers?{filter}"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <TransfersResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Listar Todas as Preferências de Notificação - List All Notification Preferences /// </summary> /// <returns></returns> public async Task <List <NotificationResponse> > List() { HttpResponseMessage response = await Http_Client.HttpClient.GetAsync("v2/preferences/notifications"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <List <NotificationResponse> >(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Listar Extrato Futuro - List Future Extract /// </summary> /// <param name="type">Tipo do extrato.</param> /// <param name="date">Data para visualizar os detalhes no formato YYYY-MM-DD.</param> /// <returns></returns> public async Task <ExtractResponse> DetailFuture(string type, string date) { HttpResponseMessage response = await Http_Client.HttpClient.GetAsync($"v2/futurestatements/details?type={type}&date={date}"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <ExtractResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Listar Extrato - List Extract /// </summary> /// <param name="begin">Data de início de exibição no formato YYYY-MM-DD.</param> /// <param name="end">Data de fim de exibição no formato YYYY-MM-DD.</param> /// <returns></returns> public async Task <ExtractResponse> List(string begin, string end) { HttpResponseMessage response = await Http_Client.HttpClient.GetAsync($"v2/statements?begin={begin}&end={end}"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <ExtractResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Listar Reembolsos do Pedido - List Order Reimbursements /// </summary> /// <param name="orders_id">Id do pedido em formato de hash. string(16).</param> /// <returns></returns> public async Task <List <RefundResponse> > ListOrders(string orders_id) { HttpResponseMessage response = await ClientInstance.GetAsync($"v2/orders/{orders_id}/refunds"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <List <RefundResponse> >(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Listar Faturas de Assinatura - List Signature Invoices /// </summary> /// <param name="code"> Código do Assinante </param> /// <returns></returns> public async Task <InvoicesResponse> ListSignatureInvoices(string code) { HttpResponseMessage response = await ClientInstance.GetAsync($"assinaturas/v1/subscriptions/{code}/invoices"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <InvoicesResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Consultar pagamento de assinatura - Consult subscription payment /// </summary> /// <param name="id"> Id do pagamento </param> /// <returns></returns> public async Task <PaymentsResponse> ConsultSubscriptionPayment(string id) { HttpResponseMessage response = await Http_Client.HttpClient.GetAsync($"assinaturas/v1/payments/{id}"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <PaymentsResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Liberação de Custódia - Release of Custody /// </summary> /// <param name="escrow_id">Código identificador da custódia. Exemplo: ECW-87E7UUF9N2EK</param> /// <returns></returns> public async Task <MultiPaymentResponse> ReleaseCustody(string escrow_id) { HttpResponseMessage response = await Http_Client.HttpClient.PostAsync($"v2/escrows/{escrow_id}/release", null); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <MultiPaymentResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Consulta a conta clássica - Consult Classic Account /// </summary> /// <param name="account_id">ID da Conta Wirecard. Exemplo: MPA-3C5358FF2296</param> /// <returns></returns> public async Task <ClassAccountResponse> Consult(string account_id) { HttpResponseMessage response = await ClientInstance.GetAsync($"v2/accounts/{account_id}"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <ClassAccountResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Cancelar Pagamento Pré-autorizado - Cancelar Pagamento Pré-autorizado /// </summary> /// <param name="payment_id">Código identificador do pagamento pré-autorizado a ser cancelado. Exemplo: Exemplo: PAY-U1G2WVBEP19V</param> /// <returns></returns> public async Task <PaymentResponse> CancelAuthorized(string payment_id) { HttpResponseMessage response = await Http_Client.HttpClient.PostAsync($"v2/payments/{payment_id}/void", null); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <PaymentResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw new ArgumentException("Error message: " + ex.Message); } }
/// <summary> /// Obter Arquivo de Vendas - Get Sales File /// </summary> /// <param name="date">Data no formato YYYYMMDD</param> /// <returns></returns> public async Task <SalesFileResponse> GetSalesFile(string date) { HttpResponseMessage response = await Http_Client.HttpClient.GetAsync($"v2/reconciliations/sales/{date}"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <SalesFileResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Obtem a chave pública - Get public key /// </summary> /// <returns></returns> public async Task <PublicKeyAccountWirecardResponse> GetPublickey() { HttpResponseMessage response = await ClientInstance.GetAsync("v2/keys"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <PublicKeyAccountWirecardResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw new ArgumentException("Error message: " + ex.Message); } }
/// <summary> /// Consultar Multi pedido - Consult Multi order /// </summary> /// <param name="multiorder_id">Id identificador do multipagamento. Exemplo: MOR-9241K3EFW5DV</param> /// <returns></returns> public async Task <MultiOrderResponse> Consult(string multiorder_id) { HttpResponseMessage response = await Http_Client.HttpClient.GetAsync($"v2/multiorders/{multiorder_id}"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <MultiOrderResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Listar Todos os Webhooks Enviados - List All Sent Webhooks /// </summary> /// <returns></returns> public async Task <WebhooksResponse> ListWebhooks() { HttpResponseMessage response = await ClientInstance.GetAsync("v2/webhooks"); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <WebhooksResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Criar novo boleto de fatura - Create New Invoice Boleto /// </summary> /// <param name="body"></param> /// <param name="id">ID da fatura</param> /// <returns></returns> public async Task <RetentativeResponse> CreateNewInvoiceBoleto(RetentativeRequest body, string id) { StringContent stringContent = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); HttpResponseMessage response = await Http_Client.HttpClient.PostAsync($"assinaturas/v1/invoices/{id}/boletos", stringContent); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <RetentativeResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Cria a conta clássica - Create the classic account /// </summary> /// <param name="body"></param> /// <returns></returns> public async Task <ClassAccountResponse> Create(ClassicAccountRequest body) { StringContent stringContent = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); HttpResponseMessage response = await Http_Client.HttpClient.PostAsync("v2/accounts", stringContent); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <ClassAccountResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// Reembolsar Pedido via Cartão de Crédito - Refund Request by Credit Card /// </summary> /// <param name="body"></param> /// <param name="order_id">Código identificador do pedido a ser reembolsado. Exemplo: ORD-O5DLMAJZPTHV</param> /// <returns></returns> public async Task <RefundResponse> RefundRequestCreditCard(RefundRequest body, string order_id) { StringContent stringContent = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); HttpResponseMessage response = await Http_Client.HttpClient.PostAsync($"v2/orders/{order_id}/refunds", stringContent); if (!response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); WirecardException.WirecardError wirecardException = WirecardException.DeserializeObject(content); throw new WirecardException(wirecardException, "HTTP Response Not Success", content, (int)response.StatusCode); } try { return(JsonConvert.DeserializeObject <RefundResponse>(await response.Content.ReadAsStringAsync())); } catch (System.Exception ex) { throw ex; } }