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
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
Added support for options on the Pay Invoice API
remi-stripe committed Aug 23, 2018

Verified

This commit was signed with the committer’s verified signature.
bdach Bartłomiej Dach
commit 07e00c695d777485ba960c4d921e2501454d8288
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
@@ -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)));
}

@@ -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));
}
11 changes: 9 additions & 2 deletions src/StripeTests/Services/Invoices/StripeInvoiceServiceTest.cs
Original file line number Diff line number Diff line change
@@ -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,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);
}