From 07e00c695d777485ba960c4d921e2501454d8288 Mon Sep 17 00:00:00 2001 From: Remi Jannel Date: Thu, 23 Aug 2018 11:22:40 -0400 Subject: [PATCH] Added support for options on the Pay Invoice API --- .../Services/Invoices/StripeInvoicePayOptions.cs | 16 ++++++++++++++++ .../Services/Invoices/StripeInvoiceService.cs | 8 ++++---- .../Invoices/StripeInvoiceServiceTest.cs | 11 +++++++++-- 3 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 src/Stripe.net/Services/Invoices/StripeInvoicePayOptions.cs diff --git a/src/Stripe.net/Services/Invoices/StripeInvoicePayOptions.cs b/src/Stripe.net/Services/Invoices/StripeInvoicePayOptions.cs new file mode 100644 index 0000000000..0b30607612 --- /dev/null +++ b/src/Stripe.net/Services/Invoices/StripeInvoicePayOptions.cs @@ -0,0 +1,16 @@ +namespace Stripe +{ + using System; + using System.Collections.Generic; + using Newtonsoft.Json; + using Stripe.Infrastructure; + + public class StripeInvoicePayOptions : StripeBaseOptions + { + [JsonProperty("forgive")] + public bool? Forgive { get; set; } + + [JsonProperty("source")] + public string SourceId { get; set; } + } +} diff --git a/src/Stripe.net/Services/Invoices/StripeInvoiceService.cs b/src/Stripe.net/Services/Invoices/StripeInvoiceService.cs index 23d2fab711..9a76bef0c4 100644 --- a/src/Stripe.net/Services/Invoices/StripeInvoiceService.cs +++ b/src/Stripe.net/Services/Invoices/StripeInvoiceService.cs @@ -49,11 +49,11 @@ public virtual StripeInvoice Update(string invoiceId, StripeInvoiceUpdateOptions this.SetupRequestOptions(requestOptions))); } - public virtual StripeInvoice Pay(string invoiceId, StripeRequestOptions requestOptions = null) + public virtual StripeInvoice Pay(string invoiceId, StripeInvoicePayOptions payOptions, StripeRequestOptions requestOptions = null) { return Mapper.MapFromJson( Requestor.PostString( - this.ApplyAllParameters(null, $"{Urls.Invoices}/{invoiceId}/pay", false), + this.ApplyAllParameters(payOptions, $"{Urls.Invoices}/{invoiceId}/pay", false), this.SetupRequestOptions(requestOptions))); } @@ -122,11 +122,11 @@ await Requestor.PostStringAsync( cancellationToken).ConfigureAwait(false)); } - public virtual async Task PayAsync(string invoiceId, StripeRequestOptions requestOptions = null, CancellationToken cancellationToken = default(CancellationToken)) + public virtual async Task PayAsync(string invoiceId, StripeInvoicePayOptions payOptions, StripeRequestOptions requestOptions = null, CancellationToken cancellationToken = default(CancellationToken)) { return Mapper.MapFromJson( await Requestor.PostStringAsync( - this.ApplyAllParameters(null, $"{Urls.Invoices}/{invoiceId}/pay", false), + this.ApplyAllParameters(payOptions, $"{Urls.Invoices}/{invoiceId}/pay", false), this.SetupRequestOptions(requestOptions), cancellationToken).ConfigureAwait(false)); } diff --git a/src/StripeTests/Services/Invoices/StripeInvoiceServiceTest.cs b/src/StripeTests/Services/Invoices/StripeInvoiceServiceTest.cs index 4328a23e1d..7a5dd8b63b 100644 --- a/src/StripeTests/Services/Invoices/StripeInvoiceServiceTest.cs +++ b/src/StripeTests/Services/Invoices/StripeInvoiceServiceTest.cs @@ -14,6 +14,7 @@ public class StripeInvoiceServiceTest : BaseStripeTest private StripeInvoiceService service; private StripeInvoiceCreateOptions createOptions; private StripeInvoiceUpdateOptions updateOptions; + private StripeInvoicePayOptions payOptions; private StripeInvoiceListOptions listOptions; private StripeInvoiceListLineItemsOptions listLineItemsOptions; private StripeUpcomingInvoiceOptions upcomingOptions; @@ -35,6 +36,12 @@ public StripeInvoiceServiceTest() }, }; + this.payOptions = new StripeInvoicePayOptions() + { + Forgive = true, + SourceId = "src_123", + }; + this.listOptions = new StripeInvoiceListOptions() { Limit = 1, @@ -146,7 +153,7 @@ public async Task ListUpcomingLineItemsAsync() [Fact] public void Pay() { - var invoice = this.service.Pay(InvoiceId); + var invoice = this.service.Pay(InvoiceId, this.payOptions); Assert.NotNull(invoice); Assert.Equal("invoice", invoice.Object); } @@ -154,7 +161,7 @@ public void Pay() [Fact] public async Task PayAsync() { - var invoice = await this.service.PayAsync(InvoiceId); + var invoice = await this.service.PayAsync(InvoiceId, this.payOptions); Assert.NotNull(invoice); Assert.Equal("invoice", invoice.Object); }