Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added support for options on the Pay Invoice API #1257

Merged
merged 1 commit into from
Aug 23, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions src/Stripe.net/Services/Invoices/StripeInvoicePayOptions.cs
Original file line number Diff line number Diff line change
@@ -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; }
}
}
8 changes: 4 additions & 4 deletions src/Stripe.net/Services/Invoices/StripeInvoiceService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<StripeInvoice>.MapFromJson(
Requestor.PostString(
this.ApplyAllParameters(null, $"{Urls.Invoices}/{invoiceId}/pay", false),
this.ApplyAllParameters(payOptions, $"{Urls.Invoices}/{invoiceId}/pay", false),
this.SetupRequestOptions(requestOptions)));
}

Expand Down Expand Up @@ -122,11 +122,11 @@ await Requestor.PostStringAsync(
cancellationToken).ConfigureAwait(false));
}

public virtual async Task<StripeInvoice> PayAsync(string invoiceId, StripeRequestOptions requestOptions = null, CancellationToken cancellationToken = default(CancellationToken))
public virtual async Task<StripeInvoice> PayAsync(string invoiceId, StripeInvoicePayOptions payOptions, StripeRequestOptions requestOptions = null, CancellationToken cancellationToken = default(CancellationToken))
{
return Mapper<StripeInvoice>.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));
}
Expand Down
11 changes: 9 additions & 2 deletions src/StripeTests/Services/Invoices/StripeInvoiceServiceTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -35,6 +36,12 @@ public StripeInvoiceServiceTest()
},
};

this.payOptions = new StripeInvoicePayOptions()
{
Forgive = true,
SourceId = "src_123",
};

this.listOptions = new StripeInvoiceListOptions()
{
Limit = 1,
Expand Down Expand Up @@ -146,15 +153,15 @@ 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);
}

[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);
}
Expand Down